사놓고 예전에 한 번 읽었던 책이다. 책장에 그대로 꽂혀 있던 걸 요즘 다시 꺼내 읽었다. 처음 읽을 때는 예제를 따라 치느라 바빴는데, 이번에는 같은 페이지에서도 걸리는 대목이 달랐다.
사이토 고키 저 / 개앞맵시 역 / 한빛미디어 / 2017.01
어떤 책인가
제목 그대로다. 프레임워크를 쓰지 않고 넘파이만으로 신경망을 직접 만들어 본다. 퍼셉트론에서 시작해 신경망, 손실 함수와 경사 하강법, 오차역전파법, 학습 관련 기술들, CNN을 거쳐 마지막에 딥러닝 전반을 훑는 8장 구성이다.
2017년 책이라 다루는 모델 자체는 소박하다. CNN으로 MNIST를 분류하는 정도가 실습의 끝이고 트랜스포머는 나오지도 않는다. 그런데도 아직 읽히는 이유는, 모델을 소개하는 책이 아니라 계산을 손으로 따라가게 만드는 책이기 때문인 것 같다.
다시 읽으니
가장 새삼스러웠던 건 5장 오차역전파법이다. 예전에는 수식을 눈으로 좇다가 넘어갔는데, 이번엔 계산 그래프로 풀어놓은 설명이 훨씬 또렷하게 들어왔다. 덧셈 노드는 기울기를 그대로 흘려보내고 곱셈 노드는 서로 바꿔 곱한다는 식으로, 미분을 국소적인 규칙들의 연결로 바꿔서 보여준다. 프레임워크들이 왜 연산 그래프를 만들어 두고 거기에 backward를 부르는지가 그제야 이해됐다.
6장 학습 관련 기술들도 인상이 달랐다. SGD와 모멘텀, AdaGrad, Adam을 같은 문제 위에서 비교하고, 가중치 초기값을 잘못 잡으면 활성화값 분포가 어떻게 쏠리는지 히스토그램으로 보여준다. 하이퍼파라미터 때문에 고생한 기억이 있어서인지 예전보다 훨씬 실감 났다.
요즘 내가 보는 건 대부분 LLM 쪽인데, 그 밑에 깔린 것도 결국 여기서 손으로 짜본 행렬 곱과 역전파다. 오래된 책이라기보다 아래쪽에 있는 책에 가깝다.
총평
기초를 다지는 일은 늘 값이 큰 것 같다. 새 논문이나 새 프레임워크를 좇는 게 재미있긴 한데, 아래가 비어 있으면 쉽게 흔들린다. 학습이 어디서 망가졌는지 판단해야 하는 순간에는 결국 밑바닥의 이해가 필요하다.
한 번 읽은 책을 또 읽는 게 시간 낭비처럼 느껴질 때도 있었는데 그렇지 않았다. 같은 책이어도 내가 달라져 있으면 읽히는 내용이 달라진다. 7장의 im2col 구현이나 8장에서 짧게 지나가는 이야기들은 아직 덜 소화한 느낌이다. 시간이 좀 지나면 또 한 번 읽어봐야겠다.