개요
머신러닝 중 선형회귀에서 쓰이는 방법론인 경사하강법이 무엇인지 알아보자.
지도학습인 선형회귀의 경사하강법으로 어떻게 데이터의 값에 가장 근접하게 예측할 수 있을까?
경사하강법?
경사하강법은 linear regression의 방법론이다.
지도학습 중 하나인 linear regression의 방법론답게 학습을 위해서는 학습데이터가 주어져야 한다.
그 주어진 학습 데이터로 학습을 한 그 모델로 새로운 데이터가 들어왔을 때 근사한 해를 예측할 수 있도록 한다.
경사하강법의 과정
그렇다면 이제 경사하강법은 어떻게 적용되는 것인지 알아보자.
일단 우리가 원하는 것은 훈련데이터와 우리가 그린 직선이 가깝게 붙어있는 것이다.
위의 그림을 보면 직선과 훈련데이터들의 값이 많이 떨어져있는 것으로 보인다.
그 떨어져있는 정도가 바로 cost, error를 의미한다.
우리는 어떻게든 해를 조절해서 그 cost값을 줄여야만 한다.
해를 조절하여 cost값이 줄어든다면, 우리는 그래프의 가장 저점에 도달할 수 있게 된다.
이렇게 해를 조절하여 error의 값을 최소화시키면, 그래프에서는 자연스럽게 언덕 위에서 아래로 공이 굴러가는 듯한 모습이 나타난다.
높은 경사에서 저지대로 공이 떨어지는 모습이 연상되는 현상이 나타나는데, 그것이 바로 경사하강법이다.
값을 조절해나가면서 최적의 해를 찾는 것이다.
Cost function
그렇다면 우선 cost가 현재 어느 정도인지 즉, 현재 error가 어느 정도로 나고 있는지
훈련데이터와 내가 작성한 직선이 얼마나 차이가 나는지 알고 있어야 cost 그래프를 그릴 수가 있을 것이다.
내가 작성한 직선과 훈련데이터 사이의 cost를 알 수 있도록 해주는 함수를 Cost function이라고 한다.
(Σ(b+w*x−y)^2) / len(data)
cost function은 이런 식으로 작성할 수 있다.
위는 squared error function(코드로 작성)
아래는 mean squared error function이다.
mean인 이유는 나누기가 있기 때문에.(산술평균이라는 의미)
b는 y절편
w는 기울기
y는 방정식의 y값을 의미한다.
그리고 제곱을 해주는 이유는 함수의 값이(cost의 값이) 마이너스로 나오는 걸 방지해주기 위해서이다.
또, cost의 값을 극명하게 나타내주기 위해서라는 이유도 있다.
이렇게 cost function을 활용하여 여러 값들을 대입해서 도출된 함수값을 이용하면,
y축에는 cost, x축에는 theta값인 그래프를 얻을 수 있다.
이제 그래프를 얻었으니 경사하강법을 사용할 수 있다!
경사하강법의 적용법
적용법을 알려면 1가지를 알고 있어야 한다.
그것은 바로 더 낮은 지점으로 이동을 시키는 방법이다.
w - α(w`)
(w`: w prime)
우리가 설정한 w 값에 w prime과 learning rate α를 곱한 값을 빼주는 것이다.
즉, w`은 접선의 기울기라고 할 수 있는데 더 자세하게 표현하면 x를 옮겼을 때 y가 얼마나 움직였냐를 나타내는 것이다.
α를 w`에 곱해주는 이유는 local minima에 빠져도 나올 수 있게끔 조절을 도와주는 역할을 한다. 그래서 step size라고도 한다.
한번에 얼마나 움직일지를 정해주는 것이다.
이 수식만 알고 있다면, 경사하강법은 끝이다.
이 수식에 값을 넣어서 반복적으로 작동시키면 되기 때문이다.
따라서 과정은 이러하다.
1. 처음에는 임의의 w값을 정한다.
2. w - α(w`)를 적용한다.
3. 저점에 도달할 때까지 과정 2를 반복한다.
위의 과정을 따르면 이런 현상이 그래프에서 나타나게 되며, 최적의 값을 찾아준다.
아래는 3차원 그래프에서의 gradient descent이다.
만약, multiple local minima에 빠지지 않았다면, 운이 좋았다면, 한번에 최저점을 찾을 수 있다.
하지만 multiple local minima에 빠졌다면 learning rate를 조절하여 최저점을 찾는 여정을 경험해야 하는 것 같다.
'자연어 처리 과정' 카테고리의 다른 글
Cost function for Logistic regression (1) | 2022.11.30 |
---|---|
Feature scaling에 대해 (0) | 2022.11.29 |
determinant가 0이라는 것의 의미는? (0) | 2022.11.25 |
SVD의 이해 (0) | 2022.11.24 |
Change of basis의 이해 (0) | 2022.11.23 |