좋은 학습률을 찾는 것이 매우 중요하다. 학습률을 너무 크게 잡으면 훈련이 실제로 발산할 수 있다. 너무 작게 잡으면 최적점에 수렴하겠지만 시간이 매우 오래 걸릴 것이다. 만약 조금 높게 잡으면 처음에는 매우 빠르게 진행하겠지만 최적점 근처에서는 요동이 심해져 수렴하지 못할 것이다.
일정한 학습률보다 더 나은 방법이 있다. 큰 학습률로 시작하고 학습 속도가 느려질 때 학습률을 낮추면 최적의 고정 학습률보다 좋은 솔루션을 더 빨리 발견할 수 있다. 훈련하는 동안 학습률을 감소시키는 전략에는 여러 가지가 있다. 이런 전략을 학습 스케줄이라고 한다.
케라스에서 거듭제곱 기반 스케줄링이 가장 구현하기 쉽다. 옵티마이저를 만들 때 decay 매개변수만 지정하면 된다.
decay는 s(학습률을 나누기 위해 수행할 스텝 수)의 역수이다. 케라스는 c를 1로 가정한다.
그 다음 이 스케줄링 함수를 전달하여 LearningRateScheduler 콜백을 만든다. 그리고 이 콜백을 fit() 메서드에 전달한다.
'Deep learning > 이론(hands on machine learning)' 카테고리의 다른 글
16. 규제를 사용해 과대적합 피하기 (0) | 2021.06.07 |
---|---|
14. 고속 옵티마이저 (0) | 2021.06.06 |
13. 사전훈련된 층 재사용 하기 (0) | 2021.06.06 |
12. 배치 정규화 (0) | 2021.06.03 |
9. 학습률, 배치 크기 (0) | 2021.06.02 |