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

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

사이토 고키의 『밑바닥부터 시작하는 딥러닝 — 파이썬으로 익히는 딥러닝 이론과 구현』을 장별로 정리합니다. 지금까지의 책들이 “코드를 어떻게 쓰고 어떻게 구조화하는가”였다면, 이 책은 완전히 다른 축입니다 — 기계가 어떻게 배우는가를, 프레임워크 없이 넘파이 배열 연산만으로 밑바닥부터 손으로 쌓아 올립니다.

이 서재의 노트는 다른 책들보다 한층 더 상세하게 정리합니다. 이 책의 힘은 “이런 게 있다”가 아니라 “직접 만들어 보니 이렇더라”에 있기 때문입니다. 그래서 각 장에서:

  • 수식은 결과만 던지지 않고 왜 그렇게 되는지 유도합니다. 특히 5장 오차역전파법의 연쇄 법칙은 계산 그래프를 따라 한 노드씩 짚습니다.
  • 코드는 스텝 플레이어의 diff로 한 조각씩 자라나는 과정을 기록합니다. 퍼셉트론(2장) → 순전파(3장) → 수치 미분으로 학습(4장) → 역전파 계층(5장) → CNN(7장)으로, 같은 신경망이 장을 넘어 진화합니다.
  • 넘파이 코드는 배열의 shape가 어떻게 흐르는지까지 따라가, “돌아가니까 됐다”가 아니라 왜 그 차원인지를 남깁니다.

퍼셉트론 하나에서 출발해 손글씨를 알아보는 심층 신경망까지, 그 사이에 감춰진 것이 하나도 없도록 따라가는 기록입니다.

수식이 낯설다면 — 미분·행렬·지수/로그를 배운 적 없어도 괜찮습니다. 목차 끝의 「수학 부록 ①~④」에 함수·기울기·미분·연쇄법칙·행렬곱·지수·로그·확률을 초등학생도 이해할 수준으로 풀어 두었고, 본문에서 어려운 수학이 나오는 자리마다 해당 부록으로 링크를 걸어 두었습니다. 겁먹지 말고 필요할 때 부록부터 들르면 됩니다.

Contents

  1. 01
    1장 헬로 파이썬이 책의 유일한 무기인 넘파이 배열을 손에 쥔다. 원소별 산술, 브로드캐스트의 shape 확장 규칙, 행렬 곱, matplotlib까지 — 앞으로 모든 신경망 계산을 왜 배열과 행렬로만 쓰는지(벡터화)를 여기서 못 박는다. 작은 배열 둘을 실제 숫자로 손계산해 shape 흐름까지 눈으로 따라간다.
  2. 02
    2장 퍼셉트론가중치와 편향을 가진 퍼셉트론 하나로 AND·NAND·OR를 파라미터만 바꿔 구현하고, XOR가 단층으로는 풀리지 않는 이유(선형 분리 불가)를 좌표평면에 네 점을 찍어 직선 하나로 못 가르는 그림으로 짚는다. 그리고 NAND와 OR를 AND로 엮은 2층 퍼셉트론으로 XOR를 넘어서며, 층을 쌓으면 표현력이 는다는 이 책의 첫 씨앗을 심는다.
  3. 03
    3장 신경망퍼셉트론의 계단 함수를 매끄러운 활성화 함수(시그모이드·ReLU)로 바꾸는 것이 신경망으로 가는 문이다. 비선형성이 왜 필수인지 증명하고, 순전파를 행렬 곱으로 설계하며, 출력층의 소프트맥스와 오버플로 대책을 유도한 뒤 작은 2→3→2 신경망을 실제 숫자로 손계산하고, 학습된 가중치로 MNIST를 추론한다.
  4. 04
    4장 신경망 학습3장까지는 가중치를 손으로 주었지만, 이제 데이터로부터 스스로 정한다. 손실 함수(MSE·교차 엔트로피)로 나쁨을 하나의 수로 재고, 수치 미분으로 기울기를 구해, 경사하강법으로 그 수를 깎아 내린다. 교차 엔트로피·수치 미분·경사하강을 실제 숫자로 손수 굴려 확인하고, 2층 신경망을 수치 미분만으로 학습시켜 손실이 실제로 내려가는 것을 본다 — 그리고 그 느림이 5장의 동기가 된다.
  5. 05
    5장 오차역전파법수치 미분은 옳지만 느리다. 계산 그래프와 연쇄 법칙으로 기울기를 한 번의 역방향 흐름으로 구한다. 곱셈·덧셈 노드에서 시작해 ReLU·Sigmoid·Affine·Softmax-with-Loss까지 각 계층의 forward/backward를 미분으로 유도하고, 계층 딕셔너리로 신경망을 조립한 뒤, 2→2→2 신경망을 숫자로 끝까지 역전파해 gradient check로 검증한다.
  6. 06
    6장 학습 관련 기술들학습이 되게 만드는 것과 잘 되게 만드는 것은 다르다. SGD의 지그재그를 Momentum·AdaGrad·Adam으로 다스리고, 가중치 초깃값의 스케일이 활성화 분포를 살리고 죽이는 것을 히스토그램으로 보고, 배치 정규화로 분포를 강제하고, 가중치 감소·드롭아웃으로 오버피팅을 누른다. 4·5장이 학습의 뼈대라면, 6장은 그 뼈대가 실제로 잘 학습되게 하는 손기술의 모음이다.
  7. 07
    7장 합성곱 신경망(CNN)완전연결 계층이 이미지의 3차원 형상을 1차원으로 뭉개 버리는 한계에서 출발한다. 필터를 슬라이딩하는 합성곱, 공간을 줄이는 풀링, 그리고 4차원 입력을 2차원 행렬로 펴서 합성곱을 행렬곱으로 바꾸는 im2col을 밑바닥부터 구현해 MNIST를 인식한다. 출력 크기 공식을 유도하고 shape 변환을 끝까지 따라간다.
  8. 08
    8장 딥러닝층을 깊게 쌓으면 무엇이 좋아지는가를 수용 영역과 매개변수 효율로 유도하고, ImageNet이 촉발한 VGG·GoogLeNet·ResNet의 핵심 아이디어를 그림처럼 풀어낸다. ResNet의 스킵 연결은 5장 덧셈 노드의 역전파로 기울기 소실이 풀리는 이유를 설명하고, 3×3 세 겹 vs 7×7 한 겹의 매개변수와 기울기를 실제 숫자로 손으로 굴려 본다. GPU·분산 학습, 사물 검출·분할·캡션·화풍 변환·강화학습까지 딥러닝의 지도를 넓게 조망하고, 1장부터 8장까지 밑바닥에서 올라온 여정을 되짚으며 책을 닫는다.
  9. 09
    수학 부록 ① 함수와 변화율변수·함수·그래프·기울기·시그마를 초등학생도 알아듣게, 작은 숫자로 하나씩 떼어 주는 부록.
  10. 10
    수학 부록 ② 미분과 기울기미분·편미분·기울기·연쇄법칙을 미적분 안 배운 사람도 알 수 있게, 숫자로 하나씩 풀어 딥러닝 학습의 심장 수학을 떼어낸다.
  11. 11
    수학 부록 ③ 벡터와 행렬숫자를 한 줄로 세운 게 벡터, 격자로 깐 게 행렬. shape 읽는 법과 행렬 곱을 작은 숫자 격자로 손계산해, 신경망이 왜 온통 행렬 곱인지까지 겁 없이 떼는 부록.
  12. 12
    수학 부록 ④ 지수·로그·확률exp와 log가 뭔지, 왜 시그모이드·소프트맥스·교차 엔트로피가 이걸 쓰는지를 숫자로 떼는 마지막 수학 부록.