인프런 커뮤니티 질문&답변

김성웅님의 프로필 이미지
김성웅

작성한 질문수

딥러닝 CNN 완벽 가이드 - Fundamental 편

학습율(Learning Rate) 동적 변경에 따른 모델 성능 비교

ReduceLROnPlateau 관련 질문드립니다.

작성

·

489

0

안녕하세요 . 강사님 항상 감사드립니다.
 
model.compile할때 Adam(lr=0.001)로 이미 lr의 계수가 작다고 개인적으로 생각이 드는데,
 
ReduceLROnPlateau의 factor 인자 0.2를 계속 곱하게 되면 lr의 계수가 너무 기하급수적으로
 
작아져서 Gradient가 극소점을 찾기에 더 방해가 되는 것 같은 생각입니다.

ex) lr : 4.0000001899898055e-05.
 
제가 궁금한 것은
 
학습을 진행할 때 , lr의 계수가 0.001 * 0.2 를 반복하면서 기존보다 월등하게 작아진 lr 계수를
 
학습에 사용하는 것이 일반적이거나 효율적인 것인지 여쭤보고 싶습니다.
 
감사합니다!

답변 1

1

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까, 

딥러닝의 특성상 0.001이 그렇게 작은 학습률이 아닙니다. 보통 초기 학습율로 0.001 또는 0.0001 사이를 선호 합니다.  물론 학습율이 너무 작으면 말씀하신대로 손실 최저점을 찾기 위해서 너무 epoch해야 되는 횟수가 많아 지고, 결국 학습이 제대로 되지 않을 수 있습니다. 하지만 0.001 정도는 보통은 초기에 적용하는 큰 학습률입니다. 

초기에 큰 학습율을 적용하고, 이후에 점점 학습율을 줄여 나가는게 딥러닝의 일반적인 학습률 적용 전략입니다. 

예로 드신 4e-5 의 경우 초기 학습율로서는 작지만 어느정도 epoch가 진행된 상태라면 그렇게 작은 학습율이 아닙니다.  epoch를 어느 정도 수행할 때마다 어느정도 레벨로 작아지느냐는 모델과 데이터의 특성에 따라 다르기 때문에 뭐라 말씀 드릴 수는 없지만 일반적으로 말씀드린 0.2 배수 레벨로 작아지는 것이 너무 크게 작아지는 것이라고는 생각되지는 않습니다. 

물론 이렇게 계속적으로 줄여 나가는 학습율 정책이 반드시 옳은 것은 아닙니다. 이 역시 국소 최저점에서 빠져 나오지 못할 가능성이 있습니다. 때문에 ReduceLROnPlateau 외에도 여러가지 학습율 적용 정책이 있습니다. 다만 앞에서도 말씀드렸다시피 초기에 큰 학습율을 적용하고, 이후에 점점 학습율을 줄여 나가는게 딥러닝의 일반적인 학습률 적용 전략입니다. 

감사합니다. 

김성웅님의 프로필 이미지
김성웅
질문자

궁금했던 의문이 말끔히 해결되었습니다! 강사님 항상 감사드리고 건강하세요 :)

김성웅님의 프로필 이미지
김성웅

작성한 질문수

질문하기