Deep learning/이론(hands on machine learning)

15. 학습률 스케줄링

jwjwvison 2021. 6. 7. 18:24

 좋은 학습률을 찾는 것이 매우 중요하다. 학습률을 너무 크게 잡으면 훈련이 실제로 발산할 수 있다. 너무 작게 잡으면 최적점에 수렴하겠지만 시간이 매우 오래 걸릴 것이다. 만약 조금 높게 잡으면 처음에는 매우 빠르게 진행하겠지만 최적점 근처에서는 요동이 심해져 수렴하지 못할 것이다.

 일정한 학습률보다 더 나은 방법이 있다. 큰 학습률로 시작하고 학습 속도가 느려질 때 학습률을 낮추면 최적의 고정 학습률보다 좋은 솔루션을 더 빨리 발견할 수 있다. 훈련하는 동안 학습률을 감소시키는 전략에는 여러 가지가 있다. 이런 전략을 학습 스케줄이라고 한다.

 

 케라스에서 거듭제곱 기반 스케줄링이 가장 구현하기 쉽다. 옵티마이저를 만들 때 decay 매개변수만 지정하면 된다.

 

 decay는 s(학습률을 나누기 위해 수행할 스텝 수)의 역수이다. 케라스는 c를 1로 가정한다.

 그 다음 이 스케줄링 함수를 전달하여 LearningRateScheduler 콜백을 만든다. 그리고 이 콜백을 fit() 메서드에 전달한다.