본문 바로가기

자연어 처리 과정

What is Learning Rate Warmup?

개요

Mini-batch SGD를 사용했을 때, Learning에 도움을 주었다고 하는 Learning rate warmup이 무엇인지 알아보자.

 

1. Learning rate warmup?

2. Learning rate warmup의 용법

3. 마무리

 

 

Learning rate warmup?

 

Learning rate warmup이 왜 필요한가?

Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour라는 논문에서 제시된 학습 방법 중 하나이다.

위의 논문을 작성한 연구진은 minibatch 학습을 할 때, Learning rate를 scaling하는 것에 있어서 효과적인 rule를 발견했다고 한다.

그 rule의 이름은 Linear Scaling Rule로, minibatch size가 k배 되어 커졌다면,

learning rate도 동일한 배수로 키워주어야 한다는 것이다.

 

하지만, 연구진은 이러한 rule이 network가 변함에 따라 쉽게 무너질 수 있음을 발견했다.

그래서 이러한 Linear scaling rule이 지켜질 수 있도록, Learning rate를 warmup해야 한다고 주장한다.

 

 

그래서 Learning rate warmup이 뭘까?

training의 초기에는 조금 작은 값의 learning rate를 사용하는 학습 기법이다.

 

이렇게 학습 초기에 우리가 설정한 learning rate보다 더 작은 값을 사용해줘야 하는 이유를

Bag of Tricks for Image Classification with Convolutional Neural Networks라는 논문을 작성한 연구진은 아래와 같이 정리했다.

즉, 학습 초기에 우리가 가지고 있는 가중치는 random values이기 때문에 우리가 도달해야 할 solution과는 거리가 멀다.

이때, 우리가 초기에 설정한 learning rate 즉, 센 learning rate 값을 주면 모델이 불안정해질 수 있고, 더 안 좋은 상황이라면 초반에 overfitting이 되어버릴 수 있다.

 

그래서, Learning rate warmup을 통해서 학습 초기에는 작은 값의 learning rate로 학습을 하다가,

학습이 안정화가 되면 learning rate를 다시 초기에 설정한 learning rate로 사용하는 학습 기법이다.

 

 

Learning rate warmup의 용법

 

Learning rate warmup의 종류

warmup을 할 학습 초기 기간을 5 epoch으로 가정

 

- Constant warmup: 학습이 시작하고 초반 5 epoch 동안에는 initial learning rate 보다 작은 값을 learning rate로 설정해서 5 epoch 동안 학습을 진행시킨다.

그리고 5 epoch이 끝나면 6 epoch부터는 initial learning rate로 돌아오도록 한다.

 

- Gradual warmup

i = current epochs or batches or etc

η = initial learning rate(target learning rate)

m = 몇 epoch 혹은 몇 batches 동안으로 warmup 기간을 설정할 것인지 즉, period. (여기서는 5 epoch)

 

Gradual warmup 수식 = iη/m

즉, gradual하게 warmup을 하면서 설정 기간, period가 끝나갈수록 initial learning rate에 수렴하는 warmup 기법이다.

 

만약, 초기 learning rate를 0.1, m을 5 epoch이라고 한다면,

 

epoch 1 lr:

1 * 0.1 * 0.2 = 0.02

epoch 2 lr:

2 * 0.1 * 0.2 = 0.04

epoch 3 lr:

3 * 0.1 * 0.2 = 0.06

epoch 4 lr:

4 * 0.1 * 0.2 = 0.08

epoch 5 lr:

5 * 0.1 * 0.2 = 0.1

 

 

Larger minibatch에서 learning rate warmup이 미친 영향(about training error)

주황: minibatch size 256

파랑: minibatch size 8192 (Larger minibatch)

 

-> Larger minibatch에서 더 좋은 학습이 진행됨을 확인할 수 있다.

* 추가: Bag of Tricks for Image Classification with Convolutional Neural Networks 연구진의 learning rate scaling

 

마무리

오늘은 이렇게 Learning rate warmup에 대해 알아봤다.

CNN 그리고 Larger minibatch에서 warmup 기법이 도움이 된다는 것을 알 수 있었다.

이를 NLP에서 적용해도 학습에 도움을 줄지 궁금해졌다.

 

 


Reference

https://better-tomorrow.tistory.com/entry/Learning-rate-Warmup

https://stackoverflow.com/a/55942518

'자연어 처리 과정' 카테고리의 다른 글

Contiguous는 도대체 뭘까?  (0) 2023.01.18
Pruning이란?  (0) 2023.01.16
Learning Rate Schedulers(PyTorch)  (0) 2023.01.16
torch.gather  (0) 2023.01.16
Confusion matrix  (0) 2023.01.13