메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

독자리뷰

밑바닥부터 시작하는 딥러닝 (Deep Learning from Scratch)

smoh1***

|

2017-03-12

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

직접 구현하고 움직여보며 익히는 가장 쉬운 딥러닝 입문서

  • 저자 : 사이토 고키
  • 번역 : 개앞맵시(이복연)
  • 출간 : 2017-01-03
밑바닥부터 시작하는 딥러닝 (Deep Learning from Scratch)
 
제목에 걸맞게 밑바닥부터 차근차근 쌓아 올려 딥러닝을 설명하는 책이다. 책은 딥러닝을 설명하기 위해 파이썬 언어를 사용하고 있는데, 심지어 파이썬 언어를 몰라도 이 책을 따라갈 수 있을 것이로 생각하며, 심지어 다른 언어를 이용해서도 비슷하게 구현하며 따라갈 수 있을 것으로 보인다. 수학적인 내용도 그림을 통해 쉽게 설명하고 있다. 경사하강법(gradient descent)를 통해 최적점(optima)을 찾아가는 과정이나, 연쇄법칙(chain rule)과 오차역전파법(backward propagation) 등을 차근차근 예시를 들어 설명하고 있어, 수학에 자신이 없더라도 딥러닝이 어떤 것인지 감을 잡을 수 있다. 책의 표지에 from Scratch라는 말이 아주 작게 쓰여 있는데, 조금 더 강조되어도 좋을 것 같다. 딥러닝을 알지 못하는 누구라도, 심지어 수학과 컴퓨터를 잘 알지 못하더라도 조금만 노력하면 이 책을 따라갈 수 있을 것이다. 책의 첫 장은 파이썬을 설치하는 법부터 간단한 문법을 다루고 있고, 두 번째 장은 퍼셉트론(대학교 논리설계 시간에 배우는 AND gate 등)부터 차근차근 다루고 있기 때문이다.
반면, 이미 딥러닝을 하고 있거나 적어도 스탠퍼드의 cs231n, Udacity의 Deep learning강좌 등을 통해 딥러닝을 조금이나마 배운 사람들에게는 너무 쉬운 내용이라 느껴질 수 있다. 하지만 그렇다 하더라도, 책의 예제코드를 따라 쳐보는 실습은 꽤 도움이 될 것이다. 책은 Tensorflow나 Caffe등의 Deep Learning Framework들을 사용하지 않고 전파(propagation)나 손실(loss) 등을 직접 구현하는데, 이를 통해 딥러닝 기초 아이디어와 프레임워크에서는 드러나지 않는 과정들을 다시 생각하고 공부할 수 있다. 또 하이퍼파라메터(hyper parameter)의 설정이나 활성화함수(activation function)으로 사용되는 비선형함수(non-linear function)의 선택 등에 대해서 몇 가지 팁을 얻고, 애매한 부분들을 다시 정리하는데에도 도움이 될 것으로 생각한다.
책은 크게 8개의 장로 나뉜다.
  • 첫 장은 파이썬에 대한 대략적인 소개인데, 파이썬을 이미 알고 있다면 읽지 않아도 무방한 내용이다.
  • 두 번째 장은 퍼셉트론(perceptron)을 다룬다. 논리 게이트를 사용하여 원하는 결과를 얻도록 설계하는 방법을 이야기하는데, 대학교 논리설계 수업을 들었다면 빠르게 훑어 보는 것으로 충분하다.
  • 세 번째 장부터 본격적으로 신경망이 등장한다. 앞 장에서 얘기했던 퍼셉트론을 확장하여 신경망을 설명하며, 활성화함수(activation function), 소프트맥스함수(softmax function)을 소개한다. 벡터 내적과 같은 기초적인 수학도 꼼꼼하게 설명한다.
  • 네 번째 장은 학습을 다룬다. 손실(loss function)을 왜 정의하는지, 이것과 딥러닝이 어떻게 관련이 있는지 설명한다(딥러닝은 정의한 손실을 최소화하는 과정이라고도 할 수 있으며 이를 학습이라 한다.). 손실을 줄이는 최적화 과정은 미분을 통해 이루어지는데, 수학을 어려워하는 사람들을 위해 한 절을 할애하여 미분을 자세히 설명한다.
  • 다섯째 장은 오차역전파법(backward propagation)을 다룬다. 최적화 과정에서의 미분을 빠르게 하는 방법을 설명하는데, 이를 위해 미분의 연쇄법칙(chain rule) 부터 차근차근 설명한다. 다소 복잡한 개념이지만, 예시와 함께 따라간다면 무리 없이 이해할 수 있다.
  • 여섯째 장은 모델을 설계할 때 고려해야 할 사항들을 다룬다. 흔히 사용하는 확률적경사하강법(stochastic gradient descent) 외에 어떤 방법들이 있을지, 하이퍼파라메터(hyper parameter)들을 어떻게 초기화 하여야 할지, 정규화(normalization)는 어떻게 하는지, 과적합(overfitting)을 방지하기 위한 테크닉은 어떤 것들이 있는지 소개한다.
  • 일곱째 장은 이미지를 다룰 때 주로 사용되는 딥러닝의 한가지 종류인 합성곱 신경망(convolutional neural network)를 다룬다. 패딩(padding), 스트라이드(stride), 풀링(pooling) 등의 용어를 설명하며, CNN의 동작 과정을 단계별 그림을 통해 최대한 쉽게 설명한다.
  • 마지막 여덟째 장은 실제 딥러닝을 다룰 때의 문제를 얘기한다. 세 번째 장부터 다섯째 장까지 설명한 딥러닝의 기본 아이디어로 보면, 딥러닝은 꽤 쉬워 보이지만 실제로는 그렇지 않다. 전통적인 알고리즘들과 달리 프로그래머가 내부 동작을 규정할 수 없는 상황에서 어떻게 정확도를 더 높일 수 있을지, 그리고 학습에 걸리는 시간을 어떻게 단축할 수 있을지 등의 문제를 소개한다. state of the art였던 알고리즘들을 소개하며 딥러닝의 변화와 발전을 보여주며, 책에서 다루었던 딥러닝이 어떤 문제에 활용될지를 얘기하며 책을 마무리한다.
이 책은 아주 기본적인 내용부터 수준 높은 이야기까지 단계별 상세한 그림으로 쉽게 설명하고 있으며, 300쪽 남짓의 얇은 책이지만 아주 잘 편집된 내용과 구성으로 딥러닝을 이해하는데 필수적인 것들을 알차게 다루고 있다. 흔히 딥러닝을 공부하는 데에 필수 3서로 비숍 책(Bishop, Pattern Recognition And Machine Learning)과 머피 책(Murphy, Machine Learning: A Probabilistic Perspective) 그리고 딥러닝북(Deep Learning Book) 을 꼽는데, 이들 책의 두께와 내용이 부담스럽다면 이 책으로 딥러닝을 접해보는 것을 추천한다.

 

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실