본문 바로가기
Deep Learning Study/Mathematics

[미적분학] Optimization(GD, SGD)

by BangGeuk 2024. 2. 29.

혹시 잘못된 부분이나 수정할 부분이 있다면 댓글로 알려주시면 감사하겠습니다.


Loss Function은 예측값과 실제값의 차이를 계산해주는 함수이다. 모델은 Loss Function을 이용해 오차를 계산한 후 오차를 줄이는 방향으로 학습을 하게되는데 오차를 줄이는 과정에서 어떠한 알고리즘을 사용하는지 이번 글에서 알아보고자 한다. (Loss Function에 대해서는 저번에 작성한 글 참고)(다음 글을 스포하자면 Loss Function, Optimization Algorithm을 알아보았으니 Back Propagation..!!)

 

[확률 및 통계학] Loss Function

혹시 잘못된 부분이나 수정할 부분이 있다면 댓글로 알려주시면 감사하겠습니다. Loss Function은 머신러닝, 딥러닝에서 필수적인 부분이고 논문에서도 자주 나오는 용어로 대표적인 것들만 정리

byeonggeuk.tistory.com

 

Optimization은 인공지능에서 모델이 학습할 때 loss function으로부터 계산된 오차를 최소로 하는 최적의 파라미터를 찾아가는 방식이다. 아래 그림은 Optimization Algorithm이 어떠한 방식으로 발전했는지 보여준다(Gradient 개선, learning rate 개선, 둘 다 개선). 이번 글에서는 이러한 발전에서 첫 번째와 두 번째 알고리즘인 Gradient Descent, Stochastic Gradient Descent에 알아보고자 한다.

이미지 출처 : https://www.slideshare.net/yongho/ss-79607172

 

1. Gradient Descent

Gradient Descent는 모든 데이터들에 대해 Loss를 계산하고 이를 줄이고자 한다. i번째 x는 현재 가중치 값, i+1번째 x는 다음 가중치 값(수정할 값), 알파는 learning rate(학습률), df/dx(x)는 i번째 가중치를 미분한 것으로 Gradient Descent의 수식은 다음과 같다.

미분한 것에 learning rate를 곱해주고 음수를 취해주는 것은 함수 값을 최소화하고자 하는 것인데 그림으로 보면 다음과 같다.

Loss Function에 대해 미분하여 loss를 최소로하는 weight를 찾는 것을 목적으로 생각하면 되고 i번째, i+1번째, 계속해서 업데이트할수록 최적해를 찾을 가능성이 높아진다. learning rate는 이동하는 거리로 생각해도 되는데 크게 설정하거나 작게 설정할 수 있고 이는 모델 학습에 있어 중요한 parameter이다. Back Propagation 글에서 Gradient Descent를 활용해 가중치 업데이트 하는 방법에 대해 자세히 다룰 예정이라 그 글도 참고하면 좋을 것 같다.

 

Gradient Descent의 단점은 local minimum에 빠질 수 있다. 

이미지 출처 : https://angeloyeo.github.io/2020/08/16/gradient_descent.html

 

2. Stochastic Gradient Descent

Gradient Descent는 모든 데이터들에 대해 loss 값을 계산한 후 가중치를 업데이트했는데 Stochastic Gradient Descent는 한 개의 데이터만 샘플링하여 가중치를 업데이트한다. 이는 큰 데이터셋에도 적용이 가능하고 빠른 학습속도, global minimum을 찾을 수 있는 장점이 있으나 확률적이기 때문에 매개변수의 변동폭이 불안정하여 정확도가 오히려 더 낮을 수도 있다.

 

Conclusion

인공신경망을 생각해보면 각 입력값들은 가중치들을 통해 예측값이 나온다. Loss Function을 통해 실제값과 예측값들에 대한 오차를 계산하게 되고 오차를 줄이는 알고리즘에 대해 여러가지 Optimization Algorithm들이 있다.

 

1. Gradient Descent

 

모든 데이터들에 대해 loss 값을 계산하여 가중치를 업데이트한다.

 

2. Stochastic Gradient Descent

 

한 개의 데이터를 랜덤하게 샘플링한 후 loss 값을 계산하여 가중치를 업데이트한다.