[ML / Andrew Ng] Logistic Regression - Logistic Regression Model
이번 시간에는 Logistic Regression의 Cost function을 알아보려고 합니다. Linear Regression와 똑같이 J 함수를 정의하고 h함수를 새로 대입하면 간단하게 해결될 것 같지만 그렇게 하면 문제가 생깁니다. 바로 J함수가 왼쪽 그래프처럼 Non-convex function으로 그려지게 되는데 이렇게 되면 local-optima가 많이 생겨 global-optima에 도달하지 못해 비교적 정확한 예측이 불가능하다는 문제가 생깁니다. 그렇기에 우리는 새로운 Cost function을 정의해야만 합니다.
새로 정의한 J함수입니다. J함수가 이전과는 다른 모습이 눈에 띕니다. 바로 y의 값에 따라 함수를 2개로 나눈 것인데 이렇게 함으로써 방금 언급한 문제점을 해결할 수 있고 더 직관적인 Cost function을 정의할 수 있습니다. 위 함수는 간단하게 y = 1일 때 h함수가 1에 가까워질수록 J함수가 0에 가까워지고 0으로 갈수록 무한으로 발산합니다. y가 0일때는 반대로 작용하며 그림과 같습니다.
우리가 원하는 것은 x가 주어졌을때 y값을 정확히 예측하는 h함수(;theta)를 찾는 것입니다. 그렇기에 y값에 따라 h함수값 즉 확률을 보고 그 값이 얼마나 일치하냐에 따라 J함수가 줄어드는 함수입니다. 예측이 정확할수록 J함수가 최소가 되는, 우리가 원하는 Cost function입니다.
Cost function을 간단하게 표현하면 위와 같이 표현이 됩니다. y = 0, 1을 대입하면 왼쪽 또는 오른쪽 항이 제거가 되어 결과적으로 위에 설명했던 함수와 똑같이 됩니다. 우리는 J함수가 최소가 되도록 하고 정확한 예측을 하는 h함수를 정의하기 위해 적절한 theta값을 찾아야 합니다.
이제 Gradient Descent를 통해 theta를 갱신해봅시다. Linear Regression과 같이 alpha와 theta로 편미분한 J함수를 곱해주고 theta와 빼줍니다. 식 자체는 Linear Regression과 동일해보입니다. h 함수만 바꿔 대입해주면 알고리즘상 거의 동일하다고 보면 됩니다.
Gradient Descent 뿐 아니라 더 발전된 알고리즘들이 더 있습니다. 강의에선 예시로 Conjugate gradient, BFGS, L-BFGS 등이 언급되었습니다. 이 알고리즘의 장점으로는 learning rate인 alpha를 정해주지 않아도 되고 종종 Gradient Descent보다 빠르다는 점입니다. 하지만 단점으로 더 복잡한 알고리즘이라는 점입니다. 예시로만 알아두고 정확히는 다루지 않았기에 무엇이 있는지만 짚고 넘어가겠습니다.