본문 바로가기
Artificial Intelligence/Deep Learning

coursera_week2_3_Logistic Regression Cost Function

by raphael3 2017. 10. 4.
반응형
logistic regression model에서 parameter인 W와 b를 학습하기 위해서는 loss function을 정의해야 한다. 목표를 다시 상기하자. m개의 training set이 주어졌을 때, 우리의 목표는 모든 각각의 training set에 대하여 y^의 결과를 최대한 y가 되게 하는 것이다; 이 때 y^은 다음과 같이 sigmoid를 쓰면 얻을 수 있다;  ()


이제, Loss function 또는 error function이라고 불리는 함수에 대해 알아보자. 이 함수는 알고리즘이 얼마나 잘 작동하는지를 측정하는 데에 사용된다. 그러기 위해 한 가지 할 수 있는 일은 y^과 y의 loss를 제곱이 된 error 또는 제곱이 된 error의 절반으로 정의하는 것이다;  

하지만 위의 loss function은 logistic regression 문제에서는 활용하기 적합하지 않다. non-convex하기 때문이다. 이 토픽에 대해서는 나중에 다룬다. logistic regression에서 위의 loss function을 쓰게 되면 여러 개의 local optima를 얻게 된다; 

이렇게 local optima가 여러 개 있는 경우, Gradient Descent 방법이 잘 작동하지 않는다. 즉 Gradient Descent방법으로는 global optima를 찾을 수 없게 된다.
다만, 여기서 캐치해야 할 부분은 L로 표시된 Loss function은 실제값이 y일 때, 모델에 의해 나온 값인 y^의 값이 얼마나 좋은지를 측정하기 위해 정의된 함수라는 것이다.

error에 square를 한 것은 Gradient Descent가 잘 작동하지 않는 문제가 있다는 점을 제외한다면, 합리적인 선택으로 보인다. (왜냐하면, 실제값과 관측값의 차이를 그저 빼기만 하면 음수값이 나올 수도 있기 때문이다. 음수값이 나오지 않게 하기 위해 제곱을 하며, loss function을 결국 미분하여 파라미터를 최적화해야 하기 때문에, 미분에 의해 나올 값인 2를 상쇄시키기 위하여 1/2를 곱한 것이다.)

logistic regression에서 우리가 실제로 사용할 loss function은 squared error function과 유사한 역할을 하는 function이다. 이 function은 convex하다. 다음과 같다;  negative[]

squared error에서는 그 값이 가능한한 작은 값이면 좋은 것처럼, 위의 loss function 역시 작은 값이면 좋다. 이를 이해하기 위해 다음의 두 가지 경우로 나누어 이해한다.
먼저, y가 1일 경우, loss function은 다음과 같다; 
이 수식에서, entropy임을 감안한다면, 값은 가능한한 작아져야한다. 즉 값은 가능한 한 커야 하며, 이 말은 곧 y^값이 커야함을 의미한다(그런데 y^값은 아무리 커봐야 1을 넘지 못한다.). 이는 합리적인데, log 1 값은 곧 0이기 때문이다. 가능한한 y^값을 1이 되게 함으로써, log y^값이 0에 가까워지게 한다. (log(-0.5)값은 약 -0.3 으로서 음수값이다.  따라서 전체 엔트로피는 증가하게 된다.) y^값이 1에 가까워질수록 엔트로피가 0에 가까워지게 된다.

그 다음, y가 0일 경우, loss function은 다음과 같다; 
이 때도 마찬가지로 loss function을 가능한한 작게 한다는 것은 곧 값을 작게 만든다는 의미이며, 값을 크게 한다는 의미가 된다. 그러므로 y^값은 가능한 한 작아야 한다. 그래야 값이 0이 되어 엔트로피가 작아지게 된다. 마찬가지로 y^값은 sigmoid에 의해 나오는 값이므로 아무리 작아봐야 0이다. 따라서 y^값이 0에 가까워질수록 엔트로피가 0에 가까워지게 된다. 

즉, 학습 과정에서, loss function속에 정의된 파라미터들이 loss function이 가능한한 0에 가깝게 되도록 조정될 것이다.

지금까지 살펴본 loss function들은 사실, single training set에 대한 loss function들이었다. 즉 하나의 data에 대하여 학습이 얼마나 잘 되는지를 측정한 것이다. 전체 dataset에 대해서는 loss function이 아니라 cost function이라고 부른다. 이 때의 cost function을 Loss function의 L 대신에, Jacobian의 J라고 표현한다. 
cost function은 다음과 같이 표현된다;
즉, cost function은 전체 dataset에 대한 loss function의 average를 의미한다.

따라서 loss function과 cost function의 terminology를 구분해야 한다.




반응형