Team Friends Project/Machine running & Tensorflow

Logistic Regression 의 cost 함수 (lec 5-2)

LeeJHstory 2017. 9. 27. 20:58


Logistic (regression) classification : cost function & gradient decent

코스트 함수와 코스트 함수의 minimize 하는 알고리즘


가설로 예측한 값과 실제의 값의 차의 평균을 내면 아래와 같은 형태의 그래프가 된다.


이제 가설이  로 변경이 되었기 때문에 출력값이  0<~<1 사이에 들어오게 된다.


위의 새로운 형태의 H(X) 를 사용하여 cost 함수를 그려보면 일정하지않고 구불구불한 모양이 나타나게 되어 문제가 생긴다.

(시작점이 어딘지의 따라 진짜 최저점(global minimum)을 찾을 수가 없다.)

따라서 H(X)를 변경하였기 때문에 그에 따라 cost(W) 또한 변경해 주어야 한다.

기존의 cost함수는 어떤 값의 합을 m으로 나누어 평균내는 것


c(H(x),y) 함수는 y가 1일 때와 0일 때를 나누어 함수를 정의한다.( H(x)의 e이 그래프를 구부러 지게 만드리 때문에 log함수로 보완하기 위해)

log함수로 0과 1사이의 그래프를 만들면 이상적인 값을 얻을 수 있다.



cost함수의 의미가 실제의 값과 예측한 값이 같으면 cost 값이 작아지고 반대의 경우 cost 값이 커져서 cost 값을 작게 해준다.





X축이 H(x)라고 보면 되고, Y축이 cost함수라고 보면된다.

y가 1일 때, 예측한 H(x)가 1이면 왼쪽 그래프와 같이 -log(H(x)) 함수의 그래프를 적용하여 cost값이 0에 가까워져서 최소화가 된다.

y가 1일 때, 예측한 H(x)가 0이면 왼쪽 그래프와 같이 -lob(H(x)) 함수의 그래프를 적용하여 cost값이 ∞로 커져서 안좋은 cost값이 된다.

y가 0일 때는 오른쪽 그래프와 같이 -log(1-H(x)) 그래프를 적용하여 같은 방법으로 확인해 볼 수 있다.


C(H(x),y) = -ylog(H(x)) - (1-y)log(1-H(x)) 로 형식을 변경할 수도 있다.


Minimize cost - Gradient decent algorithm



코스트 함수의 경사(기울기)를 구하기 위해서 아래와 같이 미분을 사용하게 된다.

미분을 어느정도 내려가게 하겠다는 값을 α라고 한다.(learning rate)


텐서플로에 적용할 때는 cost(W) 함수를 그대로 써주면 되고  GradientDescentOptimizer() 라이브러리를 그대로 사용하면된다.