2017년


[Abstract]

이 논문에서는 cyclical learning rate를 제시하는데, 이 방법은 적당한 boundary값 사이를 왔다갔다 한다. 이 적당한 boundary를 찾는 방법 또한 제시하는데, learning rate을 몇 epoch동안 계속 늘려보는 방법으로 찾을 수 있다.

[1] Introduction

이 논문에서는 훈련 중에 learning rate을 계속 바꾸는 것이 훈련에 이득이라는 것을 증명했다. 또한 CLR을 이용하면 좋은 성능을 위해서 lr을 튜닝하는 작업도 없앨 수 있다. 그리고 adaptive lr을 사용하면 들여야 하는 추가 계산도 필요하지 않다.

Adaptive learning rates

adaptive lr은 CLR의 경쟁자로 볼 수 있다. adaptive lr은 global lr대신 local adaptive lr에 의존하는 대신, 많은 계산량이 필요하다.

AdaGrad는 gradient로부터 lr을 예측하는 초기 adaptive lr 방법이다. RMSProp은 해당 weight에 사용되었던 최근 gradient를 평균내서 local adaptive lr을 계산하는 방법이다. 이후에는 gradient의 Hessian의 대각성분을 추정하는 방법이 제안되었으며, 해당 논문에서는 또한 lr을 크게 하는 것이 유의미하다는 것을 보였다. AdaDelta는 AdaGrad를 개선시킨 방법이다. 더 최근에는 AdaSecant방법이 제안되었는데, 이는 gradient의 root mean square 통계와 분산을 사용한 방법이다. ESGD는 RMSProp이 편향된 추정을 제공한다는 점을 개선한 방법이다. 이후 AdaGrad와 RMSProp을 합친 방법인 Adam이 나왔다.

CLR과 adaptive lr은 완전히 다른 정책을 사용하고, 또한 둘은 합쳐질 수도 있다. CLR은 SGDR과 비슷하기도 하다.

[3] Optimal Learning Rates

[3.1] Cyclical Learning Rates

CLR의 핵심은 lr을 크게 하는 것이 단기로 보면 좋지 않지만 장기적으로는 이득이 된다는 것이다. 최댓값과 최솟값만 정해놓고 그 사이를 왔다갔다 하는 여러 함수로 실험해 보았는데 최종적으로는 삼각형 모양의 linear schedule을 선택했다. 이유는 이 아이디어를 따르는 가장 단순한 모양이기 때문이다.

이전의 한 논문에서 훈련을 어렵게 하는 이유 중 하나가 안장점 때문이라는 연구가 있었는데, 안장점에서는 gradient가 작으므로 lr을 높임으로써 학습을 빠르게 할 수 있다. 따라서 CLR이 잘 작동하는 것이다. 또한, 최적의 lr은 bound 안에 있을 것이고 최적에 가까운 lr이 학습 중에 사용되기 때문에 잘 작동하는 것이라는 이유도 있다.

triangular 방법 말고도 다른 두가지의 방법이 이 논문에서 논의된다. 하나는 triangular2 방법으로, triangular과 거의 비슷하지만 각 cycle이 끝날 때마다 lr의 차이가 반으로 줄어드는 방법이다. exp_range는 각 boundary가 $\gamma^{\text{iteration}}$만큼씩 줄어드는 방법이다.

[3.2] How can one estimate a good value for the cycle length?

실험상 stepsize의 2~8epoch로 하면 좋았다.

[3.3] How can one estimate reasonable minimum and maximum boundary values?

최적의 bound를 찾으려면 몇 epoch를 lr을 크게 하면서 돌려보면 된다. 정확도가 증가하는 lr과 감소하는 lr을 각각 하한과 상한으로 잡으면 된다. 이 방법은 최적의 LR과 최적의 LR범위를 알려준다. 왜그런지는 모르겠음

[4] Experiments

[4.1] CIFAR-10 and CIFAR-100

우선 CIFAR-10 데이터셋을 가지고 실험을 했는데, triangular2 방법을 가지고 baseline의 정확도와 같은 정확도(81.4%)를 달성하는 데에 반복이 훨씬 덜 소요됐다.

CLR이 잘되는 이유를 lr이 감소하는 부분 때문이라고 생각하고 감소하기만 하는 schedule로 실험을 해봤는데, 결과는 증가하는 부분과 감소하는 부분 둘 다가 있어야 더 좋은 성능을 갖는다는 것을 보였다. 마찬가지로, Caffe에 구현되어 있는 exp와 exp_range를 비교했는데 exp_range의 성능이 더 좋았다. 이 또한 진동하는 lr이 더 효과가 있음을 보여준다. CLR은 또한 batch normalization과도 결합될 수 있는데, 이때도 CLR을 적용한 것이 결과가 더 좋았다.

이후에는 여러 다른 모델을 사용해서 CIFAR-10과 CIFAR-100에 실험했는데, ResNet, Stochastic Depth network (SD), DenseNet을 비교했다. 이들 모두 CLR을 사용해서 결과가 더 좋아지거나 적어도 비슷한 결과가 나왔다. 따라서 CLR을 사용하는 것이 효과가 있다는 것을 보여준다.

[4.2] ImageNet

이 실험에서는 Caffe에서 제공하는 AlexNet을 baseline으로 잡고 실험했다. CLR을 사용한 것과 사용하지 않은 것이 별로 차이가 없ㅇ었는데, 이를 통해 원래의 baseline lr이 잘 정해졌다는 것을 알 수 있다. GoogleNet에서도 마찬가지로 CLR을 사용한 것이 조금 더 성능이 좋았다.