앞선 포스트에서 정리하였던 것과 같이 경사하강 알고리즘은 비용함수를 미분하여 경사를 획득하고 이 경사값을 따라 진행해가며 그 값이 수렴할 때까지 반복하는 것입니다.
이를 수식으로 표현하면 아래와 같이 요약됩니다.
θj:=θj−α∂θj∂J(θ0,θ1)
선형회귀의 경우에 대해서 구체적으로 이를 적용해 보도록 하겠습니다.이를 위하여 비용함수와 가설함수를 선형회귀의 비용함수와 가설함수로 교체하도록 합니다.
우선 선형회귀의 비용함수는 다음과 같습니다.
J(θ0,θ1)=2m1i=1∑m(y^i−yi)2=2m1i=1∑m(hθ(xi)−yi)2
이를 경사하강법 수식에 적용을 하면 다음과 같습니다.
θj:=θj−α∂θj∂2m1i=1∑m(hθ(xi)−yi)2
다음으로 선형회귀에서의 가설은
hθ(xi)=θ0+θ1xi
입니다.
역시 이를 경사하강법 수식에 적용하면 우리는 아래의 수식을 얻게 됩니다.
θj:=θj−α∂θj∂2m1i=1∑m(θ0+θ1xi−yi)2
이제 θ0 과 θ1 에 대하여 각각 편미분 하여 수식을 나누어 보면 다음과 같이 새로운 형태의 경사하강법 수식을 얻게 됩니다.
θ0:=θ0−αm1i=1∑m(hθ(xi)−yi)θ1:=θ1−αm1i=1∑m((hθ(xi)−yi)xi)
여기서 m은 훈련집합의 크기 입니다. θ0 과 θ1 는 동시에 갱신해야 하는 상수값 입니다. xi, yi 는 주어진 훈련 데이터의 값입니다.
기존의 θj에 대한 비용함수 수식을 θ0 과 θ1 의 경우로 나누었습니다. 그리고 θ1 의 경우에는 미분을 하였기 때문에 끝에 xi 가 곱해졌습니다.
일반적인 ∂θj∂J(θ) 에 대한 편미분은 다음과 같습니다.
∂θj∂J(θ)=∂θj∂21(hθ(x)−y)2=2⋅21(hθ(x)−y)⋅∂θj∂(hθ(x)−y)=(hθ(x)−y)⋅∂θj∂(i=0∑nθixi−y)=(hθ(x)−y)xi
요점은 만약 우리가 우리의 가설에서 시작하여, 경사 하강 방정식을 반복적으로 적용하면 우리의 가설이 점점 더 정확해질 것이라는 것입니다.
참고 및 출처
Coursera - Machine Learning, Gradient Descent For Linear Regression