27 March 2020

알기쉬운 비유와 기초수학으로 시작하는 그로킹 딥러닝

책 시작부에 쓰인 책의 의도를 보면 이 책은 내부 동작 과정을 알 수 없는 고수준 라이브러리에 의존하지 않고 간단한 계산을 넘어서는 수학지식이 없는 독자가 책을 소화할 수 있어야 한다고 나와있다.

이 책은 의도대로 수학공식보다는 그림이나 도식을 통해 설명을 하려고 노력하고 있고 또 그림과 도식 옆에 코드를 배치해서 의도를 이해할 수 있도록 구성되어 있다.

기존 딥러닝 책은 고수준 라이브러리의 사용법을 통해 원하는 목적에 달성할 수 있도록 레시피를 제공하는 형태와 그 내부의 동작원리를 깊게 설명하는 책으로 나뉘는데 이 책은 고급 수학 지식 없이 코드와 비유 혹은 그림으로 이해할 수 있도록 구성되어 있다.

고수준 라이브러리를 사용하다보면 그냥 구현해서 사용하는게 간단할 때도 있는데, 추상화되어 있는 API를 가져다 사용하다보면 API에는 익숙해지지만 내부 이해를 위해서는 다시 내부 코드를 봐야할 때가 종종 있다.

반대로 복잡한 코드들을 간단한 API 한줄로 불러 사용하는게 훨씬 편할때가 많지만 원리를 이해하지 못 하고 사용할 때면 뭔가 빚을 지는 기분이 들때가 있는데 이런 기분을 조금이나마 해소할 수 있는 책이었다.

자연어처리 쪽 내용도 단어 벡터화나 ngram 기법을 라이브러리를 가져다 사용할 수도 있지만 직접 코드로 구현하고 있다.

이 책에서 사용하는 라이브러는 numpy 와 keras 정도이고 대부분의 코드를 직접 구현해서 사용하고 있다.

초보자도 볼 수 있는 책이라고 되어있긴 한데 파이썬 문법에 대한 이해가 부족하다면 조금 어려운 책이지 않을까 싶다.

그래서 이 책에서 대상으로 한 초보자를 떠올려보자면 파이썬 기초 문법을 어느정도 이해하고 있고 머신러닝과 딥러닝의 어느정도 기초 지식이 있는 사람이라면 이 책이 더 도움이 될거 같다는 생각이 든다.

공짜점심은 없듯이 어느정도 기본적인 지식이 있는 상태에서 이 책을 보면 딥러닝 라이브러리의 API를 호출해 사용했던 내부가 어떻게 구현되었는지 이해하기에 적당하지 않을까 싶다.

아예 딥러닝이 처음인 사람이 읽으면 조금 어려울 거 같다는 생각이 들고 텐서플로우나 케라스 예제를 몇 번 돌려본 사람이 보면 그 내부 원리를 이해하는데 더 도움이 되겠다는 생각이 든다.

GitHub : iamtrask/Grokking-Deep-Learning: this repository accompanies the book “Grokking Deep Learning”

언제나 프로그래밍 책을 볼 때는 소스코드를 먼저 보는데 이 책도 소스코드가 잘 정리되어 있고 바로 클론 받거나 colab을 통해 실행해 볼 수 있는 형태로 되어 있어서 코드를 실행해 보면서 읽어볼 수 있었다.

코드를 직접 구현한 책들은 보통 두껍거나 너무 어려울 때도 있는데 비교적 적당한 난이도로 되어있고 도식이나 비유가 쉽게 설명하려고 노력한 흔적을 느낄 수 있는 책이었다.