작성
·
445
0
ReduceLROnPlateau의 factor는 patience동안 val_loss가 개선되지 않으면, learning rate를 변화시켜서 Local minina에 빠지지 않는다고 하셨습니다.
그런데, 구글에서 검색을 하거나, 선생님이 예시로 든 코드를 보면 factor는 0.x로, 이전 learning rate보다 감소되는 방향입니다.
local minina에서 빠져나오기 위해서는 오히려 이전 learning rate보다 키워야 하는게 아닐까 생각했습니다.
factor를 0.x로 설정해서 learning rate를 감소시키는 이유가 궁금합니다.
머신러닝 강의, 캐글 강의 모두 너무 잘 들었습니다!
답변 1
0
안녕하십니까,
제 강의들을 잘 들으셨다니 저도 기분이 좋습니다.
위에서 예를 든 ReduceLROnPlateur등을 포함해서 learning rate를 epoch마다 변화 시키는 정책은 여러가지가 있습니다. epoch시마다 learning rate를 변화시키는 정책은 optimizer에서 batch 마다 optimizer learning rate를 조금씩 조절하는 것과는 약간 차이가 있습니다.
그리고 말씀하신대로 epoch시에 주기적으로 learning rate를 키우는 정책도 있습니다.
이들 여러가지 정책들중 ReduceLROnPlateur는 주기적으로 learning rate를 줄이는게 성능향상에 도움이 될 거라는 경험치라 가지고 구현된 것입니다. 이게 절대적인 성능 향상 방법은 아닙니다.
보통 epoch시마다 learning rate를 조금씩 줄이는게 성능상으로 유리할 수가 있는 경우는
epoch를 수행하면서 loss가 계속 줄다가 갑자기 조금씩 늘어나는 경우 입니다. 이 경우 loss의 최소점에 접근하지 못하고 오히려 최소점을 넘어가는 학습이 계속 되기 때문에 이 경우에 최소점에 접근하기 위해서 epoch를 수행할 때만다 learning rate를 줄이는 것이 유리할 수 있습니다.
정리하자면 ReduceLROnPlateur는 위에서 언급된 사항에서 경험적으로 learning rate를 줄이면 보다 최소 loss를 찾는데 유리하다라는 경험치를 가지고 만들어진 정책입니다. 다른 정책도 얼마든지 있을 수 있습니다.
감사합니다.