[ TIL / 네이버 부스트 캠프 ] 경사하강법

0

오늘 내용 중 경사하강법에 대한 내용이 나왔다. 경사하강법은 워낙 머신러닝, 딥러닝 강의에서 자주 다뤄지는 내용이기 때문에 용어 자체는 익숙하지만 증명하기는 쉽지 않은 개념이다.
그렇기에 내 식대로 이해하는 것을 정리하고자 velog TIL 소재로 선정했다.

✏️ 경사하강법 간단 내용

미분은 함수 f 의 주어진 점 (x, f(x)) 에서의 접선의 기울기를 구한다
한 점에서 접선의 기울기를 알면 어느 방향으로 점을 움직여야 함수값이 증가하는지/감소하는지 알 수 있다.
미분값을 빼는 과정을 경사하강법(gradient descent)이라 하며 함수의 극소값의 위치를 구할 때 사용한다

위 그림처럼 x에 미분값을 빼게 되면 극소값을 향해 가게 된다. 만약 더한다면? 반대방향으로 이어지므로 극대값을 향해 가게 된다. 극소 그리고 극대값에서는 미분값이 0이 되므로 더이상 업데이트가 되지 않는다. 즉, 경사하강법을 통한다면 함수의 극소값을 찾을 수 있고 이를 통해 loss function 최적화에도 유용하게 사용될 수 있다.

💡 변수가 벡터라면?

벡터가 입력 변수라면 편미분(partial differentiation)을 통해 극소값을 구할 수 있다.

위의 식을 바탕으로 각 변수 별로 편미분을 계산을 한 그레디언트 벡터를 이용해 경사하강/경사상승법에 사용하게 되며 표기는 아래와 같다.

🔥 더 나아가서 선형회귀분석에서의 경사하강법

우리가 가지고 있는 데이터를 X 그리고 이 X가 (xi,yi)i=1n(x_i, y_i)^{n}_{i=1} 이라고 하고 여기에 회귀계수 벡터 β를 곱하여 가장 적절한 ŷ를 찾아야 한다. 이는 minyy^2min||y-ŷ||_2를 최소화하는 β를 구하는 것이며 이를 식으로 표현하면 아래와 같다

하지만 이를 유사 역행렬이 아닌 직접 경사하강법을 계산해서 선형회귀계수 β를 구하고자 했다.
우리가 구해야 하는 것은 Y와 가장 유사한 Xβ를 구하는 것이고 데이터 X는 불변이기 때문에 β를 조절해주어야 하므로 β에 대한 편미분을 진행해야 한다.

결과적으로 이것은 아래의 수식을 통해 증명이 된다. 손으로 직접 작성했기 때문에 발퀄을 이해해주셨으면 한다ㅎㅎㅎ,,,

즉, 우리가 구한 선형회귀계수의 그레디언트 벡터는 다음과 같고 이를 통해 최소화하는 β 를 구하는 경사하강법 알고리즘은 다음과 같다 사진에 β(t+1)β^{(t+1)}β(t)β^{(t)} 사이에 화살표가 없는데 사진상의 오류이다.

즉, β를 다음과 같은 식으로 계속 업데이트 하면 이와 같은 식이 완료된다.

🔥🔥 또 더 나아가서 선형회귀분석에서의 경사하강법 증명2

위의 사진은 loss function을 RMSE가 아닌 MSE로 계산했을 때 도출되는 경사하강법식이다. 이와 같은 방식으로도 도출이 가능하다.

💡 후기

처음에 경사하강법을 1번 방식인 수식으로 전개하던 중에 Xβ의 β에 대한 미분을 X라고 생각했어서 미분값이 뭔가 이상하게 나왔었다... 다시 살펴보니 XTX^T여서 계산 결과 제대로 나왔다 ㅎㅎㅎ
이상 오늘 하루의 TIL 끝!~~

profile
프리미어와 IDE만 있다면 무엇이든 만들 수 있어

0개의 댓글