복습
아래는 이전에 배운 Linear Regression의 hypothesis, cost function, gradient decent alogorithm이다.
hypothesis :
cost :
gradient decent :
그리고 cost function을 그래프로 표현하면 아래와 같다
binary classification
많은 상황중에 두가지중 하나가 선택되는 경우는 많다. 그러한 상황을 binary classification이라고 한다.
예를 들면, 이메일이 스팸메일인지 아닌지를 확인, 페이스북에서 특정 글이 나의 피드에 보여질지 말지 등등
실세계의 다양한 현상이 2가지로 결정되는 현상은 많다.
우리는 이런 2가지 현상을 0,1로 encoding을 하겠다.
스팸메일은 1, 정상 메일은 0 처럼 각 상황을 0 or 1에 mapping한다.
Linear Regression의 한계
여기서 우리는 다른 상황을 생각해보도록 하겠다.
공부를 한 시간과 시험 통과 여부를 가지고 가설을 세우겠다.
아래는 그것을 그래프로 표현한 것이다.
여기서 학습하는 데이터중 하나가 100시간과 같은 매우 거대한 x값을 가지고 시험에 pass를 하게 되면,
hypothesis는 기존보다 기울기가 많이 기울어 지게 된다. 그렇게 되면, 기존의 pass하던 시간도 fail이 되게 된다.
변경되는 양이 작은것이 아니고 많아지게 되서 문제가 발생한다.
또한, 우리는 0과 1의 결과만 사용한다. 하지만 Linear regression에서는 0과 1을 넘어가는 값들이 나타나게된다.
그래서! 우리는 결과가 0~1에서만 나오는 함수를 찾도록한다.
Sigmoid function(logistic function)
우리가 찾은 sigmoid function은 아래의 그래프와 같게 나타난다.
결과가 0~1사이에 범위에서만 나타나게 된다.
완벽하게 우리가 찾는 function이다.
z = WX라고하면
우리는 새로운 hypothesis인 logistic hypothesis를 얻게된다.
logistic hypothesis의 cost function 구하기
Linear Regression에서 cost function의 그래프는 아래와 같다.
계단을 내려가는 듯한 gradient descent algorithm을 이용해서 쉽게 가장 작은 cost를 찾을 수 있었다.
하지만, logistic hypothesis의 cost 함수를 그래프로 그려보면 아래와 같은 모양이된다.(발그림은....미안합니다.)
만약 이런 cost function 그래프에서 gradient descent algorithm을 이용하여 낮은 경사도를 찾아 가면,
빨간 X가 쳐진 곳처럼, 지역적으로 cost가 낮은곳에 도착하게 된다.
우리가 원하는 cost를 얻을 수 없다ㅠ
그래서 또 새로운 cost function을 사용하도록 한다.
하나의 cost는 y= 0 or 1인 두 가지 case를 통해서 구한다.
왜 두가지 인가?
cost값이 0이면 실제 데이터와 일치한다는 것이고
cost값이 커질수록 실제 데이터와의 차이가 크다는 것이다.
실제로 그린 그래프를 통해 2개의 식에대한 cost값들을 보면 알 수 있다.
y=1 (학습을 위해 주어진 데이터의 레이블이 0(pass)) 일 때,
H(x) = 1 (예측맞음) 이면 cost(1) = 0
H(x) = 0 (예측틀림) 이면 cost(0) = 무한
y=0 (학습을 위해 주어진 데이터의 레이블이 0(fail)) 일 때,
H(x) = 0 (예측맞음) 이면 cost(1) = 0
H(x) = 1 (예측틀림) 이면 cost(0) = 무한
두개의 그래프를 합쳐보면 아래의 그래프 모양이 나오게 된다.
두 개의 식을 하나의 식으로 표현 할 수 있다.
이제 우리는 밥그릇 모양의 cost function을 구했으므로 gradient decent algorithm을 사용할 수 있다.
'CS > 머신러닝' 카테고리의 다른 글
[머신러닝] multinomial classification이란? - 1 (0) | 2016.11.26 |
---|---|
[머신러닝] Logistic Classification 텐서플로 구현 (0) | 2016.11.25 |
[머신러닝] 텐서플로 사용하기 - 1 (0) | 2016.11.23 |
[머신러닝] Linear Regression의 minimize cost 알고리즘 (0) | 2016.11.22 |
[머신러닝] Linear Regression 실습 (0) | 2016.11.20 |