Coursera - Machine Learning week.2
Cost function
예를 들어서 다음과 같은 데이터셋이 있을때,
H(hypothesis) 가 다음처럼 나온다면
여기서
0 (Theta)
는 parameter 라고 부른다. 문제는, 상수를 어떻게 찾느냐인데, 아이디어는 간단하다. training set (x, y)
에 가까운 h(x)
를 찾으면 된다.
따라서 다음과 같은 식을 만들 수 있고,
J(01, 02)
를 최소화 하는 (01, 02)
를 찾으면 된다. 이 식을 cost function 또는squared error function 이라 부른다. 여기서 1/2m
에서
1/m
으로 나누는 이유는 squared error 에 대해 mean 을 얻기 위한거고, 1/2
로 다시 나누는 이유는 미분했을때 나오는 2
를 제거하기 위해서다.Cost Function: Intuition 1
Cost function 에서 만약에
0_0
이 제로라면 0_1
만 찾으면 된다. 따라서 다음과 같은 실제 데이터에서
J(0_1)
을 찾아보면, 다음과 같은 이차함수가 나온다.당연히 이차함수이므로, 기울기가 0이 되는 지점은
J(0_1)
을 미분해서 찾으면 된다. (이래서 아까 1/2가 있던 것)Cost Function: Intuition 2
Parameter 가
0_1
만 있었을때는, (0_0
= 0) J(0_1)
이 이차함수였지만, J(0_0, 0_1)
일때는 다음과 같은 모양을 보여준다.여기서
J(0_0, 0_1)
값을 제외하고 (0_0, 0_1)
을 평면으로 나타내면 아래 사진에서 우측과 같은 여러 궤도가 나온다.여기서 같은 궤도에 있는
(0_0, 0_1)
쌍은, 같은 J
함수를 만든다. 그리고 재밌는 사실은 궤도가 가장 좁은 타원의 중심에 있는 (0_0, 0_1)
가 가장 작은 J(0_0, 0_1)
를 만들어 낸다.Gradient Descent
Gradient Descent 알고리즘은 Linear Regression 에만 쓸 수 있는건 아니고, 범용적인 알고리즘이다. cost function 의 최소값을 찾기 위해 사용할 수 있는데, 다음과 같은
J
가 있을때,높이를 비교해 가며 점점 낮은쪽으로 이동해 가면서
J
의 최소값을 찾을 수 있다. 식은 다음과 같은데,여기서
:=
는 assignment 다. a(alpha)
는 learning rate 라 부른다. 이때 (0_0, 0_1)
은 동시에 업데이트 되야한다. (Simultaneous update)Gradient Descent: Intuition
이제 저 식을 분해하기 위해
J(0_1)
처럼 parameter 하나만 놓고 보면, 이차원 함수가 나올테다. 만약 현재 0_1
이 이차함수의 최저점 우측에 있다면, J(0_1)
을 미분한 값(Slope, 기울기) 에 양수 a
를 곱한 값을 0_1
에서 뻬면서 갱신하면 0_1
은 점점 최저점 쪽으로 간다,
반대로
0_1
이 J(0_1)
의 좌측에 위치한다면 우측으로 이동하고, 아래는 그걸 요약한 그림이다.따라서 learning late
a
가 너무 작으면 Gradient descent 가 너무 느려진다. 왜냐하면0
의 차이가 점점 작이지기 때문에 최저점에 도착할때 까지 너무 많은 단계가 필요하다.
반대로 너무 크면 최저점을 넘어갈 수 있다. 심지어 최저점에서 점점 더 멀어질 수 있다.
그런데 이 gradient descent 알고리즘의 문제는 local optimum 수 있다는 점이다. 왜냐하면 local optimum 에서도J
의 derivative 가0
이기 때문이다.
Gradient Descent For Linear Regression
이제 cost function 을 gradient descent 에 집어넣고, 정리하자.
0_0(Theta zero)
, 과 0_1(Theta one)
대해서 시그마 내부 제곱을 각각 미분해서 정리하면,참고로 Convex function 은 Bowl shaped 처럼 local optima 가 없는
h
(Hypothesis) 를 말한다. 따라서 convex function 을 선택할 수 있다면, 하는편이 낫다.
어떤 경우에는 gradient descent 같은 iterative algorithm 없이도
min J(0_0, 0_1)
를 풀 수 있다.References
(1) http://mercris.wordpress.com/
(2) http://mapository.tistory.com/
(3) http://econometricsense.blogspot.kr
(4) http://pingax.com/
(2) http://mapository.tistory.com/
(3) http://econometricsense.blogspot.kr
(4) http://pingax.com/
(5) http://1ambda.github.io/machine-learning-week-1/
댓글
댓글 쓰기