728x90
반응형
Optimizer를 공부하면서 Learning rate에 대해 의문이 들었다. Gradient자체가 얼마나 Loss에 영향을 주는지를 의미하니까 어느 방향으로 내려가야하는지 뿐만아니라 어느 정도로 업데이트 해야할지에 대한 정보도 담고있다고 생각했는데 왜 또 보폭을 설정해주는 지 궁금했다.
다시 생각해봐야할 것은 gradient라는게 weight 한 단위가 변할 때 loss에 대한 영향력을 나타낼 뿐, 그것이 극값의 위치에 도달할 수 있는 크기를 의미하지 않는다는 것이다. 아래 예시를 보자.
weight를 기울기만큼 이동하면 방향은 왼쪽으로 잘 가고 있지만 너무 많이 이동해서 계속 (1, 1)과 (-1, 1)로만 갱신되는 모습을 볼 수 있다. 즉, 기울기는 방향에 대한 정보는 잘 전달하지만 극값에 다가가기 위해 얼마나 이동해야하는 지에 대한 올바른 정보는 전달하지 못하는 것이다.
따라서 얼마나 이동할 것인지에 대한 보폭 사이즈(learning rate)를 설정해야 한다.
이때 learning rate를 적절하게 잡는 것이 중요한데 아래 그림들을 보며 이해해보자.
■ learning rate가 적절할 때
■ learning rate가 작을 때
: 갱신을 많이해야 하고 시간이 오래 걸린다.
■ learning rate가 클 때
: 목표 지점을 지나쳐버리게 된다.
728x90
반응형
'AI > 딥러닝' 카테고리의 다른 글
[Pytorch] Hyper-parameter Tuning , Pytorch Troubleshooting (0) | 2021.08.21 |
---|---|
[Pytorch] Multi-GPU (0) | 2021.08.21 |
[Optimization] Generalization , Under-fitting vs Over-fitting , Cross Validation (0) | 2021.08.16 |
[Optimizer] SGD , Momentum , NAG , Adagrad , Adadelta , RMSprop , Adam (3) | 2021.08.15 |
[경사하강법] 미분 , 경사하강법 , gradient vector , 확률적 경사하강법 ( SGD ) (0) | 2021.08.09 |
댓글