적응 학습률: AdaGrad 에서 AdamW 까지

자주 하는 실수와 요약

자주 하는 실수

실수 나온 문제 바로잡는 법
차이에 비례해 고치는 규칙(경사하강)이면 재료가 몇 개든 잘 맞춰진다고 봄 1 가장 예민한 재료가 비율의 상한을 정하고, 둔한 재료는 그 작은 비율로 기어간다. 좌표마다 지나온 크기로 나누면 첫 스텝이 고르게 나온다
비탈이 가파르면 AdaGrad 도 더 많이 간다고 봄 2 AdaGrad 의 스텝은 그래디언트의 크기와 상관없이 η/√k 로 줄어든다. 스텝 수가 100배면 간 거리는 10배
드문 특징은 어떤 옵티마이저로도 적게 배운다고 봄 3 경사하강은 받은 횟수에 비례해 배우지만, AdaGrad 는 횟수의 제곱근에 비례해 배운다. 드문 좌표는 나올 때 크게 고친다
같은 크기로만 고치면(부호만 쓰면) 안전하다고 봄 4 평균이 0인 그래디언트에서도 횟수가 많은 쪽으로 계속 밀린다. 나누는 수를 이웃한 스텝끼리 비슷하게 해야 한다
RMSProp 은 언제나 경사하강보다 덜 흔들린다고 봄 5 스텝이 학습률 크기로 남아, 노이즈가 작을 때는 오히려 더 흔들린다. 손실의 바닥에 앉히려면 학습률 스케줄이 따로 필요하다
이동 평균이면 튄 그래디언트를 곧바로 잊는다고 봄 6 실제 학습률이 돌아오는 데 기억 길이 1/(1 − β)의 네 배 가까이에서 여덟 배가 걸린다. AdaGrad 는 영영 돌아오지 않는다
두 이동 평균이 모두 0에서 시작하면 나눌 때 편향이 지워진다고 봄 7 기억 길이가 다르면 분모가 늦게 차올라 나눈 값이 커진다. 각각 1 − βᵏ 로 나눠 바로잡는다
편향 보정을 빼도 처음 몇 스텝만 크다고 봄 8 β₂ = 0.999 에서 보정 없는 스텝은 12스텝째 학습률의 6.57배까지 커지고 1.1배 아래로 내려오는 데 1751스텝이 걸린다
Adam 은 그래디언트 크기와 언제나 무관하다고 봄 9 그래디언트가 ε 근처로 작아지면 스텝이 줄어든다. 「무디다」는 그래디언트가 ε 보다 충분히 클 때의 말이다
이동 평균의 비율이 클수록 튄 값을 무시한다고 봄 10 조금 반영하는 대신 오래 들고 간다. 반으로 잊는 데 0.69/(1 − β) 스텝
그래디언트의 부호가 나온 횟수로 가장 좋은 자리를 정함 11 가장 좋은 자리는 평균 그래디언트가 정한다. 기억이 짧은 Adam 은 드문 큰 그래디언트를 잊어 정반대 끝으로 갈 수 있다
ε 는 0으로 나누는 것만 막으니 값이 상관없다고 봄 12 ε 는 「이보다 작은 그래디언트는 작게 걷는」 문턱이다. 큰 모델에서는 그래디언트의 RMS 가 기본값 10⁻⁸ 에 닿는다
바쁜 통장을 봐주는 수수료 규칙이 공평하다고 봄 13 수수료를 움직임의 크기로 나누면 조용한 통장이 과하게 떼인다. L2 를 Adam 안에 넣으면 쉬는 가중치가 과하게, 바쁜 가중치가 거의 안 줄어든다
AdamW 의 λ 를 손실에 더한 페널티의 세기로 읽음 14 L2 는 손실을 바꿔 목적지를 옮기고, 떼어 낸 감쇠는 스텝에 끼어든다. λ 는 「스텝마다 가중치를 얼마나 줄이나」다
weight decay 0.1 이면 스텝마다 10% 줄어든다고 봄 15 파이토치의 AdamW 는 스텝마다 1 − ηλ 를 곱한다. 학습률 3 × 10⁻⁴ 면 시간 척도가 33,333스텝이다. 구현마다 λ 에 학습률을 곱하는지 본다
꼭지마다 같은 폭으로 돌리는 규칙이면 어떤 수도꼭지든 빨리 맞춘다고 봄 16 예민함이 꼭지 하나하나가 아니라 두 꼭지를 함께 돌리는 방향에 있으면, 꼭지마다 따로 재는 규칙은 그 방향을 보지 못한다
그릇을 돌려도 Adam 의 스텝 수는 같다고 봄 17 Adam 은 좌표마다 따로 나누므로 곡률이 좌표축에서 어긋나면 그만큼 잡지 못한다. 45°에서 223스텝이 2820스텝이 된다
v 로 나누는 Adam 이 대각 피셔로 나눈 자연 그래디언트라고 봄 18 Adam 은 제곱근으로 나누고, 그 v 는 데이터 정답으로 만든 경험적 피셔다. 피셔 정보와 같아지는 것은 손실의 바닥 근처뿐이다

요약

이 장에서 한 일을 정리해 보자. 경사하강의 느림은 학습률 하나를 모든 파라미터가 나눠 쓴다는 데서 왔다. AdaGrad 는 좌표마다 지나온 그래디언트의 제곱을 모두 더해 그 제곱근으로 나눴다. 그릇의 그래디언트는 곡률 × 거리라서, 이렇게 나누면 좌표마다 곡률이 지워지고 첫 스텝이 모든 좌표에서 학습률만큼 고르게 나온다. 곡률이 1과 100인 그릇에서 경사하강이 688스텝 걸리던 것을 AdaGrad 는 열세 스텝에 끝냈고, 드물게 나오는 특징은 나올 때 크게 고쳤다. 그러나 합은 줄지 않아 학습률이 1/√k 로 줄기만 하고, 처음의 큰 그래디언트를 끝까지 기억했다.

힌턴이 2012년 강의에서 소개한 RMSProp 은 합을 이동 평균으로 바꿔, 오래된 그래디언트가 β 배씩 잊히므로 손실의 바닥이 옮겨 가도 곧 따라간다. 대신 스텝이 학습률 크기로 남아 학습률을 따로 줄여야 바닥에 앉는다. 킹마와 바의 Adam 은 여기에 그래디언트의 이동 평균(모멘텀)을 더하고, 두 평균이 0에서 시작한 편향을 1 − βᵏ 로 나눠 바로잡았다. Adam 의 한 스텝은 대략 학습률 크기이고, 그래디언트가 ε 근처로 작아질 때만 빼면 그래디언트의 크기에 무디다.

β₂ 는 그래디언트 제곱의 기억 길이 1/(1 − β₂)를 정한다. 레디와 동료들은 기억이 짧은 Adam 이 드물게 오는 큰 그래디언트를 잊어 볼록한 문제에서도 가장 나쁜 자리로 갈 수 있음을 보이고, 지나온 v 의 최댓값으로 나누는 AMSGrad 를 냈다. 큰 언어 모델은 반대로 β₂ 를 0.95로 줄여 튄 그래디언트를 빨리 잊는 설정을 골랐다. 가중치 감쇠를 Adam 의 그래디언트에 더하면(L2) 감쇠도 √v 로 나뉘어 지나온 그래디언트가 큰 가중치는 덜, 작은 가중치는 더 줄어든다. 로시칠로프와 후터의 AdamW 는 감쇠를 그래디언트에서 떼어 파라미터에 직접 곱해, 모든 가중치를 스텝마다 1 − ηλ 배로 줄인다.

Adam 의 v 는 데이터의 정답으로 만든 그래디언트 제곱 평균, 곧 경험적 피셔의 대각선이다. 손실의 바닥 근처에서는 곡률을 따라가지만 바닥에서 먼 동안은 곡률과 거리가 섞이고, Adam 은 그 제곱근으로 나누므로 조건수를 1이 아니라 그 제곱근 정도로 줄인다. 또 대각선만 보므로 곡률이 좌표축에서 어긋나면 잡지 못하니, Adam 은 곡률을 흉내 내지만, 반쯤만, 조건이 맞을 때만 흉내 낸다.

막힌 곳

돌린 그릇에서 Adam 이 놓친 것은 헤시안의 대각선 밖 값이었다. 두치와 동료들은 처음에 지나온 그래디언트로 행렬 전체를 만들었다가, d × d 행렬의 제곱근을 스텝마다 구할 수 없어 대각선만 남겼다. 파라미터가 1억 개면 행렬은 10¹⁶ 칸이다. 대각선 하나보다는 많이, 그러나 행렬 전체보다는 훨씬 적게 담아서 곡률이 좌표축과 어긋난 방향까지 잡을 수는 없을까? 신경망의 층 하나는 원래 행렬 모양의 가중치이니, 그 모양을 살려 작은 행렬 몇 개로 나눠 담을 수는 없을까?

그리고 경험적 피셔와 피셔 정보의 차이도 남는다. 데이터의 정답으로 만든 그래디언트 제곱이 곡률을 닮지 않았다면, 곡률을 값싸게 어림하는 다른 재료는 무엇일까? 지나온 그래디언트들이 바뀌어 온 모양에서 곡률을 거꾸로 읽어 낼 수는 없을까?