티스토리 뷰
<해당 포스트에서 다루고 있는 "골빈해커의 3분 딥러닝 : 텐서플로맛" 책은 한빛 미디어로부터 지원을 받고 이에 대한 서평을 쓴 것임을 알려드립니다.>
딱 처음 책을 접했을 때는 뭐랄까... 그림책 같았다. 거기다가 책제목부터 다른 책과 차별성이 있는 듯했다. 일반적으로 "... 첫걸음", "Introduction to ..." 와 같이 정형화된 제목을 갖추고 있었는데, 이 책은 짧은 시간임을 강조한 "3분" 이라는 단어를 제목에 포함해 쉽고 짧은 시간안에 책을 설명하고 있다는 느낌을 주고 있었다. 뭔가 이런 부분에서는 다른 출판사에서 나오는 딥러닝 관련 서적과는 다른 나름대로의 특징을 보여줬다.
사실 이전 책 리뷰를 할때도 언급했던 부분이긴 하지만, 난 이렇게 경량화된 책이 좋다. 휴대성 부분에서나 필요할 때 언제든 들고 볼 수 있는 사이즈이기에 회사 출근할 때나 짬짬히 여유시간이 있을 때 꺼내보기가 좋기 때문이다. 물론 자세한 설명과 완벽한 예제가 "많이" 담겨있는 것을 원하는 사람도 있겠지만, 적어도 뭔가 "맛"이라도 봐야 입문자도 처음 접근하기 쉬울 여지를 주지 않을까... 저 얇은 책안에 딥러닝을 설명하는 것 자체가 넌센스일지라도 말이다.
이 책에서 핵심적으로 다루고 있는 Tensorflow는 2015년 Google Brain 팀에서 만든 Data handling을 위한 SW Library이다. 아마 딥러닝 소식을 많이 접한사람이라면 Tensorflow 이외에도 Caffe나 Theano, Keras 같은 library들도 들어봤을텐데, 시중에도 찾아보면 각 Library를 대상으로 한 책들도 굉장히 많다. 이 책도 그런 맥락에서 Tensorflow package 사용법(tensorflow에서 제공하는 API나 Tensorboard 에 대한 내용)을 다룬다. 그리고 그 사용법을 이용해 MNIST, CNN, AutoEncoder 같은 것을 실제로 다뤄보는 것을 주 내용으로 삼고 있다.
이 책은 무슨 맛일까?
음식이 인기를 끌기 위해서는 다름 음식과 차별화시킬 수 있는 "맛"이 있어야 한다. 제목에서도 언급되어 있는 것처럼 Tensorflow를 설명하는 책이라고 하는데, 단순히 그 맛만으로는 누군가를 자극시키기엔 부족할 듯하다. 그래서 나름 책을 읽어보면서 추려본 맛을 소개해보고자 한다.
1. 수식과 복잡한 설명이 없다.
가령 CNN을 설명할 때도 반드시 나와야 할 내용이 Convolution 연산이고, 이를 증명하기 위한 공식이 쭉 많지만 실제로 그 알고리즘을 이해하고 개선하기에는 너무 많은 시간이 든다. 이를 고려한듯 단순히 Convolution 연산이 어떤건지 그림과 코드로 설명하고 실제로 Tensorflow로 구현하기 위해서 어떤 API가 사용되어야 하는지를 설명하는 형식으로 글이 진행되고 있다. 계속 얘기한 부분이지만, 단순히 글을 읽고 알고리즘을 간단히 이용하는 데 좋은 요소이지만, 좀더 깊이있는 학습을 위해서는 분명 이를 자세히 다루는 참고 서적이 꼭 필요하다.
2. 핫한 알고리즘들이 담겨있다.
이책에서 설명하고 있는 딥러닝 알고리즘은 아주 기본적인 Neural Network부터 시작해서 Deep mind에서 개발한 Deep Q-Network(DQN)까지 최신 trend의 경향을 포함하고자 노력했다. 물론 딥러닝 trend의 발전이 무척 빠르기에 이것도 어쩌면 구식의 기술이 되었을 수도 있겠지만, 적어도 몇년간 핫했던 알고리즘을 실제로 구현해볼 수 있는 기회를 제공한다.
사실 나도 내가 제일 관심을 가지는 알고리즘이 Generative Adversarial Network(GAN) 이라는 알고리즘이었다. 간단히 설명하면, 학습을 유도시키는 모듈과 학습된 결과물을 구별하는 모듈간에 경쟁을 시킴으로써 최대한 실제와 유사한 결과물을 내게끔 만들어주는 알고리즘인데, 아마 인터넷 게시판 돌아다니다보면 기계가 만들어낸 멋있는 이미지라던가 노래같은게 GAN을 거친 결과물이라고 보면 될거 같다. 아무튼 이런 결과가 시각적으로 나오게 된다면 뭔가 흥미를 유발할 수 있는 여지가 주어지는 것 같다. 이런데에서 흥미를 느끼면 이 책이 추구하는 목표에 도달할 수 있지 않을까 하는 생각이 든다.
3. Line-By-Line 코드 설명과 전체 맥락 분석
각 파트별로 내용 진행은 크게 다음과 같이 구성된다.
1) 원리 설명
2) 코드 구현시 설명이 필요한 부분에 대한 부연 설명
3) 결과 출력과 설명
4) 전체 코드
그렇기 때문에 코드를 직접 처보면서도 다시 전체 코드를 보기 위해서 계속 앞뒤로 이동해야 할 불편함이 없다. 또한 독자가 궁금해할 부분에 대해서 중간중간 Note 형식으로 주석을 달아놨기 때문에 책에 집중할 수 있다는 장점이 있다. 다만 그 내용이 그렇게 자세하지는 않다. 분명 더 알고 싶은 사람이라면 좀 갈증을 야기할 수도 있을 법한 내용들이 종종 들어있다. (예를 들어 선택한 부분에 대한 "why" 같은 부분...)
결론은?
아무래도 책 제목에 맛이라는 단어가 들어있으니 책을 읽은 소감도 음식으로 표현해볼까 한다. 내가 읽은 소감을 표현하자면, 마치 이 책은 "새콤달콤"과 같다는 느낌이 든다. 언제든 들고다니기에도 편하고 언제든 입에 넣고 맛을 볼 수 있다. 그 맛이 길게 유지되지는 못하지만, 적어도 씹는 동안에는 그 맛을 느끼고, 뭔가에 집중할 수 있게끔 해준다. 독자의 스타일마다 다른 부분이고, 명백히 말하는 내용이지만 이 책은 main dish 성격의 책은 절대 아니다. 그래도 읽다보면 딥러닝에 대한 호기심과 그 입맛을 부여하는 데는 나름 그 목적성을 다할 수 있는 책이라고 생각한다. 예상 독자층이라면.. 아마 딥러닝이 뭔지는 알고 싶고, 실제로 구현도 해보고 싶은데, 뭐가 뭔지 몰라서 시작조차 할 수 없던 사람들한테는 최적의 책이 되지 않을까 싶다. 참고로 나는 새콤달콤 진짜 좋아한다 :)
(이 책의 후속편으로 keras 편도 추후에 출시되는 것 같다. 나도 사실 듣던 강의가 keras로 진행되는게 많아서 그게 더 익숙했는데, 출간후 한번 읽어볼 것을 계획하고 있다.)
- 이책의 repository도 공개되어 있으니 코드만 참고하고 싶은 분께서는 아래 링크를 참고하시기 바랍니다.
: https://github.com/golbin/TensorFlow-Tutorials
'Hobby > Book' 카테고리의 다른 글
[Book] Python을 몰라도 머리는 들이밀 수 있는 Head First Python! (0) | 2018.02.19 |
---|---|
[Book]수치해석 관련자보다는 정말 엔지니어가 봤음 하면 책!-엔지니어를 위한 파이썬 (0) | 2017.12.18 |
[Book] 미래의 IT 스페셜리스트를 위한 지침서 - IT트렌드 스페셜 리포트 (0) | 2017.12.11 |
[Book] Python으로 다양한 기계학습 예제를 다뤄볼 수 있는 책 - 파이썬 라이브러리를 활용한 머신러닝 (1) | 2017.08.12 |
[Book] DirectX 12를 이용한 3D 게임 프로그래밍 입문 (0) | 2017.07.18 |
[Book] Effective Debugging : 디버깅 지옥에서 탈출하는 66가지 전략과 기법 (0) | 2017.06.06 |
[Book] Hello coding : 그림으로 개념을 이해하는 알고리즘 (1) | 2017.05.05 |
- Total
- Today
- Yesterday
- Pipeline
- dynamic programming
- arduino
- ColorStream
- Gan
- Variance
- 딥러닝
- Distribution
- Off-policy
- SketchFlow
- processing
- 강화학습
- bias
- Kinect
- End-To-End
- 파이썬
- RL
- Kinect SDK
- reward
- windows 8
- DepthStream
- ai
- 한빛미디어
- TensorFlow Lite
- Policy Gradient
- Kinect for windows
- Offline RL
- PowerPoint
- Windows Phone 7
- Expression Blend 4
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |