728x90
반응형
SMALL

신경망의 연결 가중치 최적화를 위한 경사하강법(Gradient Descent Algorithm)

경사하강법(Gradient descent)은 간단히 말해 우리가 고등학교 수학시간때 배운 미분의 개념을
최적화 문제에 적용한 대표적 방법 중 하나로서 함수의 local minimum을 찾는 방법 중 하나이다.
이 개념을 인공지능의 기계학습에 적용해서 기계학습시 예측의 오류를 줄이고 모델을 최적화
하기 위해 현재상태(신경망 가중치)의 기울기(미분)을 구하고, 여기서 기울기는 손실값
즉 (예측값-실제값)의 차이분을 가리키다. 이 상태에서 한 step을 나가서(하강해서) 다시
기울기(미분)을 구하고 또 한 step을 나가서 기울기를 구하고.. 를 반복해서 손실값 즉 
기울기(미분)값이 0 이되는 지점을 찾음으로서 최적해(손실값이 가장 작은) 를 찾는
알고리즘을 말한다.  (여기서 스텝량 step size 가 곧 학습률에 해당됨)
그래서  Gradient descent 방법을 다른 말로 steepest descent 방법이라고도 부른다.

좀더 쉽게 이야기를 해보자.
우리가 산속에서 지도나 나침반 없이 산정상을 오르는 방법은 현재 자신의 위치에서 
경사가 가장 가파른 쪽으로 이동하는 것이다. 산 정상이 어디인지는 모르나 일단 경사가 가파른
쪽으로 계속 올라가다 보면 산정상에 오를 수 있다. 이 방법을 Gradient Ascent (경사상승법)
이라하고, 그 반대로 산정상에서 지면으로 갈 때는 경사가 가장 가파르게 내려가는 곳을
따라 가면 된다. 이 방법을 Gradient Descent (경사하강법)  이라고 한다.


경사하강법(Gradient Descent Algorithm)의 메커니즘

<출처 : 118회 정보관리기술사 모임 두드림 >

Gradient (그레디언트) 란 ?

어떤 다변수 함수 f(x1,x2,...,xn)이 있을 때, f의 그레디언트(gradient)는 아래 식과 같이 각 변수로의
1차 편미분 값을 구성되는 벡터(vector)이다. 
그 이 벡터(vector)는 f의 값이 가장 가파르게 증가하는 방향을 나타낸다고 할수 있다.
그래서 벡터(vector)의 크기는 그 증가의 가파른 정도(기울기,미분)를 나타낸다.

예를 들어, f(x,y) = x2 + y2의 그레디언트(gradient)를 구해보면
이므로, (1,1)에서 f값이 최대로 증가하는 방향은 (2,2), 그 기울기는 ∥(2,2)∥= sqrt(8) 입니다.

반대로 그레디언트(gradient)에 음수를 취하면 즉, -▽f는 f값이 가장 가파르게 감소하는 방향을
나타내게 된다. 이러한 그레디언트(gradient)의 특성은 어떤 함수를 지역적으로
선형근사(linear approximation)하거나 혹은 함수의 극점(최대값, 최소값 지점)을 찾는
용도로 활용될 수 있다
<출처 : 블로그 : 다크 프로그래머 https://darkpgmr.tistory.com/133>

경사하강법 (gradient descent algorithm) 의 문제점

산속에서 정상을 찾기 위해서 경사가 가파른곳방향으로 이동을 해서 정상에 올라갔지만 막상
이 정상은 진짜 정상이 아니고 작은 봉우리였고 다시 내려갔다가 올라가보면 진짜 정상이
있는 경우가 있을 수 있다, 즉 local minimum에 빠지는 것이다.
또 하나의 문제점은 해에 근접할수록 |∇f|가 0에 가까워지기 때문에 수렴속도가 느려진다는 것이다
그렇다고 수렴속도를 조절하는 step size 를 너무 크게 하면 알고리즘이 발산할 수 있는
문제점이 있다.

 

728x90
반응형
LIST

+ Recent posts