Skip to content

경사하강법 #
Find similar titles

Structured data

Category
Algorithm

경사하강법 (Gradient Descent) #

경사 하강법이란? #

=학습률과 손실함수의 순간기울기(gradient)를이용하여 가중치(weight)를 업데이트하는 방법.
=미분의 기울기를 이용하여 도표의 오차들을 비교하고 오차를 최소화하는 방향으로 이동시키는 방법.

가장 간단한 선형회귀를 예시로 경사 하강법을 설명해보겠다. 일차함수식 y = wx + b라면, 최적의 w와 b를 찾아내는 것이 선형회귀의 목표이다. 이 최적의 w와 b를 찾기 위해 우리는 경사 하강법을 이용한다.

예시를 들어보자. 공부시간이 많아질 수록 수학 성적이 높아진다. 이를 그래프에 값을 찍어 놓으면 공부시간과 수학 성적의 상관 관계가 보이기 시작한다. 또한 이는 선형으로 데이터를 모델링할 수 있어 보인다. 사람은 이 과정을 쉽게 유추할 수 있다.

Image

하지만 기계에게 이 유추과정을 기대하기란 쉽지 않다. 그래서 사람들은 컴퓨터에게 경사 하강법이란 기법을 학습시켰다.

먼저 w,b에 임의의 값을 넣은 일차함수와 자료값 사이의 평균제곱오차(MSE, mean squared error)를 구한다.

Image
n은 샘플 갯수이고, yi,^yi는 각각 자료의 라벨값과 예측값을 의미. 이 평균제곱오차를 비용함수(cost function)라고 부른다.

그런데 제곱이다보니 오차가 무지 커져버릴 때는 사용이 불편할 수 있다. 이럴 경우에는 여기에 다시 제곱근을 씌워준다.

이를 평균 제곱근 오차(Root Mean Squared Error, RMSE)라고 한다.

Image

이제 컴퓨터의 목표는 비용함수값이 최소가 되는 w와 b를 찾는 것이다. 즉, 실제값과 예측값의 오차를 최소화하는 과정이다. 이 비용함수는 오차가 벌어질 수록 제곱으로 인해 급증하게 되므로 2차 함수 형태가 된다.

Image

그렇다면 이제 최적의 w값을 찾아야 한다. 최적의 b값을 구하는 과정도 이와 동일하다. 우선 무작위로 w값을 하나 입력하자 (초기값 설정). 그 다음, 비용함수를 w에 대해 편미분해주고 Learning rate(하이퍼파라미터:인간이 설정해주어야하는 파라미터)를 곱한다. 그리고 이 값을 초기 w값에서 뺀다. 이와 같은 수식은 아래와 같다.

공식2 Image

이 Learning rate (학습률)은 사용자 지정 방식이다. 학습률이 과대하면 최적점을 넘어가 발산해버리고 과소하면 최적점까지 도달하는 시간이 엄청나게 걸린다.

w 위치에 있는 접선의 기울기는 비용함수를 w에 대해 편미분한 것과 같다. 아래 예제에서는 음수값을 갖도록 했다. 학습률이 양수인 실수이기 때문에, 원래 w값에서 어떤 크기의 음수만큼 빼주게 되는데 이는 결국 더한다는 얘기다. 그래서 w값이 증가하고 (우측 이동), 업데이트된 w에 대해서 이 공식2를 반복 시행하면 최적의 w값을 찾는다.

Image

최적의 b값을 찾는 과정도 위와 동일하다.

Image

처음 무작위 입력된 초기 w,b값은 자료값들을 대표하는 선형 모델을 만드는데 실패했지만, 점진적으로 경사하강법을 이용해 최적값을 향해 업데이트되고 결국 최적값에 도달했다!

회귀분석과 딥러닝의 차이 #

자 그럼 여기서 우리는 회귀분석과 딥러닝의 차이를 알 수 있다.

회귀분석은 비용함수의 기울기가 0이 되는 계산이어서 한 번에 바로 값을 나타낼 수 있다. w와 b의 기울기를 0으로 놓고 연립 방정식으로 풀면 된다. 복잡한 경우에는 행렬식과 분산, 공분산을 이용하자. 위 예시 y=wx+b와 같은 단순한 방정식이라면 수학적으로 쉽고 빠르게 x값과 b값을 구할 수 있다. 하지만 파라미터가 많을 경우 그 과정이 매우 복잡해질 것이다...

𝜕c𝑜𝑠𝑡(𝑤)/𝜕𝑤 = 0

딥러닝은 위에서 설명한 비용함수를 이용해 w를 업데이트하며 차근차근 값을 찾아낸다. 이는 활성화 함수의 일종이기도 하다. 여기서 관건은 적절한 α(learning rate, 학습률)을 넣어주어야 한다는 것이다.

W= W-α(𝜕/𝜕W)cost(w)

참고자료 #

참고 문헌:
김의중 지음, "알고리즘으로 배우는 인공지능, 머신러닝, 딥러닝 입문", 위키북스
https://blog.naver.com/dkdlel531/221463588157, Avengineers님의 네이버블로그, 경사하강법

출처 #

참고:
https://bskyvision.com/411
https://writeren.tistory.com/10
https://insilicogen.com/blog/332

Incoming Links #

Related Bioinformaticses #

0.0.1_20140628_0