Don't Decay the Learning Rate, Increase the Batch Size
by Yeonjee Jung
[Abstract]
이 논문에서는 learning rate를 줄이는 것 대신 batch size를 훈련 동안 증가시키면서 원래와 비슷한 learning curve를 얻는 방법에 대해 소개한다. 이 방법은 SGD, SGD with momentum, Nesterov momentum, and Adam. 같은 epoch 수를 사용하면 같은 테스트 정확도가 나오지만, 파라미터 업데이트를 덜 하면 더 병렬화가 가능하고 학습 시간이 덜 걸린다. 따라서 learning rate $\epsilon$을 크게 하고, 그에 비례하게 batch size $B$도 늘일 수 있다. 결론적으로 momentum coefficient $m$을 늘리고 $B\propto\frac{1}{1-m}$로 batch size를 증가시킬 수 있다. 그러나 이것은 약간의 테스트 정확도 손실을 초래한다. 이 논문의 방법은 30분 안에 ImageNet을 ResNet-50을 이용해 76.1%의 검증 정확도가 나오게 학습했다.
[1] Introduction
[2] Stochastic Gradient Descent and Convex Optimization
SGD에는 noise가 들어가기 때문에 $\frac{dw}{dt}=\frac{dC}{dw}+\eta(t)$로 모델링된다. $\eta{(t)}$가 Gaussian random noise이다. noise scale $g=\epsilon(\frac{N}{B}-1)$로 정의되는데, 이는 학습동안의 noise를 제어한다. learning rate $\epsilon$을 줄이면 이 noise scale을 줄일 수 있는데, 줄이지 않고 $B$를 늘려도 같은 효과를 얻을 수 있다. 이 논문의 방법은 $B$를 $\frac{N}{10}$까지 증가시킨 이후에 $\epsilon$을 줄이는 방법을 사용한다.
[3] Simulated Annealing and the Generalization GAP
simulated annealing은 처음 noise는 넓은 범위를 탐색할 수 있게 해주고, 좋은 지점에 다다르면 더 깊숙히 들어갈 수 있게 한다. 아마 이것이 SGD의 learning rate decay가 잘 되는 이유일 것이다.
[4] The Effective Learning rate and the Accumulation Variable
최근 연구자들은 그냥 SGD대신 momentum을 사용한 SGD를 많이 사용한다. momentum 계수 $m$이 $0$으로 가면 noise scale이 작아진다. 한 연구에서 제안된 learning rate를 늘리고 동시에 $B\propto \frac{1}{1-m}$를 늘이는 것은 효과가 있었지만, momentum coefficient를 늘리는 것은 테스트 정확도의 손실을 가져왔다. 사실 더 큰 $m$에서 학습하려면 epoch를 더 추가해야 한다. 또한 $m$이 커지면 이전 gradient를 잊어버리는 시간이 더 늘어나는데, 이것이 noise scale이 줄어드는 데에 문제를 가져올 수 있다.
[5] Experiments
[5.1] Simulated Annealing in a Wide ResNet
CIFAR-10과 “16-4” wide ResNet을 사용하였다. learning rate를 줄이는 것과 batch size를 늘리는 방법이 같다는 것을 보이기 위해, learning rate을 줄이는 방법, batch size를 늘리는 방법, hybrid 방법을 비교하였다. 결과는 세 learning curve가 거의 똑같았다. 따라서 learning rate 자체가 줄어들어야 하는 대상이 아니라, noise scale이 줄어들어야 한다는 것을 알았다. 게다가, batch size를 늘리는 방법이 파라미터 업데이트를 훨씬 덜 하고 같은 정확도를 얻을 수 있었다. 또한 다른 optimizer에도 실험하였는데 같은 결과를 얻을 수 있었다.
[5.2] Increasing the Effective Learning rate
이 논문의 두번째 목표는 파라미터 업데이트를 줄이는 것이다. momentum coefficient $m$을 크게 하는 방법이 파라미터 업데이트 수가 가장 적었고, 초반 learning rate를 크게 하는 방법이 그 다음으로 파라미터 업데이트 수가 적었다. 하지만 [4]에서 $m$을 키우면 epoch가 더 추가되어야 한다고 했는데, 그럼 시간은 더 걸리는게 아닌가?
[5.3] Training ImageNet in 2500 Parameter Updates
이 실험은 Training ImageNet in 1 Hour에서의 세팅을 따라했지만, warm-up phase는 적용하지 않았다. 또한 ResNet 대신 더 강력한 Inception-ResNet-V2를 사용했다. 이전 논문에서 이미 learning rate를 maximum까지 높였기 때문에 이 논문에서는 파라미터 업데이트를 줄이기 위해 $m$을 크게 했다. 결과는 예상대로 더 큰 $m$을 사용할 때의 파라미터 업데이트가 더 줄었다.
[5.4] Training ImageNet in 30 Minutes
후반 epoch로 갈수록 파라미터 업데이트가 적기 때문에 시간이 더 적게 걸렸다. 초반 30 epoch와 후반 60 epoch가 각각 15분 이내로 걸렸다.
[7] Conclusions
learning rate를 줄이는 방식과 같은 효과를 batch size를 늘리면서도 낼 수 있다.
실험을 굉장히 많이 하고 체계적으로 잘 설계해서 한 논문인듯. 이 논문의 related works 부분에 지금까지 읽었던 모든 논문들이 다 등장.. 새로운 것을 만들어 내는 것 뿐만 아니라 원래 있던 것을 개선하는 것, 더 효율적인 방향으로 가게 하는 것도 논문이 될 수 있다.
Subscribe via RSS