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

한빛미디어

독자리뷰

딥러닝 입문서 정리

mydrea***

|

2017-05-21

신경망 첫걸음

수포자도 이해하는 신경망 동작 원리와 딥러닝 기초

  • 저자 : 타리크 라시드
  • 번역 : 송교석
  • 출간 : 2017-04-03

어쩌다보니 딥러닝의 입문서에 해당하는 책을 3권째 집어들었다. 3권째쯤 보다보니 이제 내용보다는 중요 개념을 어떤 식으로 설명하고있고, 어떤 배경을 가진 사람들이 읽으면 좋을 책인지를 더 관심있게 보게 되었다. 마침 3권의 책이 모두 다른 특징을 갖고 있어서 흥미롭게 읽고 자연스럽게 복습도 되었다. 내가 딥러닝 강의를 할 것은 아니기에 더이상 입문용 책은 고르지 않기로 마음먹고, 이 기회에 3권의 책이 어떻게 다른지 정리해 두고자 한다.

딥러닝 입문에 필요한 내용은 Gradient Descent(경사 하강법)과 Backpropagation(역전파) 두가지다. 이 두 개념을 어떻게 설명하는지에 따라 특징들이 나뉘었다.


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

(리뷰 보기)

  • 대상 독자: 프로그래밍에 익숙하고 수학은 많이 까먹은 개발자들

딥러닝 입문용 책 중 가장 유명하고 많이 팔린 책이 아닐까 싶다. 프로그래머의 관점에서 신경망을 최소한의 라이브러리로 구현하는데 중점을 둔다.

Backpropagation 을 설명할 때 계산 그래프를 적극 활용한다. 계산 그래프에 익숙해지면 아주 기본적인 미분 개념만으로도 역전파를 손쉽게 구할 수 있다. Chain Rule이나 편미분같은 장벽을 돌아갈 수 있는 방법이 아닐까 싶다.

(하지만 제도권 교육에 익숙한 나같은 사람에겐 계산 그래프 또한 생소한 개념이었다. 오히려 Chain Rule과 편미분을 같이 소개해준 뒤에 계산 그래프가 더 잘 이해가 되었다.)

TensorFlow가 계산 그래프 기반으로 구현되었기 때문에 여기에 익숙해지면 TensorFlow 학습에 큰 도움이 된다.

스탠포드의 CS231n 수업에서 많이 활용한 개념인데 이 책도 강의를 많이 참고한 터라 CS231n 수업의 부교재로 써도 손색이 없다.

Batch Normalization, 다양한 최적화 기법(Momentum, Adam 등), CNN 등 입문용 책 중 다루는 범위가 가장 넓다.

딥러닝 첫걸음

  • 대상 독자: 공학에 익숙한 모든 사람들

Backpropagation 과 Gradient Descent 를 설명할 때 수식을 적극 활용한다. 구현 코드도 Matlab 기반이므로 공학 베이스를 가진 사람들이 접근하기 용이하다.

반대로 이야기하면 그 외의 사람들에겐 다소 어렵게 느껴진다. 공학이 익숙하지 않은 사람들과 이 책으로 스터디를 진행해 보았는데, 쏟아지는 수식과 기호들이 손에 잘 잡히지 않았다.

다루는 내용이 많지 않기 때문에 수학적 베이스가 탄탄하다면 딥러닝에 대해 빠르게 훑어볼 수 있는 책이라 생각된다.

신경망 첫걸음 (이 포스트의 주인공)

  • 대상 독자: 수학이 어려운 모든 사람들

부제에 ‘수포자도 이해하는…’ 이라는 문구가 들어가 있는데 이 책을 가장 잘 표현하는 말이라 생각된다.

회귀, 행렬, 역전파 등의 개념을 최대한 직관적으로 설명하기 위해서 많은 노력을 기울인다. 수식을 내어놓고 수식의 원리를 설명하는 방식이 아니라, 한 눈에 이해되지만 최적화된 방법은 아닌 접근에서부터 시작해서 아주 자연스럽게 수식을 유도해낸다.

(개인적으로는 최종 Output layer의 오차를 Hidden layer로 전파시키고 이를 이용해서 Backpropagation 공식을 완성시키는 과정이 감명깊었다. 이 내용을 편미분과 Chain Rule의 조합으로만 접근하면 상당히 긴 수식을 전개해야만 하는데, 좀 더 단순화되고 직관적인 방식으로 절대 까먹지 않을 것 같다.)

1부에서는 일부러 코드를 배제하고 개념 설명에 집중한 것도 좋았다. 개인적으로는 개념이 이해되지 않은 상황에서는 코드가 큰 도움이 되지 않았다. 심지어 잘 이해되지 않은 상황에서 코드만 따라 쳐보고 잘 돌아가니 이해했다고 착각하는 경우도 있었기에 이런 접근법이 내게는 더 유용했다.

부록의 기초 미분은 부록으로 빠져있기엔 아까울정도로 훌륭했다. 신경망을 이해하는데 필요한 정도의 미분을 아주 자세하고 직관적으로 설명해주고 Chain Rule까지 물흐르듯 이해된다. 수학에 막연한 두려움을 가지고 있는 사람들을 위해 부록으로 따로 뺀 모양인데 그런 사람들일수록 꼭 읽어봤으면 하는 부분이다.

2부에서 파이썬으로 구현하는 부분은 사실 너무 광범위한 내용을 짧은 분량 안에 담으려고 해서 실질적으로 도움이 될 것인지에 대해서는 의문점이 남는다.

프로그래밍이 익숙한 사람들은 어떻게든 여러 자료들을 참고해가며 이해하겠지만, 그렇지 않은 사람들을 대상으로 쓴 내용 치고는 함수의 사용법은 인터넷을 검색해보라는 식으로는 쉽지 않아보인다. 차라리 프로그래밍에 익숙한 사람을 가정하고 numpy 관련 내용을 좀 더 자세히 설명하는 것이 유용하지 않았을까 하는 의견이다.

대상 독자와 분량을 감안하여 최적화 기법과 CNN등은 대부분 빠져있는데, 그래도 신경망 학습에 필수적인 Batch Gradient 정도는 소개해주었으면 하는 아쉬움이 남는다. (처음 Batch Gradient를 이해하고 구현해보려 했을 때 많은 삽질을 겪은 개인적 경험때문일 것이다.)


남들은 불과 며칠만에도 딥러닝의 기본은 다 떼고 맘껏 이것저것 응용해보는데, 어쩌다보니 상당히 오랜 시간동안 기본서만 붙들고 있어서 스스로가 처량하게 느껴지기도 한다. 이 글을 읽는 누군가가 나보다는 더 빠르게 학습해 나갈 수 있을 것이라는 점에 위안을 삼고 이제 나도 다음 스텝으로 넘어가봐야겠다.

닫기

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