[서평] TensorFlow를 이용한 <딥러닝의 정석>

By | 2018/04/12

딥러닝의정석

학부때부터 현재 대학원과정까지 10여년을 컴퓨터 관련 전공에 몸담고 있다. 몇년주기로 계속해서 트렌드가 바뀌고 있는데, 스마트폰 개발 열풍이 불었다가, 빅데이터가 유행하더니, 지금은 머신러닝/딥러닝이 IT분야에서는 최고의 화두이다. 10년쯤 전, 학부 4학년때 전공 수업으로 기계학습이라는 과목을 수강하면서 신경망이라는 개념을 처음 접했었는데 지금 이렇게 화제가 될 줄 알았으면 그 때부터 미리 공부해놓을걸 하는 아쉬움이 크다. 늦었다 싶을때가 늦은것이라는 박명수의 명언도 있지만, 당장 쓸 일은 없어도 어느 정도 기본 지식은 있어야 하지 않을까 하는 생각에, 코세라에서 스탠포드 교수인 Andrew Ng의 머신러닝 강의를 들어보기도 하고, 홍콩과학기술대학교 교수였던 김성 교수님의 머신러닝/딥러닝 강의를 들어보기도 했다. 두 강의 모두 끝까지 듣지는 못했지만 Andrew Ng 교수님의 강의로 대략적인 이론에 대해서 공부하고, 김성 교수님의 강의로 머신러닝 기반지식과 Tensorflow 기본에 대해 공부했다. 마침 한빛미디어를 통해 O'REILLY의 [딥러닝의 정석]이 번역/출간되었기에, 머신러닝 기초 이론과 Tensorflow 기초를 배웠으니 이 책을 통해 기반 지식을 업그레이드 할 수 있겠다는 생각이 들었다.

이 책의 서두에서는 미적분, 행렬, 파이썬 프로그래밍에 대한 기본적 이해가 있는 독자를 대상으로 한다고 밝히고 있다. 하지만 막상 이 책을 읽기 시작하면서 서두가 조금 수정되어야 할 것 같다는 느낌이 들었다. 이 책은 미적분, 행렬 파이썬 프로그래밍에 대한 기본적 이해와 머신러닝 이론 기본 및 TensorFlow 기초 개념에 대해 이까지 하고 있는 독자가 대상이라고 해야 적절할 것 같다. 그럴것이, 이 책에은 한권 안에 신경망 기초부터 강화학습 활용까지 머신 러닝 전반의 다양한 기술을 다루고 있다. 한권 안에 많은 내용을 꾹꾹 담아내다보니 이 부분에서 호불호가 크게 갈릴 것 같다. 책의 초반부에서는 신경망에 대해 설명하고 있는데, 나는 다행히 선행 지식이 있으니 따라갈 수 있지만 머신 러닝을 처음 접하는 독자라면 이정도 설명으로 이해가 가능할까하는 의문이 들었다. 아마존 웹사이트에서 책 원서를 검색해보니 별점을 낮게 준 사람들 대부분의 리뷰가 not enough explanation and unexplained terms 와 관련되어 있는 것을 보면, 확실히 이 책의 대상은 머신러닝 초보는 아닌 것 같다.

머신러닝 기본 및 TensorFlow 기본 지식이 있다면, 책의 초반부까지 가볍게 잊고 있던 개념들을 다시 떠올린다는 느낌으로 읽을 수 있을 것 같다. 개념을 넘어 본격적으로 딥러닝 응용레벨에서 다루는 것은 중반부에서 CNN을 TensorFlow 코드를 이용하여 설명하는 부분부터이다. 여기서부터 TensorFlow 코드가 책의 상당 부분을 차지한다. 지면 한계상 Full source code보다는 함수레벨 정도의 코드만 지면에 할애하고, Full sorcue code는 깃헙 저장소를 통해 접할 수 있었다. 책의 소스코드만 따라치면서 책 내용을 실습해보려니 책에 나온 코드로는 실행이 어려워서 깃헙 저장소를 찾아봤는데, 코드를 챕터별로 관리하지 않고 그냥 한 폴더에 때려박은 식으로 관리를 하고 있어서 찾기가 힘들었다. (책의 코드를 어떤 파이썬 파일에서 찾을 수 있는지 안내가 없다보니 많이 불편했다) 다행히 TensorFlow야 워낙 유명하고 커뮤니티 활성화도 잘 되어있으니, 모르는 용어나 코드 구현 방법에 대해 검색하면 금방금방 찾을 수 있다.

책의 중반까지 MINST 손글씨 데이터를 다룰때까지는 볼만했는데, 책의 후반부에서 시퀀스 분석과 강화학습 내용이 나오면서 낯설고 어려워 이해하기가 힘들었다. 나름 자연어처리에 대한 기본 지식도 있으니 금방이해하지 싶었는데, 책의 설명만으로는 힘들어서 TensorFlow 공식문서나 다른 블로그를 많이 참조했다. 결국 코드까지 돌려보지는 못했는데, 이 부분은 다시 복습하면서 봐야겠다.

[딥러닝의 정석]을 TensorFlow 기본 지식이 있는 사람이 TensorFlow를 이용하여 머신러닝 기본을 다시 한번 되새겨보고, 시퀀스 분석부터 강화학습까지 활용해보고 싶은 분에게 추천한다.

입문자는 아래 링크를 참고하여, 머신러닝과 TensorFlow의 기본을 다지고 이 책을 보도록 하자 (본인이 공부할 때 직접 참고 한 자료들이다)

- 텐서플로우 문서 한글 번역 문서: https://legacy.gitbook.com/book/tensorflowkorea/tensorflow-kr/details
- 신경망 첫걸음: http://www.yes24.com/24/goods/37883845?scode=032&OzSrank=3
- 텐서플로우 첫걸음: http://www.yes24.com/24/goods/30547754?scode=032&OzSrank=6
- Andrew Ng 교수님의 머신러닝 강의: https://www.coursera.org/learn/machine-learning
- 김성 교수님의 머신러닝/딥러닝 강의: https://www.youtube.com/watch?v=BS6O0zOGX4E&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm