상위 목록: 하위 목록: 작성 날짜: 읽는 데 28 분 소요

최적화(Optimization)

최적화(Optimization)목적 함수(Objective Function)의 결괏값을 최적화 시키는 변수를 찾는 알고리즘을 의미합니다.

앞선 제 4강 - 손실 함수(Loss Function)에서 인공 신경망(Neural Network)은 오찻값을 최소화 시켜 정확도를 높이는 방법으로 학습이 진행되는 것을 확인했습니다.

즉, 손실 함수(Loss Function)의 값이 최소가 되는 변수를 찾는다면 새로운 데이터에 대해 보다 정교한 예측(predict)을 할 수 있게 합니다.

그러므로 실젯값과 예측값의 차이를 계산하여 오차를 최소로 줄일 수 있는 가중치(Weight)편향(Bias)을 계산하게 됩니다.



경사 하강법(Gradient Descent)

\[H(x) = 0.879x - 0.436\]


X Y(실젯값) 예측값 오차(손실)
1 0.94 0.443 0.497
2 1.98 1.322 0.658
3 2.88 2.201 0.679
4 3.92 3.08 0.84
5 3.96 3.959 0.001
6 4.55 4.838 -0.288
7 5.64 5.717 -0.077
8 6.3 6.596 -0.296
9 7.44 7.475 -0.035
10 9.1 8.354 0.746

위 데이터는 선형 회귀(Linear Regression)를 활용하여 최적의 가중치(Weight)편향(Bias) 값으로 계산하여 나온 예측값입니다.

그러므로 비용 함수(Cost Function)를 적용했을 때, 위 가중치(Weight)와 편향(Bias) 값으로 계산한 비용(Cost)은 가장 작은 값이 나오게 됩니다.

즉, 가중치(Weight)와 편향(Bias)의 값이 0.879-0.436에서 멀어질수록 비용(Cost)이 커지게됩니다.

만약 몇개의 가중치(Weight)에 따른 비용(Cost)의 값을 2차원 그래프로 표현한다면 다음과 같이 그려질 수 있습니다.

그래프에서 확인할 수 있듯이 최적의 가중치(Weight)에서는 비용(Cost)이 가장 작아지며, 최적의 가중치에서 멀어질수록 비용(Cost)이 커지는 것을 확인할 수 있습니다.

이를 수학적으로 바라본다면, 가중치와 비용의 그래프에서 기울기(Gradient)0에 가까워질 때 최적의 가중치(weight)를 갖게 되는것을 알 수 있습니다.

위 그래프를 \(x^2\)로 근사한 다음, 특정 지점에서 어떠한 기울기를 갖는지 확인해보도록 하겠습니다.

위 그래프 처럼 기울기가 0이 되는 지점4를 찾기 위해 여러 번의 연산을 진행하게 됩니다.

첫 번째 연산에서는 지점2의 위치에 있었다고 가정할 때, 지점2 하나로는 어떤 형태의 그래프를 가지는지 알 수 없습니다.

첫 번째 연산의 결과가 그래프 상 어느 지점에서 시작하는지는 하나의 지점으로는 알 수 없습니다.

즉, 그래프가 그래프 1의 형태를 가질 수 있고, 그래프 2의 형태도 가질 수 있다는 의미가 됩니다.

그러므로, 지점2에서 값을 조금씩 변경해가면서 기울기가 0인 지점을 향해 이동해야합니다.

현재 지점에서 양의 방향으로 이동해야하는지, 음의 방향으로 이동해야하는지 알 수 없기 때문에 다음과 같은 공식을 적용합니다.


\[\begin{multline} \shoveleft W_{0} = \text{Initial Value}\\ \shoveleft W_{i+1} = W_{i} - \alpha \nabla f(W_{i}) \end{multline}\]


초깃값(\(W_{0}\))을 설정하고 다음 가중치(\(W_{1}, W_{2}, ...\))를 찾습니다.

\(\nabla f(W_{i})\)는 위에서 설명한 기울기를 의미합니다.

새로운 가중치는 기울기의 부호(양수, 음수)와 관계 없이 기울기가 0인 방향으로 학습이 진행됩니다.

이러한 방식을 통해 기울기가 0을 갖게 되는 가중치를 찾을 수 있을 때까지 반복하게 됩니다.

그러므로 어느 지점에서 시작하더라도 극값(Extremum Value)을 찾을 수 있게 연산이 진행됩니다.

이 공식에서 \(\alpha\)를 곱하여 가중치 결과를 조정하게 되는데, 기울기가 한 번에 이동하는 간격(Step Size)을 조정합니다.


가중치 갱신 방법

\[\begin{multline} \shoveleft W_{0} = \text{Initial Value}\\ \shoveleft W_{i+1} = W_{i} - \alpha \nabla f(W_{i}) \end{multline}\]

\(W_{i}\)에서 가중치를 갱신해 \(W_{i+1}\)을 계산해보도록 하겠습니다.


가설(Hypothesis)은 \(\hat{Y} = W \times x + b\)로 사용하고, 오차 함수는 평균 제곱 오차(Mean Squared Error, MSE)를 적용해 풀이합니다.

가설과 오차 함수를 정리하면 다음과 같습니다.


\[\begin{multline} \shoveleft \hat{Y_{i}} = W_{i} \times x + b_{i}\\ \shoveleft MSE(W,\ b) = \frac{1}{n} \sum_{i=1}^{n} (Y_{i} - \hat{Y_{i}})^2\\ \end{multline}\]


경사 하강법에 위 값을 적용해 가중치를 갱신합니다.

가중치를 갱신할 예정이므로 \(W\)에 대해 편미분을 진행합니다.

만약, 편향을 갱신한다면 \(b\)에 대해 편미분을 진행합니다.


$$ \begin{align} W_{i+1} & = W_{i} - \alpha \frac{\partial}{\partial W} MSE(W,\ b)\\\\ & = W_{i} - \alpha \frac{\partial}{\partial W}\{ \frac{1}{n} \sum_{i=1}^{n} ( Y_{i} - \hat{Y_{i}} )^2 \}\\\\ & = W_{i} - \alpha \frac{\partial}{\partial W}[ \frac{1}{n} \sum_{i=1}^{n} \{ Y_{i} - (W_{i} \times x + b_{i}) \}^2 ]\\\\ & = W_{i} - \alpha \times \frac{2}{n} \sum_{i=1}^{n} [ \{ Y_{i} - (W_{i} \times x + b_{i}) \} \times (-x) ]\\\\ & = W_{i} - \alpha \times \frac{2}{n} \sum_{i=1}^{n} \{ (Y_{i} - \hat{Y_{i}}) \times (-x) \}\\\\ & = W_{i} - \alpha \times \frac{2}{n} \sum_{i=1}^{n} \{ (\hat{Y_{i}} - Y_{i}) \times x \}\\\\ & = W_{i} - \alpha \times E[ (\hat{Y_{i}} - Y_{i}) \times x ] \end{align} $$


위와 같은 방법으로 가중치를 갱신할 수 있습니다.

평균을 계산하는 과정에서 \(2\)의 값은 갱신 과정에서 큰 영향을 미치지 않기 때문에 생략하기도 합니다.



학습률(Learning Rate)

\[\begin{multline} \shoveleft W_{0} = \text{Initial Value}\\ \shoveleft W_{i+1} = W_{i} - \alpha \nabla f(W_{i}) \end{multline}\]


새로운 가중치(Weight)를 구하기 위해서 \(\alpha\)를 적용하는데 이 값은 간격(Step Size)으로 학습률(Learning Rate)을 의미합니다.

초깃값(\(W_{0}\))을 임의의 값으로 설정해주듯이 이 학습률(\(\alpha\))도 임의의 값으로 설정하게 됩니다.

학습률(Learning Rate)에 따라 다음 가중치(\(W_{i+1}\))의 값이 적절히 조정됩니다.

다음 그래프는 학습률을 각기 다르게 설정했을 때 최적값을 찾아가는 방식을 보여줍니다.


학습률이 적절할 때

학습률이 낮을 때

학습률이 높을 때

학습률이 너무 높을 때



최적화의 문제

위 그래프에서 확인할 수 있듯이 초깃값이나 학습률을 너무 낮거나 높게 잡는다면 최적의 가중치(Weight)를 찾는 데 오랜 시간이 걸리거나, 발산하여 값을 찾지 못할 수 있습니다.

하지만, 위 그래프에서는 학습률을 가장 낮게 잡고 많은 연산을 하면 시간은 오래 걸리겠지만, 최적의 가중치를 찾을 수 있는 것처럼 보입니다.

만약, 가중치(Weight)비용(Cost)이 다음과 같은 그래프의 형태를 지니게 된다면 다음과 같은 이유로 최적화된 값을 찾을 수 없게됩니다.

기울기가 0이 되는 지점인 극값(Extremum Value)최댓값(Global Maximum), 최솟값(Global Minimum), 극댓값(Local Maximum), 극솟값(Local Minimum)으로 구분할 수 있습니다.

초기 가중치나 학습률을 설정할 때, 시작점이 적절하지 않거나 학습률이 너무 낮다면 최솟값(Global Minimum)이 아닌, 극솟값(Local Minimum)에서 가중치가 결정될 수 있습니다.

또한 안장점(Saddle Point)이 존재하는 함수에서도 적절한 가중치를 찾을 수 없게됩니다.

안장점은 다음 그래프 처럼 말의 안장처럼 생긴 그래프를 의미하며, 특정 방향(아래에서 위로, 위에서 아래로 등)에서 바라볼 경우 극댓값(또는 최댓값)이 되지만 다른 방향에서 보면 극솟값(또는 최솟값)이 되는 지점을 의미합니다.

최적화(Optimization) 알고리즘은 경사 하강법(Gradient Descent)처럼 목적 함수(Objective Function)가 최적의 값을 찾아갈 수 있도록 최적화되게끔 하는 알고리즘입니다.

어떤 최적화 알고리즘을 사용하느냐에 따라 모델의 정확도가 달라지게 됩니다.

최적화 알고리즘은 경사 하강법(Gradient Descent) 이외에도 모멘텀(Momentum), Adagrad(Adaptive Gradient), Adam(Adaptive Moment Estimation) 등이 있습니다.

댓글 남기기