본문 바로가기

카테고리 없음

경사하강법(Gradient Descent)

 

경사 하강법 이란?

 

경사 하강법이란 머신러닝에서 사용되는 개념으로 프로그래밍을 활용하여 통계학을 접근 할 때 무언가를 예측 하기 위해 사용되는 방법중 하나이다.

머신 러닝에서 경사 하강법을 사용하는 이유

■ 머신러닝은 방대한 데이터량(빅데이터)를 활용하여 모델을 만들어야되고 독립변수가 하나가 아닌 여러개의 독립변수가 존재하는 다중회귀분석의 경우 계산식이 복잡하여 계산을 하기가 어려움

■ 미분계수의 계산 과정보다 경사하강법의 구현이 쉬움

 

경사하강법의 Local optimum(지역 최적점)을 찾게 되는 흐름

단순 선형회귀를 예로 들어 단순선형 회귀 모델은 Y = ax + b 라는 2차 방정식으로 표현이 가능하다.

a가 기울기를 뜻하고 b가 절편을 뜻한다.

위의 그래프를 예로 들어 보자.

위의 모델에서 가장 회귀분석모델로 적합한 선은 노란색 선이라고 볼 수 있다.(x가 증가할때 y를 잘 따라가기 때문)

빨간색 ~ 파란색 선 까지 기울기값이 일정하게 차이가 난다고 하였을때 이전에 배웠던 MSE, SSE를 각각의 선에 대입을 하면 오차 제곱의 합은 아래의 그래프같은 모양을 그리게 될 것이다.

※ Y = ax 라고 할때 a의 값을 임의의 값으로 넣었을때 예측되는 Y값과 실제 Y값의 차이의 제곱 합

이 MSE, SSE 값을 비용함수 Cost Function 이라고 한다.

Cost(w,b) = Cost Fucntion 기울기 w, 절편 b

우리가 처음 임의의 숫자를 대입 하였을 때 그 숫자가 빨간색 점의 위치한 숫자라고 생각 하였을때 우리는 빨간색 점의 숫자가 노란색 위치로 가기위해 → 양수의 값으로 증가 해야된다는 것을 알 수 있다.

반대로 임의의 숫자를 대입 하였을 때 파란색 점의 위치에 있다고 하였을 때는 ← 음수의 방향으로 값이 바뀌어야 된다는 것을 알 수 있다.

 

각각의 점들의 위치에서 나아가야될 방향이 양수방향으로 증가하여야 될지 음수방향으로 감소해야 될 지는 미분을 통하여 각 점들의 기울기를 구하고 각 점들의 기울기가 양수인지 음수인지에 따라 진행 방향을 알 수 있다.

기울기가 0이면 ㅡ 수평이고 해당 예시의 노란색 점의 위치라고 할 수 있고, 기울기가 양수 일 경우 a의 값은 줄어 들어야되고 기울기가 음수일 경우 a의 값은 증가 하여야 된다.

 

Step Size

위에서 기울기 값의 부호를 통하여 값이 증가 되어야 되는지 감소해야되는지를 알아 보았다면 몇 만큼 숫자를 이동 시켜야 되는지가 다음 과제로 떠오른다.

아래 식을 한번 살펴 보자

식을 보면 다음 위치 = 현재 값에서 미분을 통한 기울기 값만큼 빼주는 것을 알 수 있다.

(기울기 값이 양수이면 -, 음수이면 +를 해주어야되기 때문에 더하기가 아닌 빼기를 사용한다.)

중간에 보면 Learning rate라는것이 들어가는데 이 값은 아래의 그림을 보면 이해할 수 있다.

출처 : 경사하강법(gradient descent) - 공돌이의 수학정리노트 (Angelo's Math Notes) (angeloyeo.github.io)

 

기울기만을 가지고 우리가 현재값에 대입을 하였을때 기울기값이 너무 작은 값으로 나온다면 왼쪽그림과 같이 머신러닝의 학습시간이 오래걸리거나 지정한 학습 수 가 종료되었을때 최적의 값을 찾지 못할 수도있다.

반대로 너무 큰 값으로 바뀌게 된다면 오른쪽 그림처럼 최적의 점을 뛰어 넘고 발산하게 되는 일이 생길 수도 있다.

이를 방지 하기위해 Learning rate라는 상수 값을 통하여 기울기 값을 보정하여 다음 지점으로 이동하여 최적의 값을 찾게 된다.

Local optimum(지역 )

경사하강법의 시작점은 랜덤한 기울기값과 절편값을 넣는다고 하였었다.

그렇다면 Cost Function 값이 위의 그림과 같이 형성 되는 그래프 모양을 가졌을때 A점과 B지점에서 시작할때 각각의 도출되는 값이 다를 수 있다. A값을 넣었을때 우리는 Local optimum을 찾았지만 Global optimum을 찾지 못하는 경우가 있을수 있기때문에 항상 이점을 유의 해야된다.

 

 

MSE, SSE 설명

 

미분 설명글

https://probablity.tistory.com/21