Linear Regression에서 cost를 가장 작게 만드는 것이 머신러닝(linear regression)의 목표라고 하는데, 그러면 가장 작은 cost를 어떻게 찾아야 하는가?
이번 포스트에서는 최소의 cost를 가지는 값을 찾는 알고리즘을 설명하도록 하겠다.
잠깐의 복습
우리가 만든 Hypothesis와 그것의 cost를 구하는 함수는 아래의 식과 같다.
여기서 우리는 cost를 가장 작게 하고 싶다.
최소의 cost를 가지는 것을 어떻게 찾는가?
위 표의 데이터를 이용하여, 각 W를 가정하고 cost를 구해보자.
W = 1, cost(W) = 0
W = 0, cost(W) = 4.67
W = 2, cost(W) = 4.67
W가 1일때 cost가 0이다. W = 0 or 2 이면 cost는 0보다 큰 값이 된다.
cost가 0인 W=1일 때가 가장 정확한 hypothesis를 만들게 된다.
우리는 모든 W와 cost값을 그래프로 표현하면 아래와 같은 2차 방정식 그래프 형식이 나타나게 된다.
한 눈에 딱하고 가장 작은 cost를 가지는 W를 찾을 수 있다. 앞으로 설명하는 모든 그래프는 이 그래프를 지칭한다.
cost 최소화 알고리즘? (Gradient descent algorithm)
W-cost 그래프에서 어떤 점이 되어도 cost가 최저값이 되는 곳으로 이동하기 위해서는 Gradient descent algorithm을 이용한다.
Gradient descent algorithm은 말그대로 경사를 내려오는 알고리즘이다.
그래프에서 아무 점이나 선택하였다. 그 점을 기준으로 양옆을 보고 경사도가 더 낮은 지점으로 이동한다. 이 작업을 반복하면 결과적으로 경사도가 가장 낮은 즉, 0 이되는 지점에 도착하게 된다.
여기서 경사도는 그래프의 기울기이다.
기울기는 미분을 이용하면 아주 간단하게 구할 수 있다.
아래에서는 알고리즘을 식으로 표현하겠다.
우리가 표현하고자 하는 식이 바로 위 식이다.(알파=learning rate를 표현하며, 상수이다.)
W의 cost의 기울기가 +면 W(x축)는 왼쪽으로 이동할 테고, 기울기가 -면 W(x축)는 오른쪽으로 이동한다.
cost의 기울기가 0이면 W(x축)는 더 이상 이동하지 않을 것이다.
실제로 미분하기
먼저 미분을 쉽게 하기 위해 m을 2m으로 변경하겠다.(미분하면 차이가 없다.)
단계별로 착,착,착하면 미분된 식이 나온다. 이것이 바로 Gradient descent algorithm이다.
Gradient Descent algorithm의 한계
우리가 배운 알고리즘은 한가지 단점이 존재한다.
아래와 같은 형태의 그래프는 올록볼록한 그래프이다. 두 개의 다른 점에서 시작하여 각각 더 낮은 경사도를 따라갔을 뿐인데, 서로다른 곳에 도착하게 된다.
그래서 Gradient descent algorithm은 아래와 같은 볼~록한 그래프에서만 적용이 가능하다. 어디서 시작해도 경사도가 낮은 곳으로 이동하면 한곳에 도착하게 된다.
결론
Gradient Descent algorithm은 오직 Linear Regression에서만 사용할 수 있는 방식이다.
처음 배운 개념인 만큼 가장 단순한 형태에 데이터에나 적용할 수 있다.
그래서 별로 어렵지도 않다.
----------------------------------------------------------------------
https://hunkim.github.io/ml/
hunkim님의 머신러닝 강의로 공부한 내용을 작성합니다.
'CS > 머신러닝' 카테고리의 다른 글
[머신러닝] Logistic classification와 cost minimize 함수 (0) | 2016.11.23 |
---|---|
[머신러닝] 텐서플로 사용하기 - 1 (0) | 2016.11.23 |
[머신러닝] Linear Regression 실습 (0) | 2016.11.20 |
[머신러닝] Linear Regression 개념 (1) | 2016.11.20 |
텐서플로 설치 -3 (파이참(Pycharm)에 tensorflow 설치)[마지막] (0) | 2016.11.09 |