티스토리 뷰

Hobby/Book

[Book] 딥러닝 첫걸음

생각많은 소심남 2017. 2. 6. 01:54

<해당 포스트에서 소개하고 있는 책 중 "딥러닝 첫걸음"은 한빛 미디어로부터 책을 지원을 받고 쓰는 것임을 알려드립니다>

 최근 IT 트랜드가 여러 갈래가 있겠지만, 그중에서도 핫한 주제를 꼽으라면 딥러닝이 아닐까 생각된다. 나도 회사에서 하는 일이 디바이스 드라이버나 운영체제를 다루는 일이긴 하지만, 일을 하면서도 어떻게하면 딥러닝이라는 주제를 우리가 하는 일에 접목시킬 수 있는가를 계속 고민하고 있다. 물론 쉬운 일은 아니지만...  사실 불가능한 일도 아니다. 이런 기계학습이라는 주제 자체가 축적된 데이터를 바탕으로 이뤄지는 것이기 때문에 우리쪽에서도 그런 데이터 쌓이는 분야만 잘 선정하면 되는 것이다.

 그리고 생각보다 이런 주제를 다루는 곳이 온라인 상에 무척 많다. 온라인 강의만 놓고 봐도 입문용 강의 중 Andrew Eg 교수의 Machine Learning 이나 Abu-Mustafa 교수의 Learning from Data 같은 강의가 제공되고 있고, Facebook에서도 AI korea 같은 곳에서 딥러닝 관련 주제들이 활발하게 다뤄지고 있다. 나는 여러개의 강의도 들었고, 현재는 책 여러 권을 읽어보면서 적당한 입문 방법이 있는지를 찾아보고 있다. 그중에 출판사에서 지원하는 프로그램이 있어 책 한권을 받고 이에 대한 평을 남겨보고자 한다. 참고로 나는 대학원때 기계학습관련 수업을 하나 들었고, 이를 응용해서 키넥트를 이용한 수화 번역 프로젝트를 진행해본 경험이 있다. 아래의 리뷰를 읽기 전에 이부분을 감안했으면 한다.

 딥러닝 첫걸음이라는 책은 Deep Learning for Beginners with MATLAB Examples 의 한국어 판이다. 출판년도를 확인해보니 아마 작가분께서 이렇게 동시에 출판하는 것을 염두에 두고 쓰신 책인듯 싶다. 책 자체는 180페이지 정도로 생각보다 얇다. 처음 이 책을 접했을 때는 과연 딥러닝이라는 주제를 180 페이지라는 짧은 분량안에 잘 설명할 수 있을까 하는 의문이 들었었다.

 책 내용을 읽다보면, 이 책이 진짜 딥러닝을 다루는 내용일까 하는 의문이 들 수 있다. 그도 그럴 것이 전체 책을 구성하는 6장중 딥러닝을 다루는 파트는 끝의 5~6장이고, 그전까지는 딥러닝을 이해하는데 필요한 기계 학습의 테크닉, 특히 Neural Network에 대해서 설명을 많이 할애하고 있다. 그리고 딥러닝에 대해서도 전체적인 이론에 대해서 자세히 설명하는 형식이 아닌, 동작의 간략적인 설명이 이뤄지고 이미지 처리용 딥러닝 기법 중 대표적인 방식인 Convolution Neural Network의 원리를 간단한 예제와 더불어 설명하는 형식으로 진행된다. 그래서 그런지 딱 이 책의 제목인 "첫걸음"이라는 문구가 딱 적합해 보였다.

 개인적으로 이 책에서 마음에 든 내용은 딥러닝쪽보다는 머신러닝쪽 내용을 다룬 것이었다.

 분명히 이런 것을 실질적으로 매일 다루는 사람이 아니라면 중요한 원리에 대해서 항상 기억할 수 없는 법이고, Remind가 지속적으로 이뤄져야 하는데, 이 책은 그런 부분을 잘 만족시키는 것 같다. 가량 위의 그림처럼 Linearly Separability를 설명하는 부분도 왜 이런 내용을 다뤄야 하고, 이런 내용이 어떤 이슈를 낳을 수 있는지를 설명하고 있다. 다시 말해 글의 주제에 대한 흐름이 명확하다고 느꼈다. 얇은 책답지 않게 해당 파트에서 다루는 내용에 대한 근거와 설명이 잘되어 있었다.

 또다른 개념서와 다른 부분은 위와 같이 코드가 많이 나온다는 것이다. 이해가 어려운 수학적 수식만 가득한게 아니라 위와 같이 코드를 통해서 원리가 어떻게 구현되고, 수식이 어떤식으로 적용될 수 있는지를 문맥적으로 잘 설명했다. 위의 이미지는 Classification의 대표적인 예시인 handwrite character classification 인데, 잘보면 이미지로 나온 데이터가 처리되는 과정을 설명을 통해서 서술되고 있는 것을 확인할 수있다. 굳이 이부분이 아니라도, 수식을 증명하는 방법을 코드로 진행함으로써 직접 읽고 실습하는 독자에게는 조금더 이해에 도움이 될 수 있을 거라 생각된다.

 (참고로 이책의 샘플 코드에 대한 github도 공개되어 있다 : https://github.com/philbooks/Deep-Learning-for-Beginners. 그리고 책에선 Matlab/Octave 코드로 설명했지만, 여기엔 Python 코드도 같이 공개되어 있기 때문에 독자 취향에 맞게 선택해서 코드를 확인할 수 있다.)

다만 아쉬운 점이라면, 앞에서 언급한 점처럼 이 책이 완벽한 솔루션이 될수 없다는 것이다. 전체 중 딥러닝을 실제로 다룬 부분은 마지막 두장이고, 그것도 이미지 영상 처리에 한정되서 응용할 수 있는 부분이기 때문에 다른 분야에 응용하고자 하는 사람이라면, 이 책을 선택하는데 조금 어려움이 있을 것이다.

 물론 그렇다고 딥러닝에 대한 설명이 부실한건 아니다. 충분히 딥러닝을 입문하는데 있어서 필요한 제반 지식에 대해서 그림과 함께 설명되고, 이를 보완하기 위한 코드도 제공된다. 또한 주제가 한정적이긴 하지만, MNIST 데이터 베이스중 숫자 분류에 대한 예시와 예제를 설명하고 있기 때문에 이를 응용하고자 하는 사람에게는 큰 도움이 될수 있을 것 같다. 

사실 어떻게 보면 이책을 통해서 딥러닝이 어떤 식으로 응용되는지를 처음 알았다. 물론 책의 서두에서 다뤘던 기계학습 관련 내용은 학교나 강의에서 배운 내용과 겹치는 부분도 있었기에 빠르게 넘길 수 있었지만, 딥러닝에 대해서 다룬 내용은 읽어보면서도 신기하고, 재미도 있었다. 더구나 코딩도 같이 나와 있어 뭔가 직접 해봐야겠구나 하는 의욕도 들게 했다. 아마 Matlab에 대해서 익숙하지 않은 사람이라도 Octave를 깔아보고 실제로 결과를 얻어보면 이런 느낌이겠구나라는 것을 느낄 수 있을 듯 하다. 그래서 좀더 다른 책을 찾아보고, 더 공부해보려고 한다.

 아무튼 무척 얇은 책임에도 불구하고, 생각보다 많은 주제와 예제, 그리고 두터운 글의 뿌리를 느낄 수 있는 책이었다. 물론 이 책이 제목에도 담겨 있는 것처럼 첫걸음이기 때문에 딥러닝 공부의 시작점이 될수는 있어도, 종착점이 되기엔 조금 어려운 부분이 있다. 물론 현재 트랜드에 있어서 종착점이란 것은 없겠지만, 그래도 이 걸 읽는 독자에게는 선택의 여지를 주지 않을까 생각한다. 의지의 문제일 순 있겠지만, 적어도 이책은 그 선택을 위한 발판을 제공하지 않았을까 싶다.

==================================================

 아 참 그리고 이거는 여담인데, 책의 사이즈가 너무 맘에 든다.

내가 회사나 어디를 갈때 주로 들고 다니는 슬링백인데, 책이 딱 이 슬링백에 들어가서 들고 다니기 편했다. 그래서 어디를 가서 여유가 생겼을 때 읽을 수가 있었다. 그 점은 좋았던 것 같다. (이런 사이즈의 책들이 앞으로도 많이 나와줬으면 하는 바램... :) )

댓글