세 기법을 넣은 훈련
웜업, 코사인 감쇠, 클리핑은 한 걸음 안의 어디에 들어갈까요?
한 걸음
동작이 두 개 늘었습니다
8강의 네 동작은 그대로입니다. 맨 앞에 학습률 정하기가, 파라미터를 고치기 바로 앞에 그레이디언트 줄이기가 들어갑니다.
첫 동작
학습률은 걸음 번호로 정합니다
걸음마다 지금이 몇 걸음째인지만 보고 학습률을 계산합니다. 27걸음째까지는 2편의 웜업, 그 뒤로는 3편의 코사인 감쇠입니다.
그래프의 숫자는 2편과 3편의 예제 값입니다.
클리핑을 켜는 때
클리핑은 웜업이 끝난 뒤부터
웜업 동안에는 학습률이 낮아 한 걸음이 이미 작습니다. 그래서 클리핑은 28걸음째부터 켭니다.
켜져 있어도 그레이디언트의 크기가 1 이하인 걸음에서는 아무것도 하지 않습니다.
코드로는
세 줄이 더 들어갑니다
lr = initial_lr + …새로 · 웜업lr = min_lr + … cos(…)새로 · 감쇠loss.backward()③ 방향 찾기clip_grad_norm_(…)새로 · 클리핑optimizer.step()④ 고치기
코드의 이름은 외우지 않아도 됩니다. 노란 세 줄이 새로 들어갔다는 것만 보세요. 걸음 번호에 따라 위의 두 줄 가운데 하나로 학습률을 정합니다.
lr은 학습률(learning rate)을 줄인 이름이고, 점 세 개는 줄인 부분입니다. 파이토치라는 도구의 코드입니다.
실제 훈련의 숫자
최고 학습률은 0.001로 잡았습니다
2편과 3편의 숫자는 곡선 모양을 보려고 쓴 예제 값입니다. 실제 훈련에서는 최고 학습률을 0.01 대신 0.001로, 처음 학습률을 0.0001 대신 0.00001로 낮춰 잡았습니다.
최저 학습률은 예제와 같은 0.00001입니다. 135걸음, 웜업 27걸음도 그대로입니다.
다음 편