미분
미분이란?
경사하강법을 알아보기 전에 우선 미분에 대해서 설명하겠다. 미분이란 '변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구로 최적화에서 제일 많이 사용하는 기법이다'라고 설명이 되어있다. 하지만 그냥 미분은 '접선의 기울기'를 구하는 것이라고 간단하게 알고 있어도 상관없을 것 같다.
여기서 미분값이 음수일 때 다음과 같이 왼쪽으로 이동하면 함수값이 증가한다. 반대로 오른쪽으로 이동하면 함수값이 감소할 것이다.
반대로 미분값이 양수라면 다음과 같이 오른쪽으로 이동 할 때 함수값이 증가한다. 이 또한 반대로 오른쪽으로 이동하면 함수값이 감소할 것이다.
위에서처럼 이동할 때 함수값이 증가할 때 경사상승법(gradient ascent)라하고 함수값이 감소할 때 경사하강법(gradient descent)라 한다.
편미분
변수가 벡터이고 다변수 함수일 경우에는 편미분(partial differentiation)을 사용하여 그레디언트(gradient) 벡터를 계산할 수 있다.
선형회귀 계수
선형회귀의 목적식은 다음과 같다.
즉, 선형회귀의 목적식은 MSE(Mean Squared Error)와 같다.
이 목적식을 β에대해 편미분을 하게되면 다음과 같다.
여기서 중간 계산 과정을 생략하고 chain rule을 적용하면 다음과 같은 식으로 표현할 수 있다.
이제 경사하강법을 이용하여 목적식을 최소화하는 β를 구하기위해서 다음과 같이 β를 업데이트한다.
또한 L2-norm의 제곱 한 값을 사용하면 다음과 같이 더 간단한 식으로 정리할 수 있다.
확률적 경사하강법
'이제 경사하강법이 만능일까?'에 대한 문제를 다뤄볼 것이다. 위에서 다룬 경사하강법의 경우에는 선형회귀일때 알고리즘을 충분히 돌리면 수렴이 보장된다. 하지만 다음과 같이 비선형회귀 문제일 경우 최소값에 수렴하지 않을 수 있다. 다시 말해 global minimum이 아니라 local minimum에 수렴하게 된다는 것이다.
이 문제를 해결하기위해 고안한 방법이 이 확률적 경사하강법(stochastic gradient descent)인데 줄여서 SGD라 하겠다. SGD는 경사하강법에서 모든 데이터를 활용하는 방법과는 달리 데이터를 일부 활용하여 업데이트하는 방법을 사용하였다. 데이터를 일부 활용하였다는 것은 데이터를 조금씩 랜덤하게 떼어서 업데이트한다는 것이다. 이것은 또한 미니배치를 가지고 업데이트를 한다고 말할 수 있다.
다음과 같이 경사하강법과 확률적 경사하강법의 이동을 보면 확연히 차이가 나는 것을 확인할 수 있다.
이전에 작성한 경사하강법에 대한 글도 있으니 추가로 참고하면 좋을 것 같다.
2021.07.19 - [Machine Learning/Theory] - Gradient Descent(경사하강법)
'Boostcamp AI Tech' 카테고리의 다른 글
[Boostcamp Day-2] AI Math - 딥러닝 학습방법 (0) | 2021.08.03 |
---|---|
[Boostcamp Day-1] Python - variables(변수) (0) | 2021.08.02 |
[Boostcamp Day -1] Python - 코딩 환경 (0) | 2021.08.02 |
[Boostcamp Day-1] AI Math - 행렬이 뭐에요? (0) | 2021.08.02 |
[Boostcamp Day-1] AI Math - 벡터가 뭐에요? (0) | 2021.08.02 |