경사하강법(Gradient descent)
함수의 기울기를 구해 최소값에 이를 때까지 반복시키는 방법.
학습률만큼 계속 이동하며 학습하기 때문에 적절한 학습률을 지정해야 한다.
딥러닝에서는 비용함수를 사용하여 이 값을 최소화하는 방식을 사용한다.
수식을 통해 기울기가 0인 지점을 찾을 수도 있겠지만 실제 함수가 어떠한 형태인지 모르는 문제(비선형함수 등 문제)등으로 인해
컴퓨터로 gradient descent를 구현하여 사용한다.
학습률의 경우 너무 높을 경우 수렴하기가 힘드며, 너무 낮을 경우 local minima 문제에 빠질 수 있다.
local minima 문제를 해결하기 위해 모멘텀을 주로 사용한다.
비용 함수(Cost function)
예측 값과 실제 결과 간의 차이를 비용(Cost)라 하며, 이 Cost를 제곱해서 더한 함수로 만든 것을 비용 함수라고 한다.
제곱했기 때문에 이차함수의 형태를 가지게 되므로 이를 최소화하는 매개변수를 찾아가게끔 경사 하강법을 적용한다.
역전파(Backpropagation)
순전파를 통해 얻은 결과, 실제 값간의 오차를 계산하고, 경사하강법을 통해
각 오차의 가중치를 역방향으로 업데이트 해 주는 방법.
0위에 설명한 비용함수와 경사하강법은 오차 역전파를 위한 방법이다.
경사하강법의 종류
1. GD(gradient descent)
모든 데이터를 사용하여 계산하는 방법으로 그만큼 오래 걸린다.
2. SGD(Stochastic gradient descent)
확률적 경사 하강법으로 모든 데이터에 대해 가중치를 조절하는 것이 아닌 랜덤으로 일부를 추출해서 그에 대해 가중치를 조절하는 방법이다.
일반 방법보다 속도가 빠르며, 확률적이기에 슈팅이 많이 일어난다. 대신 그만큼 local minima 문제에서 벗어날 수 있다.
참고로 Stochastic는 확률적이라는 의미를 가진 단어로 무작위로 샘플이 뽑힌다는 의미이다.
MSGD도 SGD로 불리며, 예전에 하나씩 뽑던 방법을 일부를 추출하는(위에 설명한) 방식으로 미니배치를 만들어
그것의 평균 기울기를 구해 적용한다.
3. Momentum
쉽게 말해 관성을 사용하는 방법으로 local minima를 해결하기 위해 고안되었다.
이전의 방향을 기억하여 관성처럼 추가적인 이동을 하며 local minima 문제를 해결할 확률을 높인다.
4. Adagrad
학습률과 관련된 옵티마이저로,
Adagrad라는 방식은 변수의 업데이트가 잦을 수록 학습률을 조정하는 방식이다.
5. RMSprop
앞의 Adagrad는 학습률이 작아지는 문제가 존재한다.
이를 방지하기 위해 만들어진 옵티마이저로, 기울기를 단순히 누적하는 것이 아닌
가중이동평균을 사용하여 최근의 기울기에 더 높은 가중치를 두는 방식을 적용한 방법이다.
6. Adam(Adaptive Moment Estimation)
Moment라는 단어가 붙어있다는걸 보면 알 수 있겠지만 관성계수를 사용하며,
RMSprop처럼 지수이동평균을 사용하며 학습률을 조정한다.
1st, 2nd 두 개의 모멘트를 계산하는데 이를 추정하며 작업하기에 Estimation라는 단어가 들어가 있다.
출처1 : https://ganghee-lee.tistory.com/24
출처2 : https://www.slideshare.net/yongho/ss-79607172