21. Gradient Descent with Momentum

2023. 9. 11. 13:31Google ML Bootcamp/2. Improving Deep Neural Networks

Momentum : Gradient Descent 방식보다 빠른 알고리즘

- 기본 아이디어 : 지수 가중 평균을 산출하는 것

 

Gradient Descent보다 발전한 Momentum이라는 알고리즘을 배우기 위해 기본 개념인 지수 가중 평균을 배워온 것!!

Momentum 알고리즘

at each mini-batch : weight update

- 이때 W[l] -= learning_rate * dW[l] 에서 W[l] -= learning_rate * V(dW[l])로 수정함을 볼 수 있다.

- 이는 현재 input의 영향력을 조절하는 것으로 최저점에 도달하기 위한 가로,세로 이동량을 다르게 할 수 있다.

- 왜? V(dW)를 통해 이전 W영향력을 반영하여 더 많이 update할 수도, V(db)를 통해 이전 b영향력을 반영하여 더 적게 update할 수도 있음.

 

베타가 0.9 라면 0.9**10 ~= 1/e . 따라서 이전 10개의 지수 이동 평균을 구함.

베타=0.9가 꽤나 성능이 좋아서 그냥 사용하지만 충분히 다른 값으로 테스트해보아도 좋다.

- 그리고 V(0)=0 으로 초기화 하는것도 그냥 사용하기도 한다. 실제로 10개 데이터를 관측 후에는 bias영향이 없어지는거나 마찬가지이므로 큰 epoch에서는 별로 영향을 크게 미치지 않기도 한다.

 

가끔 V(dW) = a*V(dW) + (1-a)v(dW) 대신  V(dW) = a*V(dW) + v(dW) 라고 표기하기도 한다.

- 이는 V(dW) scaling에 영향을 미치므로 나중에 learning rate를 (1-a)로 scaling 해주어야 하는데 덜 직관적이므로 필자는 왼쪽의 수식 표현을 선호하는 편이다.

- 둘 다 같은 의미임을 알아두는게 좋다!