티스토리 뷰

머신러닝/딥러닝 쪽에 공부를 시작하면 필연적으로 봐야하는 책이 한빛미디어에서 출간되었다. 제목부터가 심상치 않다.

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

우선 이 책은 일본에 원저를 둔 번역서인데 내용을 훌훌 읽어내려가는데 불편함이 없다. 이미 5쇄까지 발행된 상태기 때문에 오탈자나 문맥의 어색함도 찾기 힘들다. 파이썬을 기반으로 머신러닝의 이론과 구현에 집중하고 있는데 책의 서론에는 파이썬의 간단한 설치부터 변수, 사용법등이 기술되어 있다. 파이썬 입문서가 아니기 때문에 파이썬 이론에 대해 책을 비판할 필요는 없다. 이미 최소한의 내용으로 충분히 잘 설명하고 있지만 이론이 더 필요한 사람은 그에 적절한 책을 보는 것이 좋겠다.

책의 모든 예제는 이미 역자의 GitHub 에 공개되어 있으므로 실습이 필요한 독자는 받아서 실습해보면 좋다. 하지만 역시 백문이 불여일타이므로 직접 타이핑하면서 책의 내용을 따라가는 것이 좋겠다. 다른 대부분의 머신러닝/딥러닝 책과 마찬가지의 목차로 퍼셉트론에 대한 소개와 그 한계를 설명하고 뉴럴넷으로 자연스럽게 넘어간다. 활성화 함수에 대해서는 sigmoid 의 설명으로 끝내는 것이 아니라 그를 대신하는 ReLu 에 대한 부분까지 이어진다. 트렌드에 맞는 설명이 충분히 되어 있다고 보면 된다.

이 책이 다른 서적과 비교되는 부분중에 하나가 바로 매개변수를 갱신하기 위한 기법들에 대한 설명이다. 단순히 Stochastic Gradient Descent (SGD) - 확률적 경사 하강법 - 에 대해서만 설명하고 끝내는 것이 아니라 모멘컴, AdaGrad, Adam 과 같은 다른 기법들에 대한 소개가 이어진다. 각 기법들에 대한 이론 설명과 구현으로 성능에 어떤 차이를 주는지 친절하게 그래프까지 제공하며 예시를 보여준다. 다른 "첫걸음" 시리즈가 약간 답답한 부분이 바로 이것인데 실제 현장에서 사용되지 않는 이론에 대한 설명에 너무 집중하고 있다는 것이다. "첫걸음" 시리즈는 기본 개념을 설명하기 위한 책이니 어쩔 수 없다고는 하지만 한,두줄 정도로 매개변수 갱신을 위한 최신 트렌드 기법에 대해 소개를 겻들인다면 어떨까하는 아쉬움이 있다. 이 책은 입문서가 아니기 때문에 충분한 설명이 가능한 부분이겠다.

책의 뒤편에는 convolutional neural network (CNN) - 합성곱 신경망 - 에 대한 전체구조를 설명하고 여기에 필요한 중요 개념인 풀링(pooling), 패딩(padding), 스트라이드(stride) 등에 대해 설명이 이어진다. 다른 장과 마찬가지로 천천히 실습하면서 따라가면 이해할 수 있겠다.

이 책은 특정 프레임워크(TensorFlow 나 CNTK 같은) 에 의존적이지 않고 pythonnumpy 정도만 얹어서 구현하고 있기 때문에 개념과 밑바닥 구현(이론)에 충실한 책이다. 전공자가 아니라면 입문서가 아니기 때문에 절대 쉽지는 않고 가까이 두고 여러번 읽어야 할 것 같고 (이건 대부분의 머신러닝 책이 그러할 듯), 책의 모든 내용을 소화하게 되면 머신러닝/딥러닝 쪽의 두려움을 어느정도 극복할 수 있을 것으로 기대된다.

댓글
댓글쓰기 폼