AI VIDEO BRIEFING
안드레이 카파시 makemore 3강 정리 — 신경망 초기화, tanh 포화, 배치 정규화와 활성값 진단법
안드레이 카파시가 makemore 세 번째 강의에서 초기 손실값 27이 왜 잘못된 신호인지, tanh 포화가 어떻게 기울기를 죽이는지, 배치 정규화가 무엇을 해결하고 무엇을 대가로 치르는지 짚는다.

핵심 메시지
쉽게 이해하기
안드레이 카파시의 makemore 시리즈 세 번째 강의는 순환 신경망으로 넘어가기 전에 다층 퍼셉트론에 조금 더 머무른다. 이유는 분명하다. 순환 신경망이 왜 1차 기울기 기반 기법으로 잘 최적화되지 않는지 이해하려면, 학습 중 활성값과 뒤로 흐르는 기울기가 어떻게 움직이는지를 먼저 몸으로 알아야 하기 때문이다. 실습 대상은 파라미터 1만 1천 개짜리 문자 단위 언어 모델로, 배치 크기 32로 20만 스텝을 학습한다.
첫 번째 문제는 초기화된 출력층이었다. 학습 0번째 반복의 손실값이 27로 찍히는데, 글자 후보가 27개이고 초기에는 어느 글자도 더 유력하다고 볼 이유가 없으니 기대값은 음의 로그 27, 즉 3.29여야 한다. 로짓이 극단적인 값을 갖는 바람에 신경망이 엉뚱한 글자에 확신을 실은 것이다. 편향을 0으로 만들고 가중치를 0.01배로 줄이자 초기 손실이 기대값 근처로 내려왔고, 초반 수천 번의 반복을 로짓 짓누르는 데 쓰던 낭비가 사라지면서 최종 성적도 좋아졌다.
두 번째 문제는 은닉층이었다. tanh 출력 히스토그램을 그려 보면 값 대부분이 -1과 1에 몰려 있다. tanh를 통과하는 역전파는 상류 기울기에 1 빼기 출력 제곱을 곱하는데, 출력이 ±1이면 이 값이 0이 되어 기울기가 그 자리에서 끊긴다. 어떤 입력을 넣어도 항상 포화 구간에만 머무는 뉴런은 영영 학습하지 못하는 죽은 뉴런이 되고, ReLU에서는 학습률이 높을 때 학습 도중에도 이런 일이 생겨 카파시는 이를 "영구적인 뇌손상"에 비유한다.
그렇다면 스케일을 얼마로 잡아야 하는지가 남는다. 손으로 히스토그램을 보며 맞추는 대신, 팬인의 제곱근으로 나누면 표준편차가 보존된다는 계산이 있고, He 등의 "Delving Deep into Rectifiers" 논문은 여기에 비선형성별 이득값을 곱하는 방식을 제시했다. 파이토치의 카이밍 초기화도 같은 형태이고, tanh 권장 이득은 3분의 5다. 다만 카파시는 이 3분의 5가 어떤 수식에서 나왔는지는 찾지 못했다고 솔직히 밝히면서, 선형-tanh를 쌓았을 때 표준편차 0.65, 포화도 5% 안팎으로 안정된다는 경험적 근거만 제시한다.
강의 후반은 2015년 구글에서 나온 배치 정규화로 이어진다. 활성값이 대략 정규분포이길 바란다면 그냥 정규화해 버리면 된다는 발상인데, 표준화 연산 자체가 미분 가능하기 때문에 가능하다. 여기에 학습되는 이득과 편향을 붙여 분포가 움직일 여지를 주고, 추론 때 예제 하나만 넣을 수 있도록 학습 중 이동 평균으로 평균과 표준편차를 따로 모아 둔다. 앞 레이어의 편향은 평균을 빼는 과정에서 상쇄되어 무용지물이 되므로, 파이토치 ResNet 구현이 합성곱에 bias=False를 주는 것도 같은 이유다.
주요 인사이트
- 초기 손실값은 손실 함수와 문제 설정만으로 미리 계산할 수 있다. 학습을 돌리기 전에 기대값을 손으로 구해 두면 초기화가 망가졌는지를 첫 줄 출력만 보고 알 수 있다.
- 은닉층이 하나뿐인 얕은 신경망은 초기화가 엉망이어도 결국 학습된다. 층이 50개쯤 쌓이면 같은 실수가 누적되어 아예 학습이 되지 않는 지점까지 갈 수 있고, 깊을수록 관용은 줄어든다.
- 진단 지표로는 기울기와 값의 비율보다 실제 업데이트와 값의 비율이 유용하다. 로그10 기준 -3 부근이 적정선이고, 훨씬 아래면 학습이 너무 느리다는 뜻이라 학습률을 가늠하는 데도 쓸 수 있다.
- 배치 정규화가 잘 작동하는 이유 중 하나가 바로 그 예제 결합이 만들어내는 노이즈, 즉 뜻하지 않은 정규화 효과다. 그래서 아무도 좋아하지 않으면서도 걷어내기 어려웠고, 층 정규화와 그룹 정규화가 대안으로 자리잡았다.
- 이 강의의 개선은 최적화 병목을 푼 결과다. 카파시는 배치 정규화를 넣어도 성적이 더 나아지지 않았다고 밝히며, 남은 병목은 글자 세 개만 보는 문맥 길이이고 이를 넘으려면 순환 신경망이나 트랜스포머가 필요하다고 말한다.
자주 묻는 질문
초기 손실값 3.29는 어떻게 나온 숫자인가?
다음에 올 수 있는 글자가 27개이고, 초기화 시점에는 어느 글자가 더 유력하다고 볼 근거가 없다. 따라서 각 글자의 확률은 27분의 1이 되어야 하고, 손실이 음의 로그 확률이므로 그 값은 3.29다. 실제로 27이 찍혔다는 것은 로짓이 극단적인 값을 갖고 있다는 뜻이다.
배치 정규화를 쓰면 앞 레이어의 편향은 왜 필요 없어지나?
배치 정규화가 평균을 빼는 과정에서 앞 레이어가 더한 편향이 그대로 상쇄되기 때문이다. 실제로 그 편향의 기울기를 찍어 보면 0이 나온다. 그래서 정규화 층 앞의 선형 층이나 합성곱 층에서는 편향을 아예 끄는 것이 낫고, 파이토치 ResNet 구현도 그렇게 되어 있다.
tanh 층의 이득 3분의 5는 어디서 나온 값인가?
카파시는 이 값의 수식적 유래를 찾아보려 했지만 알아내지 못했다고 강의에서 직접 밝힌다. 다만 선형 층과 tanh를 번갈아 쌓았을 때 표준편차가 0.65 부근, 포화도가 5% 안팎에서 안정된다는 것은 실험으로 확인했고, 이득이 1이면 활성값이 0으로 줄어들고 3이면 지나치게 포화된다.
학습률이 적절한지 어떻게 판단하나?
각 파라미터에 대해 실제 적용될 업데이트의 표준편차를 그 파라미터 값의 표준편차로 나누고 로그10을 취해 학습 내내 그려 본다. 대략 -3 근처면 적당하고, -4 아래로 내려가면 업데이트가 너무 작아 학습이 지나치게 느리다는 신호다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗