본문 바로가기
ETC

[머신러닝 앤드류응] (Week1) 4. 파라미터 학습

by bigpicture 2021. 4. 1.
반응형

앤드류 응 교수님의 코세라 머신러닝 강의를 요약하는 글입니다. Week1 의 상세 목차는 아래와 같습니다.

Week1 목차

1. Welcome
2. Introduction
3. Model and Cost Function
4. Parameter Learning
5. Linear Algebra Review


이번 글은 Week1의 4강인 Introduction 요약입니다.


Week1 

4. Parameter Learning

1) Gradient Decsent

지난시간에 정의한 비용함수는 아래와 같습니다. 

$J(\theta_{0},\theta_{1})=\frac{1}{2m}\sum_{i=1}^{n}\left ( h(x^{(i)})-y^{(i)} \right )^2$

이 함수를 최소화하는 해를 찾는데는 경사하강 알고리즘 (Gradient Descent Algorithm)을 사용합니다. 변수가 두개인 경우를 생각해봅시다. 함수는 J인데 위와 같이 특정된 J가 아니라 일반적인 경우라고 생각합시다. 

$J(\theta_{0},\theta_{1})$

우리는 이 함수를 최소화하고 싶습니다. 

$\underset{\theta_{0},\theta_{1}}{min} J(\theta_{0},\theta_{1})$

방법은 아래와 같습니다.

1) 어떤 $\theta_{0},\theta_{1}$ 에서 시작 (초기값으로는 0을 주로 사용)
2) $\theta_{0},\theta_{1}$을 바꿔가며 $J(\theta_{0},\theta_{1})$ 를 줄임
3) 최소값에 도달할 때까지 2를 반복함

변수가 더 많아도 동일합시다. 일단은 2개로 진행하겠습니다. 

 

경사하강 알고리즘을 적용할때 어떤 일이 벌어지는지를 살펴봅시다. 아래 그림을 봅시다. 

 

어떤 J함수를 시각화한 것입니다. 경사하강법의 원리는 이렇습니다. 어떤 점에서 출발할 때, 주위를 둘러보고 경사가 가장 가파른 길로 내려가는 것입니다. 

 

 

경사하강 알고리즘은 여러 국소해(local optimum)에 빠질 가능성이 있습니다. 이것에 대해서는 나중에 이야기합시다. 

 

 

경사하강 알고리즘을 수학적으로 정의하면 아래와 같습니다. 

 

$\theta_{j}:=\theta_{j}-\alpha \frac{\partial }{\partial \theta_{j}}J(\theta_{0},\theta_{1}) \quad (for \ j=0 \ and \ j=1)$

 

:= 는 우변의 계산결과를 좌변에 넣겠다는 의미입니다. $\alpha$ 는 한번에 움직이는 정도를 결정합니다. $\alpha$가 작으면 천천히 움직이며 해를 찾습니다. Learning rate 라고 부릅니다. 

 

$\theta_{0},\theta_{1}$ 은 동시에 업데이트됩니다. 수렴할 때 까지 반복합니다. 

 

 

2) Gradient Decsent Intuition

지난시간에 정의한 경사하강 알고리즘은 아래와 같습니다. 

 

$repeat \ until \ convergence \\ 
\begin{align}
\left \{  
\theta_{j}:=\theta_{j}-\alpha \frac{\partial }{\partial \theta_{j}}J(\theta_{0},\theta_{1}) \quad 
(simultaneously \ update \ j=0 \ and \ j=1)
\right \}
\end{align}$

 

어떤 $\theta_{1}$ 값에서 출발하여 업데이트되는 과정을 살펴봅시다. 

 

$\theta_{1}:=\theta_{1}-\alpha \frac{\partial }{\partial \theta_{1}}J(\theta_{0},\theta_{1})$

 

아래 편미분은 $\theta_{1}$방향의 편미분입니다. 

 

$\frac{\partial }{\partial \theta_{1}}J(\theta_{0},\theta_{1})$

 

최소값을 찾기 위해서 이 값이 양수라면 반대 방향(-방향)으로 가야 하고, 음수라면 같은 방향(+방향)으로 가면 됩니다. 그렇게 하기 위해서 앞에 (-)를 붙여준 것입니다. 

 

$\alpha$는 한번에 어느정도 움직일지를 결정합니다. $\alpha$ 값이 너무 작다면 너무 천천히 움직일 것이고, $\alpha$값이 너무 크다면 수렴하지 않거나, 발산할 수도 있습니다. 

 

$\alpha$ 를 줄여나갈 필요는 없습니다. 해에 가까워져 갈수록 편미분 값이 작아지기 때문입니다. 해에서 편미분값은 0입니다. 

 

 

3) Gradient Decsent For Linear Regression

경사하강 알고리즘을 선형회귀모델에 적용해봅시다. 선형회귀모델의 비용함수는 아래와 같습니다. 

 

$J(\theta_{0},\theta_{1})=\frac{1}{2m}\sum_{i=1}^{n}\left ( \theta_{0}+\theta_{1}x^{(i)}-y^{(i)} \right )^2$

 

$\theta_{0}$와 $\theta_{1}$으로 편미분해봅시다. 

 

$j=0: \frac{\partial J(\theta_{0},\theta_{1})}{\partial \theta_{0}}=
\frac{1}{m}\sum_{i=1}^{n}\left ( \theta_{0}+\theta_{1}x^{(i)}-y^{(i)} \right )$

 

$j=0: \frac{\partial J(\theta_{0},\theta_{1})}{\partial \theta_{1}}=
\frac{1}{m}\sum_{i=1}^{n}\left ( \theta_{0}+\theta_{1}x^{(i)}-y^{(i)} \right )x^{(i)}$

 

경사하강 알고리즘은 아래와 같습니다.

 

$\\
repeat \ until \ convergence
\\ \\
\theta_{0}:=\theta_{0}-\alpha \frac{1}{m}\sum_{i=1}^{n}\left ( \theta_{0}+\theta_{1}x^{(i)}-y^{(i)} \right )
\\ 
\theta_{1}:=\theta_{1}-\alpha \frac{1}{m}\sum_{i=1}^{n}\left ( \theta_{0}+\theta_{1}x^{(i)}-y^{(i)} \right )x^{(i)}
\\ \\ \\
(update\ \theta_{0} \ and \ \theta_{1} \ simultaneously)$

 

선형회귀모델의 비용함수는 항상 아래와 같이 bowl-shape(보울 형태) 함수입니다. convex 함수 라고도 합니다. 따라서 국소해에 빠질 위험이 없습니다. 

 

알고리즘을 실행하면 아래와 같이 최소값을 찾아갑니다. 

 

용어를 하나 소개하겠습니다. 각 step 에서 모든 training example 을 사용하는 경사하강 알고리즘을 batch gradient descent 라고 부릅니다. 

반응형

댓글