TL;DR

  • MNIST의 원시 픽셀을 입력으로 쓰는 다층 퍼셉트론(MLP)을 구축하고, 손으로 계산한 그래디언트가 자동 미분과 일치함을 확인하며, 깊이에서 이어지는 곱셈 항들을 1에 가깝게 유지하는 설계 선택을 살펴봄.
  • 데이터셋은 7만 장의 28×28 회색조 이미지로 구성되며, 작은 실험 예산을 택해 학습 10,000개, 검증 2,000개, 테스트 2,000개와 실험용 4,000개를 사용함.
  • 픽셀의 80.88%가 0이고 평균은 33.32, 표준편차는 78.57이므로, 이미지를 784개 값으로 펼친 뒤 픽셀값을 255로 나눔.
  • 손계산한 마지막 층 그래디언트와 자동 미분 결과의 최대 절대 차이는 0.0이며, 역방향 모드는 입력 차원과 관계없이 한 번의 패스로 그래디언트를 계산함.
  • 선형 소프트맥스 모델의 검증 정확도는 0.8935, 784·256·128·10 구조의 MLP는 0.9550이며, 희미한 샘플이 최선 모델도 넘지 못하는 오류 바닥을 형성함.

데이터와 스케일링

  • 배경 설명 게시물에서는 2~5편에서 텐서와 자동 미분을, 18편에서 MNIST 데이터셋과 로더, 첫 기준 모델을 구축함. 이번 글에서는 다층 퍼셉트론을 원시 픽셀에 적용하고, 손으로 유도한 그래디언트를 자동 미분과 대조한 뒤, 같은 작업에서 활성화 함수 7종, 초기화 4종, 정규화 3종, 규제 기법 3종을 통제된 방식으로 비교함.
  • 전체 실험의 핵심은 깊이가 곱셈의 연쇄라는 점이며, 각 설계 선택은 그 연쇄의 인자들을 1에 가깝게 유지하는 방법임.
  • 입력 스케일이 곱셈 인자의 출발점이므로 변환 전에 원시 픽셀을 검사함. MNIST는 28×28 픽셀의 회색조 이미지 70,000장으로 구성되며, 압축 크기는 약 11MB임.
  • 데이터셋 자체보다 깊이의 작동 원리가 주제이므로 작은 예산을 선택함. 학습 데이터 10,000개, 검증 데이터 2,000개, 테스트 데이터 2,000개, 실험용 부분집합 4,000개를 사용함.
  • 전체 학습 실행은 CPU에서 1초 미만이므로, 긴 실험 하나 대신 짧은 실험을 열두 번 수행할 수 있음.
  • 변환이 결함을 감출 수 있으므로 변환 전 원시 uint8 배열을 검사함. 모든 픽셀에 값이 있고 빈 이미지는 없으며, 0~9 범위를 벗어나는 레이블도 없음.
  • 레이블 분포는 거의 균일하고 최다 클래스 비율은 0.1124이므로, 가장 흔한 숫자만 추측하는 방식은 쓸모가 없으며 정확도는 해석하기 쉬운 지표임.
  • 모든 이미지의 해시를 확인한 결과 학습 데이터 안에 완전히 같은 이미지는 없고, 테스트 데이터에도 학습 이미지와 바이트가 반복되는 행이 없음. 따라서 테스트 수치의 신뢰성이 유지됨.
  • 픽셀 강도 통계가 스케일링 선택을 좌우함. 전체 픽셀 평균은 33.32, 표준편차는 78.57이며 픽셀의 80.88%가 정확히 0임.
  • 이미지가 배경 중심이므로 0~255 원시 입력을 사용하면 첫 번째 층의 가중치가 매우 작은 스케일을 갖게 됨. 각 이미지를 255로 나누고 784개 값으로 펼침.
  • 클래스 균형과 픽셀 분포를 확인하면 스케일링이 해결해야 할 문제가 드러남.
  • 픽셀 히스토그램은 0에서 급격히 솟고 가느다란 꼬리가 이어지며, 이는 0인 픽셀이 80.88%라는 수치와 일치함.
  • 오류 바닥과 관련된 추가 관찰도 있음. 이미지당 잉크 픽셀 수는 32~342개이며, 신호가 거의 없는 희미한 샘플이 일부 존재함.
  • 가장 희미한 샘플에는 잉크 픽셀이 32개뿐이며, 이러한 저신호 행이 이 글의 최선 모델도 넘지 못하는 바닥을 형성함. 완벽한 정확도는 도달할 수 없으며 작은 오류 바닥이 예상됨.
  • 입력 차원은 784, 출력 차원은 10이며, 이 값이 아래 모든 모델의 형태를 결정함.

네트워크와 역전파

  • 다층 퍼셉트론은 어파인 변환(선형 변환과 편향)과 비선형 함수의 적층 구조임. 가중치 행렬 두 개만으로도 픽셀 공간에서 곡선 경계를 만들 수 있음.
  • 학습에는 스칼라 손실 하나를 모든 가중치에 대해 미분한 그래디언트가 필요하며, 역전파는 계산 그래프를 한 번 거꾸로 순회해 이를 계산함. 전체 구조는 h = act(W1 x + b1), logits = W2 h + b2로 나타남.
  • 순방향 자동 미분은 방향 미분값을 앞으로 전달하며 입력 하나당 한 번의 패스가 필요함. 역방향 자동 미분은 코탄젠트를 뒤로 전달하며 출력 하나당 한 번의 패스가 필요함.
  • 손실은 스칼라 하나이므로 신경망 학습에는 역방향 모드가 적합함. 보편 근사 정리는 충분히 넓은 단일 은닉층이 콤팩트 집합 위의 연속 함수를 근사할 수 있다고 말하지만, 해당 가중치를 찾는 일이 얼마나 어려운지는 다루지 않으며 이것이 이후 내용의 주제임.
  • 첫 번째 검증은 자동 미분이 손으로 적용한 연쇄 법칙과 일치하는지 확인하는 것임. 작은 계산 그래프에서 역전파를 실행한 뒤, 마지막 층 그래디언트를 로짓에 2를 곱하고 원소 수로 나누는 방식으로 직접 계산함.
  • W2와 b2에 대해 손으로 계산한 그래디언트와 자동 미분 그래디언트 사이의 최대 절대 차이는 0.0임. 기록된 계산 그래프에는 MeanBackward0, PowBackward0, AddBackward0라는 연산 연결이 있어 블랙박스가 아님을 확인함.
  • 역방향 모드가 적합한 이유를 살펴보기 위해 작은 쌍대수 클래스로 순방향 모드를 구현하고, 같은 세 입력 함수에서 두 방식을 비교함.
  • 두 모드는 같은 그래디언트 0.367202, -0.40923, -0.377817을 반환하지만 계산 비용은 다름. 이 함수에서 순방향 모드는 세 번의 패스가 필요하고 입력 차원이 784인 경우에는 784번이 필요함.
  • 역방향 모드는 두 경우 모두 한 번의 패스가 필요함. 이 차이가 모든 프레임워크가 역방향 모드로 학습하는 이유임.
  • 작동 원리를 확인한 뒤 두 모델을 학습함. 픽셀 784개를 사용하는 선형 소프트맥스 모델은 0.9초 만에 검증 정확도 0.8935를 기록함.
  • 이는 기준 비율 0.1074보다 훨씬 높으며, 원시 픽셀 공간에서 숫자 클래스가 선형적으로 분리 가능한 경우가 많기 때문임.
  • 층 크기가 784, 256, 128, 10인 MLP는 0.8초 만에 검증 정확도 0.9550에 도달함.