밑바닥부터 시작하는 딥러닝

Taeksoon Jang
Mar 23, 2017 · 5 min read
http://bookthumb.phinf.naver.net/cover/114/923/11492334.jpg?udate=20170227

빅데이터의 부흥과 함께 머신러닝, 딥러닝이 핫한 기술로 떠오른 이후 약 1년 반동안 이 트렌드에 올라타기 위해 참 많은 시도를 했다. 공부를 하면서 내가 세운 기준은 아래와 같았다.

  1. 직접 사용할 수 있어야 한다.
  2. 기반이 된 수학적 원리를 이해해야 한다.
  3. 최신 트렌드를 놓치지 말아야 한다.

주변에 도움받을 사람도 없고, 문과 출신으로 수학 배경지식도 전무한 주제에 너무 빡빡한 기준을 세우는 바람에 1년 반 째 헤메고 있는 중이다.

그리고 아래와 같은 것들을 시도해 보았다.


데이터과학 입문

(http://book.naver.com/bookdb/book_detail.nhn?bid=8317720)

빅 데이터의 열풍과 함께 관련된 주제를 잘 정리해둔 책이다. Data Science의 범주에 포함되는 많은 것들(데이터 분석, 시각화, 베이즈이론, 머신러닝 등)을 다루고 있고, 실제 강의에 사용된 자료들을 엮어서 공부하기에도 좋다.

하지만 역시 방대한 주제들을 다루는 바람에 수학적 원리를 공부하기엔 다소 빈약하고, 딥러닝을 위시한 최근의 트렌드를 담지는 못하고있다.


Coursera Machine Learning by Andrew Ng

(https://www.coursera.org/learn/machine-learning)

머신러닝 입문의 고전이 된 강의로 간단한 선형 회귀부터 각종 머신러닝, 추천, 딥러닝 등 다양한 분야를 다룬다. 강의가 굉장히 깔끔하고 수학적 원리도 놓치지 않으며 코딩 과제는 자동으로 채점도 해줘서 혼자 공부하기엔 정말 좋다.

그런데 의외로 과제가 내용을 완벽하게 이해하지 않아도 풀 수 있게 되어있다. 전체 틀은 템플릿으로 제공되고 핵심 로직만 코딩하면 되는 식이라서 과제는 만점을 받아서 실제로는 전혀 잘못된 이해를 하고 있는 경우도 있다. (그렇다, 내 얘기다.)


Udacity Deep Learning by Google

(https://www.udacity.com/course/deep-learning--ud730)

Tensorflolw를 만든 Googler가 직접 강의하는 무료 코스라 상당히 구미가 당겼다.

한 개의 동영상이 수분 내의 짧은 길이라 지루하지 않고 중간중간 이해를 돕기 위한 세련된 시각자료, 문제풀이 과제등이 있다.

하지만 과제의 난이도가 그다지 높지 않고 설명 또한 훅훅 지나가는 감이 있어 결국 스스로 많은 시간을 투입하지 않으면 주제를 완전히 이해하기 어렵다. 결국 중간에서 포기하고 말았다.


알파고 논문 읽기

(https://gogameguru.com/i/2016/03/deepmind-mastering-go.pdf)

위의 과정을 거쳐오며 스스로 딥러닝에 대한 이해가 어느정도 생겼다고 착각하고 있었다. 그래서 때마침 엄청난 딥러닝 열풍을 몰고 온 알파고를 직접 이해해보자는 생각으로 논문 읽기에 도전했고, 처참하게 실패했다.

알파고 논문에 핵심적으로 등장하는 강화학습(Reinforcement Learning), CNN(Convolutional Neural Network), Monte-Carlo Tree Search등의 생소한 개념의 홍수 속에 좌절하였고, 내가 정말 아무것도 모르고 있구나 라는 생각을 하게 되었다.


1년 반의 시간동안 위의 것들을 해왔지만 그저 용어들에 익숙해졌을 뿐, 딥러닝에 대해 알고 있는 것은 아무것도 없었다.

그래서 정말 기본부터 다시 공부해보자는 생각을 했을 때 마주친게 이 책이었다. ‘밑바닥’이란 단어가 어찌나 내게 절절하게 다가왔는지. 그만큼 부푼 기대를 안고 책을 폈다.

1, 2장은 간단한 프로그래밍 지식, 신경망의 기본적 개념이라 쉽게 넘어간다.

3장부터 본격적인 신경망의 원리와 구현이 시작되는데 이 때 부터 참으로 놀라운 경험을 하게 됐다.

이 책은 원문이 그러한 것인지 아니면 역자가 그렇게 번역한 것인지는 몰라도 조곤조곤한 문체로 굉장히 친절하고 자세하게 설명해준다. 그러면 어려운 개념은 슬쩍 넘어갈 법도 한데 그 마저도 친절하고 집요하게 파고든다.

한 예로 gradient descent를 설명할 때 먼저 직관적인 이해를 위해 수치 미분을 이용한 방법을 제시한다. 나처럼 수치 미분이 낯선 사람을 위해 그 개념을 알려주고 심지어 구현도 한다. 그리고나서 backpropagation을 언급하여 왜 이 기법이 필요한 지 명확하게 이해하게 된다. 물론 학습에 적지 않은 시간이 필요했지만 이 순간부터 딥러닝이 더이상 막연한 미지의 것이 아니게 되었다.

여기서 더 나아가 요즘 가장 많이 사용되는 ADAM, Batch Normalization등의 학습 기법, CNN, 그리고 최근 가장 큰 이슈인 GAN에 대한 간략한 소개까지. 내가 세운 3가지 기준을 완벽하게 충족하는 바로 그 책이었다.


개인적으로 이 책을 읽고 나서 상당히 많은 자신감을 가지게 되었다.

물론 책의 두께와 편안한 문체와는 달리 꼼꼼하게 학습하려면 상당히 많은 시간을 요하는 책이지만 딥러닝을 제대로 입문하려는 사람에겐 더할나위 없는 시작점이 될 것이라 확신한다.