ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 최적화(Optimization) (3) | 패스트캠퍼스 챌린지 29일차
    딥러닝 2022. 2. 21. 20:28

    Learning rate는 고정된 값을 취할수도 있지만, 이를 줄여가면서(decaying) 빠른 학습을 도모하는 것이 일반적인 듯 하다. Learning rate를 줄이는 방법은 AdaGrad, RMSProp, Adam과 같은 adaptive learning rate 방식을 취한 SGD를 사용하는 것도 방법이지만, schedule을 통해 직접 정해 주는 것도 방법이다. SGD에 대해 설명한 지난 글에서 알고리즘 부분의 노트 필기에서 learning rate가 scheduled learning rate임을 살펴볼 수 있다. 이렇듯 스케쥴링을 통해 learning rate를 점차 줄여줄 수 있는데, 이 방식에는 에폭 기반과 스텝 기반이 있다. 에폭(epoch)과 스텝(step)은 딥러닝 커뮤니티에서 종종 혼용되어 사용되는 용어인데, 에폭은 전체 데이터를 전부 도는 것을 한 에폭으로, 한 스텝 학습했다는 것은 한 번 경사 업데이트를 시켰다는 것을 뜻한다. 에폭 기반은 에폭에 따라 서서히 줄여가는 방식이며, 스텝 기반은 특정 스텝이 만족하면 drop 시키는 방식이다. 

    반대로 learning rate를 늘리는 것이 필요할 때도 있다. Learning rate warm up은 learning rate decay가 진행되기 이전, 학습 초기에 learning rate를 서서히 올리는 기법이다. 이는 경험적으로 성능이 좋은 것으로 밝혀져 있다. 그 이유는 분명하지 않지만, Adam이 초기 mini-batch에서 분산이 큰 gradient를 가진다는 점 때문에 local optima에 빠지는 것을 해결하는 듯이 보인다. 즉, 초기에 gradient 분산이 클 때에 작은 학습률을 적용하여 학습을 적게 진행하는 것이다. 이러한 점에서 착안하여 Rectified Adam(RAdam)이라는, 분산에 따라 learnign rate 업데이트를 켰다가 끄는 방식도 제안되었다. RAdam의 경우 이러한 방식을 통해 learning rate와 상관 없이 준수한 성능을 보인다는 큰 장점이 있지만, 아직까지 학계에서는 활발하게 사용되지는 않는 것 같다.

    이러한 최적화 과정을 돕는 다른 방법은 정규화Normalization이다. 트깋 배치 정규화는 배치 weight 및 layer output을 정규화한다. 이를 통해 내부 공변량 변화라는 문제를 해결할 수 있따. 이 문제는 레이어를 통과할 때 이전 layer의 parameter 변화로 해당 레이어의 입력분포가 바뀌는 현상을 뜻하며, learning rate 등의 hyperparameter의 조정은 이런 문제 때문에 필요로 한다. Normalization은 mini batch 단위가 아닌 layer, group 등을 단위로 할 수 있으며, 이 경우 배치 사이즈와 성능이 관련이 없다는 장점이 있다. 


    본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다. https://bit.ly/37BpXiC

    댓글

Designed by Tistory.