jin***
2020-09-26

신경망을 확실하게 이해할 수 있는 최고의 딥러닝 입문서. 신경망 개념을 수식, 그림, 코드로 차근차근 배우며, 간단한 딥러닝 모델부터 합성곱 신경망, 순환 신경망까지 파이썬으로 구현해봅니다.
이번 포스트에서는 처음부터 시작하는 딥러닝: 수학이론과 알고리즘부터 CNN, RNN 구현까지 한 권으로 해결하기 책을 리뷰해보려 한다. 예전에 대부분의 딥러닝 책들을 보면, 이론에 대한 설명만 엄청 하드하거나 아니면 이론과 기본 연산부분의 구현은 굉장히 간단하게 보여주고 바로 딥러닝 프레임워크로 넘어가는 책들이 많았다. 하지만 최근에 파이토치나 텐서플로우 같은 딥러닝 프레임워크를 사용하지 않고, 어느정도 딥뉴럴 네트워크 를 구현하면서 이해를 돕는 책들이 많이 나오는 것 같다 (처음부터 시작하는 딥러닝, 밑바닥부터 시작하는 딥러닝, 파이썬 날코딩으로 알고 짜는 딥러닝 등). 아무래도 이러한 흐름은, 최근에 연구 분야로도 큰 관심을 끌고 있는 Interpretable Machine Learning 과 어느정도의 연관은 있다고 생각한다. 사실 딥러닝은 Non-linearity가 첨가된 거대한 연산 수식이지만, 그 연산의 규모가 굉장히 크고 복잡하기 때문에 검증이 쉽지 않고 초기화 단계 등에서 Randomness 도 들어가기 때문에 (딥러닝 Optimizer나, 다른 모델을 수렴시는 알고리즘 논문들을 읽어보면 초기화 단계에서의 중요성도 어느정도 언급되고 있다), 그 결과를 해석하는 것이 쉽지 않다. 이런 세부적인 이해부터, 대중들 역시 단순히 프레임워크를 가져다가 딥러닝 모델들을 구현하다보면, 그 프레임 워크의 내부가 궁금해지기 마련이고 이런 책들이 그러한 수요에 따라 나온 것이 아닐까 싶다.
아무튼, 서론이 길었는데 이런 백그라운드를 가지고 이 책이 어떠한 가치들을 독자에게 줄 수 있을지를 천천히 리뷰해 보자. 이 책의 목차를 보면, Chapter 1, 2 는 뉴럴넷의 기초가 되는 연산들에 대해 다루고 이후 Chapter 3, 4 에서 앞에서 다룬 뉴럴넷을 딥러닝으로 확장시키기는 것을 다룬다. 이렇게 나름대로 작은 DIY 딥러닝 프레임워크를 만들고 거기에 Chapter 5, 6 에서 CNN과 RNN 을 추가하면서 독자들의 딥러닝에 대한 이해를 돕는다. 마지막 Chapter 7 에서는 지금까지 DIY 딥러닝 프레임워크에서 구현한 것들이 파이토치에서 어떻게 제공되고 있는지 설명한다. 이 책의 가장 큰 장점은, 이전의 딥러닝 책들에서 Chapter 1, 2 를 설명하고 바로 Chapter 7 로 뛰어넘어서 CNN과 RNN, 그리고 더 다양한 딥러닝 모델들에 다루는 것과 다르게, 두 간극 사이를 설명하고 구현하면서 머신러닝 프레임워크의 기능들이 정확히 무엇인지 설명하는 것이라고 생각한다. 물론 딥러닝 프레임워크 (PyTorch, Tensorflow, MXNet 등) 마다 작게는 Imperative/Declarative API 부터, 단순히 단일 노드의 머신러닝 기능 제공부터 스케일업을 위한 기능들, 모델 서빙 등에서 큰 차이들이 있지만, 이 책의 범위가 그 부분까지는 커버하지 않으니 그러한 부분들은 각 프레임워크의 논문 및 공식문서를 참조하면 될 것 같다. 이 책은 딥러닝 프레임워크에서, 그중에서 특히 딥러닝에서 매우 많이 쓰이는 코어 연산들이 어떻게 구현되었고, 어떻게 그런 기초 블럭들이 딥러닝으로 조립될 수 있는지에 대해서 설명하는 책이다. 그러므로, 딥러닝을 프레임워크로 시작하여 그 내부의 이해가 부족한 독자들에게 특히 도움이 많이 될 수 있을 거라 생각한다. 또한, 이러한 기본 이해는 시간이 날때마다 챙겨두면 단기적으로는 큰 차이가 없어보이지만, 롱런하기에 그 중요성을 계속 강조해도 부족하기 때문에, 딥러닝을 공부하는 학생들에게도 정말 좋은 책이라고 생각된다.
마지막으로 간단히 이 책을 다른 비슷한 책과 비교를 해보자면, 난도에서는 파이썬 날코딩으로 알고 짜는 딥러닝: 프레임워크 없이 단층 퍼셉트론에서 GAN까지 책보다 쉽고, 다루는 범위도 더 적다. 그러므로 본인이 이미 딥러닝 프레임워크 내부에 대해 어느정도 이해와 최신 딥러닝 모델들을 충분히 이해하고 있다면 파이썬 날코딩으로 알고짜는 딥러닝 책이 더 잘 맞을 것이라 생각된다. 반면, 최신 딥러닝 모델들과 프레임워크에 대한 이해가 부족하여 위의 책이 부담스럽게 느껴진다면 이 책 '처음부터 시작하는 딥러닝'을 먼저 읽고, 다른 딥러닝 책들 (딥러닝 기초를 간단히 설명하고 많은 모델들을 다룬 책)을 읽고, 위의 책을 읽는다면 보다 더 깊은 이해를 가질 수 있을 거라 생각한다. 아무튼, 이전에 딥러닝 프레임워크에 대해 설명한 엔트리급 책이 많이 없었는데, 이런 책들이 기반이 되어 더 많은 사람들이 관심을 가지게 된다면 좋을 것 같다.