1. 미분이란?
: 미분(differentiation)은 변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구
: 함수의 특정 위치에서의 변화량, 기울기
- 주어진 점 (x,f(x))에서 미분값을 알면 어느 방향으로 움직여야 함수값이 증가/감소하는지 알수 있다.
- 미분값 < 0 일때,
: x + f`(x) < x < x - f`(x)
- 미분값 > 0 일때,
: x - f`(x) < x < x + f`(x)
- 미분값을 더하면 경사상승법(gradient ascent) : 함수의 극대값의 위치를 구할 때 사용
- 미분값을 빼면면 경사하강법(gradient descent) : 함수의 극소값의 위치를 구할 때 사용
2. 편미분
변수가 벡터인 경우 다변수 함수가 된다. 각각의 변수에 따라 기울기가 발생하기 때문에 함수의 최적화를 위해서는 각각의 변수마다 미분값을 계산하게 되는데 이를 편미분(Partial Differentiation)이라고 한다.
이렇게 각 변수마다 편미분을 계산한 gradient vector를 이용하여 경사하강법/경사상승법에 적용할 수 있다.
gradient vector의 각 요소들은 각각의 변수에 대한 편미분 값이다.
3. 경사하강법 / 경사상승법
함수의 극대값 / 극소값을 계산하기 위해서는 기울기, 특정한 지점에서의 미분값이 필요하고 그에따라 예측된 결과값이 필요하다. 또, 이렇게 예측된 결과값과 주어진 결과값의 차이인 오차가 계산된다.
Machine Learning 모델에서 사용하는 함수의 최적화도 마찬가지이므로,
이를 수식화 하면 다음과 같다.
위의 그림에서 H(x)는 예측된 결과값이다. 비용함수 cost(W,b)는 1~i개의 데이터에 대해 예측된 결과값과 주어진 결과값(lavel : y)의 차이에 대한 평균제곱오차(MSE)이다.
이렇게 계산된 비용함수를 변수 W, b에 대한 편미분값을 원래의 W, b에서 빼줌으로써 각각 gradient를 계산할 수 있고, learning rate를 사용하여 gradient의 변화량을 얼만큼 적용할 지를 정하게 된다.
이를 통해 비용함수의 값을 최소화하는 것이 경사하강법이며, 이때 원래의 W, b에 gradient를 더하게 되면 경사상승법이 된다.
4. 확률적 경사하강법
일반적인 경사하강법에서의 문제점은 볼록(convex)한 함수에 대해서만 수렴이 보장되어있다는 점이다. 그렇다면 볼록하지 않은(non-convex) 함수에 대해서는 어떻게 최적의 해를 도출해 낼 수 있을까?
확률적 경사하강법(Stochastic Gradient Descent : SGD)은 모든 데이터를 사용해서 gradient를 업데이트하는 것이 아니라 데이터의 일부를 통해서 업데이트하는 방식이다. 랜덤하게 선택한 데이터를 사용하기 때문에 non-convex한 함수에 대해서 비용함수를 일반화할 수 있다는 장점이 있다.
위의 코드에서 볼 수 있듯이 원래의 데이터에서 랜덤하게 10개를 뽑아 mini_batch를 만든다. 이를 사용하여 비용함수를 계산하여 업데이트하게 되면 mini_batch의 10개에 대한 변화량만큼 업데이트가 된다. 이를 반복하게 되면 원천데이터 전체에 대한 값에 수렴하게 되면서 non-convex한 함수에 대해서도 경사하강법을 적용할 수 있게 된다.
참고자료 : 네이버부스트캠프 AI Tech 강의자료
'DS | Data Science > ML | Machine Learning' 카테고리의 다른 글
[RNN] Recurrent Neural Network : 순환신경망 (2) | 2022.09.23 |
---|---|
[CNN] Convolutional Neural Network : 합성곱 신경망 (1) | 2022.09.23 |
[Back propagation] 역전파 (0) | 2022.09.21 |
지도학습 Supervised Learning / 비지도학습 Unsupervised Learning / 강화학습 Reinforcement Learning (0) | 2022.07.15 |
Neural Network basic - NN, Gradient Descent, Error Back Propagation은 무엇일까? (0) | 2022.07.15 |