본문 바로가기

DATA SCIENCE/Review

Monthly Book Review 02 : 이토록 쉬운 머신러닝&딥러닝 입문 with 사이킷런+파이토치

 

출처 : 알라딘(https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=278463154)

 

00. 리뷰 요약

- 이 책은 굉장히 친절하다, 적어도 머신러닝&딥러닝과 관련해 유명하다 싶은 책을 지난 1년의 시간 동안 20권은 샀고, 그 중 5권 이상을 5번 이상 정독하며 코드를 따라치는 등의 학습을 했음에도 불구하고도 부족해 블로그 등을 통해 익혀야 했던 내용들까지도 포함하여 적어도 딥러닝에 대해 어느정도 경험이 있는(함수형으로 딥러닝 모델을 작성해 프로젝트를 진행해봤거나, 이를 기반으로 간단한 공모전에 제출해보며 고민해본 사람) 사람이라면 적극 추천할만한 책.

- 다만 이 책의 난이도는 생각보다 일관적이진 않다. 다소 학술적 목적에서 접근한 부분이 이 책의 가장 큰 장점임과 동시에 딥러닝을 처음 접하는 사람이라면 이 책에 담겨있는 전문가용*으로 짜여진 코드 방식이 다소 어렵게 느껴질 수 있다. 따라서 머신러닝까지는 파이썬을 다뤄본 적이 있는 사람이라면 누구나 쉽게 접근할 수 있는 반면, 딥러닝 부분에서는 다소 진입장벽이 존재한다.

  *여기서 초보자용 및 전문가용에 대한 정의는 구글 텐서플로우(https://www.tensorflow.org/tutorials)의 정의 및 설명에 근거한다. 초보자용은 함수형 API 기반으로 짜여진 코드를 의미하며, 전문가용은 각각의 함수를 사용자가 직접 정의하는 것을 의미한다. 통상적으로 처음 딥러닝을 접하는 사람들은 초보자용을 통해 접근함으로써 전체적인 구조와 기능을 익히고, 세부적인 디테일을 학습하는 과정에서 전문가용으로 넘어가는 것을 추천한다.

 

01. 추천하는 대상

- 머신러닝, 딥러닝 입문자, 입문한지 1년 이하의 사람, 혹은 입문서를 작성하고자 하는 사람

- 우선 이 책은 위에서 설명했듯, 딥러닝을 설명하는 Ch.03 파이토치를 이용한 딥러닝과 그 외의 Ch.01, 02, 04가 타겟으로 하는 대상이 다르다.

- 만약  파이썬을 통해 머신러닝, 딥러닝을 접한 적이 없는 사람이라면 Ch.01, 02, 04에 대해 강력히 추천하고, Ch.03의 내용을 개념적으로만 이해하기 위한 목적으로 적절하다.

- 만약 이미 머신러닝, 딥러닝에 대해 비기너용 코드를 구현해본 적 있지만, 관련 학과를 나오지 않아 이론적인 밑바탕 등이 부족한 사람이라면 이 책을 강력히 추천하며, 비기너용 코드에서 전문가용 코드로 넘어가려는 사람에게 Ch.03의 자세한 주석은 꽤나 감동적이다. 만약 아래의 질문에 답하기 어렵거나 명확하지 않다면 추천하는 대상이라 할 수 있다.*

 

 

  *로지스틱 함수 및 로지스틱 회귀에 대해 설명하고, 왜 결과가 이진분류로 나타나는지 설명하라

  ** SVM 분류 모델에서 하이퍼파라미터 중 하나인 C값에 따라 모델의 성능(정확도)과 일반화 성능은 어떻게 바뀌는가

  *** 나이브베이즈 모델에 alpha로 구현되어 있는 라플라스 스무딩(Laplace smoothing)에 대해 설명하고 어떤 목적을 위해 사용되는가

 

- 물론 자신이 초보자용 코드도 작성해본 적 없는 머신러닝, 딥러닝 입문자이고, Ch.03이 다소 어려울 것이라는 말에 이 책에 대해 부정적으로 생각할 필요 없다. 다시 한 번 말하지만 이 책은 내가 지난 1년간 읽은 그 어떤 기본 학습서보다 이론적으로 충실하고, 주석이 친절하며, 각 모델의 설명, 관계 해석, 발전 과정에 대해 잘 정리되어 있다. 이 또한 다음과 같은 문제/상황에 대해 대처하기 어렵다면 추천할만한 대상이 될 것이다.*

 

  * 역전파 과정을 손코딩해보라

  ** 합성곱 신경망에서 stride, padding 등에 대해 설명하고, 이 값에 따른 특성맵의 크기가 어떻게 바뀌는지 설명하라

  *** 임베딩(embedding)에 대해 설명하고, 그 대표적 기법에 대해 설명하라

  **** 비기너용이 아닌 전문가용으로 작성한 코드를 재구성해보라

 

02. 책의 구성

- 이 책의 구성은 다음과 같이 크게 네 개의 챕터로 이뤄져있다.

- 만약 머신러닝/딥러닝에 대해 접해본 적이 없는 사람이라면 Ch.03을 마지막에 읽는 것을 추천하며, 이에 대해 어느정도 익숙한 사람이라면 Ch.04가 큰 의미가 없을 가능성이 높다.

- 다만 본래 자신의 딥러닝 언어가 Tensorflow, Keras 기반이어서 Pytorch에 대한 학습을 하고 싶은 사람이라면 기존 자신의 코드와 비교해가며 Ch.03를 정독하는 것도 추천한다.

 

03. 책의 내용

- 이 책의 내용에서 가장 매력적이었던 부분은 저자가 석박사 과정에 있는 사람이어서 그런지 각각의 모델에 대해 이론적 내용, 다른 모델과의 관계 등에 대해 언급되어 있다는 부분이다. 이러한 부분은 해당 분야에 취직, 이직을 원하는 이들이 기술면접을 준비하는 과정에서도 훌륭한 교과서 역할을 해줄 것이다.

- 이 책의 내용에서 가장 인상적이었던 부분은 다른 입문 도서 대비 압도적인 양의 주석이었다. 아래와 같이 거의 모든 line마다 주석을 달았다고 했을 정도로 자세하며, 이에 대해 추가적인 설명으로 이해를 돕고자 한다. 만약 다른 챕터의 코드에 대해서 확인하고 싶다면 해당 저서의 코드가 올라가있는 깃허브(https://github.com/baek2sm/ml)를 참고해보는 것도 좋을 것이다.

- 이 외에도 이론적 설명(저작권 문제를 고려해 첨부하진 않는다)을 이해하기 쉽게 설명했고, 여타 책들에서 등장하는 하나의 개념을 설명하다 지나치게 깊게 들어가거나 이를 고려해서 필수적인 개념조차도 설명하지 않는 문제가 매우 적다. 감히 평하자면 이 분야 입문서가 기존에는 대부분 코드 기반의 어떻게든 똑같은 결과만 나오도록 유도하는 수준의 1세대 교과서였다면, 이 책은 거기에 필수적이면서도 기본적인 내용을 잘 담은 2세대 교과서라 해도 과언이 아니다. 이와 유사한 인상을 주었던 책들도 몇 권 있었으나 이 책과 같이 완전한 입문서라고 보기엔 어려워 추후 리뷰하는 시간을 통해 보여주고자 한다.

 

04. 아쉬운 점

- 아쉬운 점은 이 책이 시리즈로 나오지 않은 것에 가까울 것이다. 만약 내가 해당 책의 출판에 관여할 수 있는 입장이었다면, 기존에 나온 입문서 중 가장 잘 정리되어 있다고 생각한 책들 중 하나인 '밑바닥부터 시작하는 딥러닝(https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=256067157)' 시리즈처럼 2~3권의 시리즈로 구성했을 것 같다. 첫 번째는 현재 담은 내용에 딥러닝 코드를 입문자용으로 바꾸고, 두 번째에는 전문가용 코드로 바꾸며 활성화 함수, 손실 함수들에 대해 제시하며 유용한 상황 등에 대해, 세 번째에는 실무적으로 혹은 공모전에 도전하는 목적의 코드를 통해 이루어졌다면 어땠을까하는 아쉬움이 있다.