그레이디언트 클리핑

학습률을 잘 정해 두면 한 걸음이 갑자기 커질 일은 없을까요?

한 걸음의 크기

고치는 양은 두 가지가 정합니다

가장 단순하게 보면, 고치는 양은 학습률에 그레이디언트를 곱한 값입니다. 그레이디언트는 8강에서 본 대로 손실 비탈의 방향과 가파른 정도를 알려 주는 숫자입니다.

막대 길이는 예시 값입니다. 실제 훈련에 쓰는 계산은 조금 더 복잡하지만 원리는 같습니다.

해법

그레이디언트에 상한을 둡니다

비탈이 절벽처럼 가파른 곳에서는 그레이디언트가 갑자기 커집니다. 그래서 크기에 상한을 두고, 넘으면 줄입니다. 이것이 그레이디언트 클리핑입니다.

클리핑(clipping)은 넘치는 부분을 잘라 낸다는 뜻입니다. 모양을 보인 그림입니다.

1단계 · 크기 재기

숫자 여러 개를 길이 하나로 합칩니다

그레이디언트는 파라미터마다 하나씩 있는 숫자 묶음입니다. 줄이려면 먼저 묶음 전체가 얼마나 큰지를 숫자 하나로 나타내야 합니다. 숫자가 넷뿐인 예에서는 5입니다.

계산은 그림대로 각각 제곱해 더하고 제곱근을 씌웁니다. 제곱근은 제곱하면 그 수가 되는 수라서, 5 × 5 = 25이니 25의 제곱근은 5입니다.

2단계 · 줄이기

상한을 넘으면 같은 수로 나눕니다

상한은 1로 정했습니다. 크기 5가 상한을 넘었으니 네 숫자를 모두 5로 나눕니다. 그러면 크기가 꼭 1이 됩니다.

나눈 숫자로 앞 장처럼 다시 재면 1이 나옵니다. 크기가 1 이하일 때는 손대지 않습니다.

달라지지 않는 것

방향은 그대로입니다

숫자 묶음은 화살표로 볼 수 있습니다. 모두 같은 수로 나눴기 때문에 어느 쪽으로 고칠지는 바뀌지 않고, 한 번에 고치는 양만 줄어듭니다.

숫자 네 개를 화살표 하나로 그린 것은 모양을 보이기 위한 것입니다.

실제 모델에서는

가장 큰 값이 0.0630에서 0.0276으로

8강에서 쓴 모델인 GPT에, 훈련하기 전 상태로 묶음 하나를 넣어 그레이디언트를 구했습니다. 전체 크기가 약 2.28이어서 모든 숫자를 2.28로 나눴고, 가장 큰 값도 0.0630에서 0.0276이 됐습니다.

그레이디언트 숫자는 파라미터 수와 같은 1억 6천만 개입니다. 2.28은 0.0630 ÷ 0.0276으로 직접 계산한 값입니다.

다음 편

이제 세 가지를 훈련의 한 걸음 안에 넣을 차례입니다

5편세 가지를 어디에 넣을까? 14강 목록