gradient에 - 를 붙이면 함수값을 감소시킬 수 있는 방향을 가리키게 된다. → decreasing gradient
실제 데이터셋을 보고 MSE를 통해 Loss와 Cost를 정의한다.
Loss와 Cost는 아래로 볼록한 Convex한 function의 형태인데 gradient를 이용해 Optimization(최적화)을 한다.
그리고 그 최적화를 이루는 방법을 Gradient descent method라고 한다.
좌측이 이상적인 Gradient Descent의 모습이다.
gradient를 구했을 때, gradient를 그대로 반영해서 weight를 그대로 업데이트 시키면 발산하게 될 수 있다.
따라서 gradient에 작은 값(learning rate)을 곱해줘야 우리가 생각하는 이상적인 gradient descent의 모습을 볼 수 있다.
Stochastic gradient descent
- 10만개의 데이터가 있다면 한번에 한 개의 데이터를 통해 gradient를 구하고 update를 하는 것을 반복
Mini-batch gradient descent
- bath size 크기의 데이터를 활용하여 gradient를 구하고 update를 하는 것을 반복
Batch gradient descent
- 한번에 데이터를 다 써서 gradient를 update
batch size는 중요하다!
Flat minimizer (small batch size)
Flat Minimun: training function에서 잘 되면 testing function에서도 어느정도 잘 된다. → generalization이 잘 된다.
Sharp minimizer (large batch size)
Sharp Minimum: training function에서 local minimum에 도달 했어도 testing function에서 약간만 멀어져 있어도 굉장히 높은 값이 나온다. → training 단계에서 얻어진 accuracy나 loss값들이 test 데이터 기준으로는 동작을 잘 안할 수 있다.⇒ batch size를 줄이게 되면 generalization이 좋아진다.
더 빨리 학습을 시키기 위한 Optimization technique
1. Gradient descent
적절한 learning rate를 설정하는 것이 어렵고 아래 그림처럼 불안정한 학습과정을 보인다.