Machine learning

[기계학습]. Gradient descent ( 경사하강법) 간단히 알아보기.

Acdong 2020. 11. 3. 11:15
728x90

우리는 머신러닝을 통해 예측값을 구하는 최적의 w 값을 찾기위해 노력한다.

최적의 w란 실제값과 가장 비슷한 값을 추종하는 웨이트(w) 가중치 값이고 

그 비슷한 값을 찾기 위해선 costFunction 값 ( 실제값과 차이나는 정도) 이 0이 되는 지점을 찾아야.

실제값과 가장 비슷한 w 값을 찾을 수 있다.

 

2020/11/03 - [Data Science/Machine learning] - [기계학습]. Cost functions (loss function) 비용 함수

 

[기계학습]. Cost functions (loss function) 비용 함수

[ 비용 함수(Cost Function) ] Cost Function은 입력한 Training Set에 대하여 가장 적합한 직선을 우리가 가질 수 있게 해준다. 비용함수는 원래의 값과 오차가 가장 적은 [Math Processing Error]θ를 구하..

acdongpgm.tistory.com

결론 : 머신러닝 기법은 결국 오차가 가장 적은 식을 구하기 위한 것이다.

 

그 방법 중 하나가 바로 경사하강법 Gradient descent 이다.

 

여기서 식을 통해 미분 값을 구하게 되는데. 

2020/04/02 - [Data Science/Statistics Math] - [통계수학] 미분 기초 ( 평균변화율 , 순간변화율 , 미분계수 )

 

[통계수학] 미분 기초 ( 평균변화율 , 순간변화율 , 미분계수 )

평균 변화율과 순간 변화율 ( 미분계수 ) 평균 변화율 Y의 변화량 f(b) - f(a) / X의 변화량 b - a 평균 변화율의 기하학적 의미 y = f(x)의 평균 변화율은 그림에서 P와 Q 두 점을 연결하는 직선의 기울기

acdongpgm.tistory.com

미분 값을 구하면 해당 경사(기울기)를 알 수 있게 됩니다.


Gradient Descent

Gradient Descent Algorithm은 Cost Function 을 최소로 만드는 θ0,θ1θ0,θ1 을 구하는 알고리즘으로

Gradient Descent는 먼저 θ0,θ1θ0,θ1 에 대한 임의의 초기값으로 시작합니다. 그리고 최소의 J(θ0,θ1)J(θ0,θ1) 을 찾을 때 까지 θ0,θ1θ0,θ1 을 변경시킵니다. 즉, 이 알고리즘은 임의의 초기값을 기준으로 최소가 되는 점을 찾아나갑니다. 

 

계속해서 경사값과 학습속도를 기준으로 0의 근접해질때까지 값을 갱신해 나간다. 

 

x = 10
derivative = []
y = []

for i in range(1000):
    old_value = x
    y.append(old_value ** 2)
    derivative.append(old_value - 0.01 * 2 * old_value)
    x = old_value - 0.01 * 2 * old_value

range(1000) 은 iteration 이고 0.01 이 여기서 Running rate 가 된다.

이렇게 2가지 하이퍼 파라미터(사용자가 지정해주는 값)를 지정해줘야한다.

 


Learning Rate(학습 속도)

Learning Rate 는 움직이는 보폭의 크기이고 우리가 지정해주는 값이다.

왼쪽의 그림과 같이 Learning Rate를 너무 작게 지정할 경우에는 최소값에 도달하기 위해 많은 연산을 하게됨

 

Learning Rate를 너무 크게 지정하면 우리는 매우 큰 거리로 이동하므로 반대쪽 값으로 넘어가게 되며 최소값으로부터 점점 멀어지는 것을 확인할 수 있다.

 

그래서 우리는 Learning Rate를 적당한 값으로 설정해주어야 합니다. 

 


그럼 굴곡이 많은 함수의 경우는 어떨까? 

이런 경우는 시작점에 의해서 최저점에 수렴을 할 수 있거나 없을 수 도 있다.(시작점에 따라 결과가 달라진다.)

이런 문제를 해결하기 위해 많은 노력들이 필요하다.

 

-> global minima 에 가야하는데 local minima에 빠져서 못나오는 경우

이런 경우 여러 시작점에서 다 시작해서 비교하는 방법등

여러방법들이 있다. 이 방법들은 나중에 자세히 알아보자.

반응형