가중치 초기화: 신호가 커지지도 사라지지도 않게

자주 하는 실수와 요약

자주 하는 실수

실수 나온 문제 바로잡는 법
층마다 조금씩 어긋나도 더해져서 조금 어긋날 뿐이라고 봄 1 층마다의 배율은 곱해진다. 층이 깊을수록 한 층의 배율을 1에 더 가까이 맞춰야 한다
항 n개를 더하니 가중치를 1/n로 나눈다고 봄 2 서로 독립인 항 n개의 합은 √n배로만 흔들린다. 표준편차를 1/√n로 잡는다
가중치의 표준편차를 폭과 상관없는 숫자 하나로 정함 2 같은 0.05도 폭에 따라 소실·폭발이 갈린다. 폭에 맞춘 규칙(c/√n)으로 정한다
가중치를 모두 같은 값으로 시작해도 크기만 맞으면 된다고 봄 2 칸들이 모두 같은 값이 되어 하나뿐인 것과 같다. 무작위로 뽑아 칸들을 서로 다르게 만든다
균등분포 U(−a, a)의 표준편차를 a로 봄 3 표준편차는 a/√3이다. nn.Linear 기본값의 배율은 1/√3이다
시그모이드는 가중치를 네 배 키우면 그래디언트가 지켜진다고 봄 4 키우면 합이 포화되어 미분이 더 작아진다. 시그모이드는 신호와 그래디언트를 함께 지키는 배율이 없다
팬인에 맞춘 초기화가 거꾸로 가는 그래디언트도 지킨다고 봄 5 거꾸로는 팬아웃이 정한다. 폭이 다르면 글로로 초기화처럼 가운데를 잡는다
손실이 조금씩 내려가면 모든 층이 배우고 있다고 봄 6 층마다 그래디언트 크기를 찍어 본다. 그래디언트가 사라진 아래층은 처음 값 그대로 얼어 있다
ReLU 는 미분이 1이라 르쿤 초기화로 충분하다고 봄 7 ReLU 는 분산을 반으로 깎는다. 게인 √2 로 되돌린다
게인은 활성화 함수의 모양(평균, 대칭)을 따진다고 봄 8 게인은 제곱 평균 E[φ(z)²] 하나만 본다. 절댓값 함수도 배율은 1이다
tanh 는 0에서 미분이 1이라 배율 1이 맞다고 봄 9 배율 1이면 신호가 천천히 사그라들고, 5/3이면 신호는 지키되 그래디언트가 조금씩 커진다. 둘을 함께 지키는 배율은 없다
평균 크기(분산)를 지키면 모든 방향이 지켜진다고 봄 10 넓이가 같아도 모양은 얼마든지 납작해진다. 모든 방향을 지키려면 특잇값이 모두 1이어야 한다
한 장이 평균을 지키면 여러 장의 곱도 지킨다고 봄 11 늘이는 방향이 겹치면 곱하면서 틀어진다. 직교 행렬만 몇 장을 곱해도 모든 방향을 지킨다
무작위 벡터 하나의 길이가 지켜지면 그래디언트가 살아 있다고 봄 12 몇몇 방향이 길이를 떠맡고 나머지는 사라질 수 있다. 특잇값 분포를 본다
잔차 연결을 넣으면 크기 문제가 저절로 풀린다고 봄 13 곁가지 분산이 복리로 쌓인다. 곁가지를 층 수에 맞춰 1/√D로 줄인다
곁가지를 0으로 두는 것이 가장 안전하다고 봄 14 곁가지가 0이면 배울 수 없다. 작게 시작하되 학습할 수 있게 둔다
이론의 경계값으로 맞추면 실제로도 경계값이 나온다고 봄 14 폭이 유한해 생기는 배율의 오차도 층마다 곱해진다. 경계에서 여유를 둔다
깊은 트랜스포머도 모든 가중치를 같은 표준편차로 뽑으면 된다고 봄 15 곁가지 N개가 줄기에 쌓인다. 곁가지의 출력 쪽 가중치를 1/√N로 줄인다

요약

이 장에서 한 일을 정리해 보자. 신경망은 앞으로 갈 때도 거꾸로 갈 때도 층마다 행렬을 곱하는 사슬이라, 학습을 시작하는 순간의 무작위 가중치가 층마다의 배율을 정한다. 폭 n인 층에서 가중치의 표준편차를 c/√n으로 잡으면 층 하나를 지날 때 신호의 표준편차가 c배가 되고, 층 D개를 지나면 c^D배가 된다. c = 1, 곧 표준편차 1/√n이 1998년 르쿤과 동료들이 적은 처방이고, 신호의 분산을 지키는 분산 보존이다. n이 아니라 √n으로 나누는 것은 서로 독립인 항 n개의 합이 √n배로만 흔들리기 때문이다.

거꾸로 가는 그래디언트는 층마다 자코비안의 전치를 곱받고, 그 안에는 가중치와 함께 활성화 함수의 미분이 들어 있다. 시그모이드의 미분은 1/4을 넘지 않아 르쿤 초기화로도 그래디언트가 층마다 0.24배쯤 줄어 스무 층 뒤 10⁻¹²이 된다. 거꾸로 가며 이렇게 줄어드는 것이 그래디언트 소실이고, 2006년 이전에 깊은 망이 배워지지 않던 것은 여러 원인 가운데 이 소실 때문이기도 했다. 폭이 층마다 다르면 앞으로는 팬인이, 거꾸로는 팬아웃이 배율을 정하므로 글로로·벤지오는 분산을 2/(팬인 + 팬아웃)으로 두었다.

활성화 함수는 신호의 분산을 깎거나 늘린다. ReLU는 음수 절반을 지워 분산을 반으로 깎으므로 게인 √2를 곱한 허 초기화가 필요하고, 그렇지 않으면 층마다 1/√2배씩 줄어 30층 망이 학습을 멈춘다. 게인은 활성화 함수의 제곱 평균만으로 정해지고, tanh처럼 신호와 그래디언트를 함께 지키는 배율이 없는 활성화 함수도 있다.

분산을 지킨다는 것은 평균적인 방향의 길이를 지킨다는 뜻일 뿐이다. 가우스 행렬을 스무 장 곱하면 무작위 벡터의 길이는 지켜도 특잇값의 4분의 3이 0.1 아래로 내려간다. 직교 초기화는 특잇값이 모두 1이라 몇 장을 곱해도 모든 방향의 길이를 지킨다. 잔차 연결은 층의 입력을 그대로 출력에 더해 자코비안에 단위 행렬을 넣고, 곁가지를 1/√D로 줄이면 층이 몇 개든 분산이 √e배 안에 머문다. GPT-2가 잔차 층의 가중치에 1/√N을 곱한 것도 같은 계산이다.

막힌 곳

이 장의 모든 계산은 학습을 시작하는 순간에 대한 것이었다. 처음 스텝에서 신호와 그래디언트의 크기가 맞으면, 그다음은 경사하강이 알아서 할까? 학습률을 너무 크게 잡으면 첫 스텝부터 가중치가 초기화가 맞춰 둔 크기를 훌쩍 벗어날 것이다. 그렇다면 학습률은 어디까지 키워도 되고, 그 경계는 무엇이 정할까?

그리고 폭에 맞춰 1/√n으로 나눈 초기화는 폭이 커져도 처음 출력의 크기를 같게 해 준다. 그런데 폭이 커지면 한 칸의 합에 더해지는 항도 많아진다. 같은 학습률로 512개 가중치를 한꺼번에 조금씩 움직였을 때와 8,192개를 움직였을 때, 출력이 바뀌는 크기도 같을까?