안녕하세요.
이번 포스팅에서는 지난 포스팅에 이어, Logistic Regression의 cost함수에 대해 알아보도록 하겠습니다.
* 해당 포스트의 모든 내용은 김성훈 교수님의 '모두를 위한 딥러닝'을 바탕으로 제작되었습니다.
관련한 상세 내용은 아래 링크를 참고해주세요.
1. Logistic Regression의 Cost Function
우리가 지난 Linear Regression에서 Cost 함수에 대해서 이야기 해볼때는 아래와 같은 형태로 나왔습니다.
그래프를 보면 2차함수꼴로 최저점을 보다 쉽게 찾을 수 있었습니다.
그런데 지난 포스팅에서 알아보았듯이 Logistic Regression 에서는 Hypothesis가 다르게 세워졌습니다.
그럼 Cost 함수는 어떻게 될까요?
결론부터 말씀드리면 Cost 함수 또한 다르게 세워야합니다.
Linear Regression에서는 단순한 2차함수로써 우리가 Gradient decent 함수를 통해 최저점을 찾음으로써 cost를 최소화 하는 것이 가능했으나, Logistic Regression에서는 다릅니다.
Logistic Regression에서 우리가 세운 Hypothesis의 그래프는 위의 그래프의 형태를 띄게 됩니다.
그리고 그래프에서 나왔듯이 저러한 형태의 그래프는 Local Minimum(지역 최저점), Global Minimum(전역 최저점)을 가지고 있습니다. 우리가 지난 Linear Regression에서 사용한 Gradient decent를 사용한다면 지역 최저점에 걸려 진짜 최저점인 전역최저점을 찾을 수 없게 됩니다.
따라서 우리는 아래와 같이 새로운 Cost 함수를 정의해야 합니다.
새로운 Cost 함수는, 어떤 것의 평균을 내는데, 하나의 요소에 대한 cost를 산출하는 것에 대해 더 살펴보면, 총 2가지 case로 나눠서 산출합니다. y가 1일때와 0일때로 나누는데 왜 이렇게 할까요?
우리가 정의한 Cost 함수를 살펴보기 위해 아래 그래프를 함께 보도록 하겠습니다.
위의 그래프는 대략적으로 -log(x) 함수의 형태를 가지고 있습니다.
이제 2가지 case로 Cost함수에 대해서 살펴봅니다.
먼저, y = 1일때 입니다. 이때 Cost 함수는 -log(H(x)) 입니다.
이때 우리가 제대로 예측하여, H(x) = 1 값을 갖는다고 생각해봅시다.
그럼 Cost 함수에 대한 결과가 매우 작은 값(거의 0)에 가깝게 나와서 cost가 작게됩니다.
반대로, 우리가 제대로 예측하지 못하여 H(x) = 0 값을 갖는다면
Cost 함수에 대한 결과는 매우 큰값(거의 무한대)에 가깝게 나와서 cost가 매우 크게됩니다.
그리고 같은 방식으로 y = 0 일때를 생각해봅니다. 이때 Cost 함수는 -log(1-H(x)) 입니다.
이때 우리가 제대로 예측하여 H(x) = 0 이라면
Cost 함수에 대한 결과가 -log(1-0) 으로써 매우 작은 값을 갖게 되어 cost가 작게 되고
우리가 제대로 예측하지 못하여 H(x) = 1이라면
Cost 함수에 대한 결과가 -log(1-1) 으로써 매우 큰 값을 갖게되어 cost가 매우 크게됩니다.
다시 한번 Cost 함수를 확인하면 아래와 같이 식으로써 정의할 수 있습니다.
위의 식들 중 맨 아래 식에서와 같이 y = 1일때와 y = 0일때의 식을 코드에서 if문을 사용하지 않도록 하나의 식으로 나타낼 수 있습니다.
( ylog(H(x))가 아닌 -ylog(H(x))입니다. )
그럼 이제 그 다음 단계인, cost를 최소화 하는 단계입니다.
이는 위에서 우리가 새로운 Cost 함수를 세웠기 때문에 이전과 같이 Gradient decent 알고리즘을 통해 Cost 함수의 최저점을 찾도록 합니다.
이렇게 해서 Logistic Regression에 대해서 알아보았습니다.
다음 포스팅에서는 Multinomial에 대한 개념을 알아보도록 하겠습니다.
'AI & BigData > 모두를 위한 딥러닝(정리)' 카테고리의 다른 글
머신러닝(ML) #7_ Multinomial classification의 개념 (1) | 2018.03.20 |
---|---|
텐서플로우(Tensor Flow) #6_ TensorFlow로 Logistic Classification 구현하기 (0) | 2018.03.16 |
머신러닝(ML) #5_ Logistic Classification의 가설 함수 정의 (0) | 2018.03.15 |
텐서플로우(Tensor Flow) #5_ 파일에서 데이터 불러오기 (2) | 2018.03.14 |
텐서플로우(Tensor Flow) #4_ multi-variable linear regression 구현하기 (0) | 2018.03.13 |