-
개인 공부 목적의 포스팅입니다. 잘못된 정보가 있다면 댓글 남겨주시면 수정하도록 하겠습니다.
감사합니다.** 길이가 긴 수식은 모바일 화면을 벗어납니다.
💡 주제 설명
logistic regression의 cost function이 도출되는 과정을 알아보자.
📌 배경
coursera machine learning 강의의 logistic regression을 듣는 중,
아래와 같은 cost function이 등장했다.
$$
\displaystyle -\sum_{i=1}^m\left \{ y_i\log h_w(x_i) + (1-y_i) \log (1-h_w(x_i)) \right \}
$$
여기서 y는 0 혹은 1을 나타내는 정답,
h(x)는 가설 (0 혹은 1에 가까운 예측 값을 내놓는 함수)
MLE에 의해 이런 식이 도출된다는데, 확률 및 통계를 2학년 1학기 때 배워봤기 때문에 직접 해보지 않고는 견딜 수 없었다.
🔍 과정
- 문제 정의
우선 cost function을 구하려는 이유가 뭘까?
가설인 $h_w(x)$를 정답으로 올바르게 "가장 잘" 분류할 수 있는 "최적의" w를 찾기 위함이다!
logistic regression 이기 때문에 가설은 $\displaystyle h_w(x) = \cfrac {1}{1+exp(-(w_0 + w_1 \cdot x_1 + \cdots))}$
(자세한 설명은 생략. 다시 보다 헷갈리면 sigmoid 혹은 logistic function으로 검색하자)
h(x)는 0에서 1 사이의 값으로 표현된다.
이는 0~1 중에 0과 더 가까우면 0으로 표현한 클래스로 분류하고,
1과 더 가까우면 1로 분류한다는 것이다.
하지만 출력 값이 0~1 사이이므로, 이를 더 간단하게 확률로 취급할 수 있다.
1에 가까울수록 1이라 했으니, 간단하게 생각하면 h(x)의 값을 1로 분류할 "확률"로 생각할 수 있다.
그렇다면 1-h(x)는 0으로 분류할 "확률"이다.
데이터를 1로 분류할 확률 : h(x)
데이터를 0으로 분류할 확률 : 1-h(x)
이제 문제를 다시 정의하면 아래와 같다.
"0인 것을 0으로 잘 분류하고, 1인 것을 1로 잘 분류할 수 있는 최적의 w를 찾는 것"- (log) likelihood function 정의
이제 문제의 정의를 통해 likelihood function을 나타낼 수 있다.
$$
\displaystyle \prod _{y_i = 1} h_w(x_i) \cdot \prod _{y_i = 0} (1-h_w(x_i))
$$
이제 위의 likelihood function을 최대화하는 w를 찾으면 된다...! (MLE)
무슨 소린지 수식이라 뭔가 어려워 보이지만, 위의 w를 구하는 과정을 쉽게 풀어내면 아래와 같다.
정답이 1일 때 1일 확률, 정답이 0일 때 0일 확률을 최대화하는 w를 구해라!
즉 이를 최대화하는 w를 구하면, 주어진 데이터를 가장 잘 분류할 수 있는 모델의 parameter를 구한 것이다.
이는 문제에서 정의했던 목표와 같다.
product $\prod$가 계산하기 불편하기 때문에, summation $\sum$으로 바꿔주기 위해 log를 취해준다.
$$
\displaystyle \log(\prod _{y_i = 1} h_w(x_i) \cdot \prod _{y_i = 0} (1-h_w(x_i)))
$$
$$
\displaystyle \sum_{y_i = 1} \log h_w(x_i) + \sum_{y_i = 0} \log(1-h_w(x_i))
$$
위 식을 적절히 변형해준다. (summation 1개로 합치기)
$$
\displaystyle \sum_{y_i = 1} (y_i\log h_w(x_i) + (1-y_i) log(1-h_w(x_i))) + \sum_{y_i = 0} ((1-y_i) log(1-h_w(x_i)) + y_i\log h_w(x_i))
$$
$$
\displaystyle \text {log-likelihood function}\ L(w) = \sum_{i=1}^m (y_i\log h_w(x_i) + (1-y_i) log(1-h_w(x_i)))
$$
L(w)를 "최댓값"으로 만드는 w를 찾으면 문제를 해결하는 것이다.- cost function 정의
$$
\displaystyle \text {log-likelihood function}\ L(w) = \sum_{i=1}^m (y_i\log h_w(x_i) + (1-y_i) log(1-h_w(x_i)))
$$
다른 모델에서 cost function을 사용할 때에는, 어떤 cost function을 "최소화"하는 방식으로 parameter를 최적화해왔다.
하지만, 위의 log-likelihood function은 "최대화"해야 최적화된 parameter를 구할 수 있다.
최대화하는 문제를 최소화 문제로 변경하는 것은 단순히 -1을 곱함으로 이룰 수 있다.
따라서 위의 log-likelihood function에 음수를 취한 형태가 Cost function이다
$$
\displaystyle \text {cost function}\ C(w) = -\sum_{i=1}^m (y_i\log h_w(x_i) + (1-y_i) log(1-h_w(x_i)))
$$
cost function을 구했으니, gradient descent를 적용하여 최적화된 parameter를 구할 수 있다.
사실 확률 및 통계 시간에 배웠던 방식은 (log) likelihood function에 미분을 취하여 최댓값을 구하는 방식이었는데,
그리 간단히 미분될 것 같지도 않고 우리에겐 좋은 최적화 도구 "gradient descent"가 있으므로 이를 이용하면 될 것이다.- 정의한 cost function이 convex 한가?
convex는 gradient descent를 통해 올바른 최솟값을 찾는데 중요한 성질이다.
convex 하지 않아서 local minima가 생긴다면,
gradient descent 중 global minimum이 아닌데도 기울기가 0인 지점(local minima)이 나타나게 된다.
따라서 global minimum을 찾기 힘들 것이다.
따라서 구한 cost function이 convex 하다면 최적화된 parameter를 찾기 더 편하다.
결론부터 말하자면, 위에서 구한 cost function은 convex 하다고 한다. 이에 관한 증명을 찾아봤다.
하지만, 정말로 제대로 이해했다고 말할 수 있는지 의문이라 링크를 남겨두고 다음에 복습할 때 참고하도록 해야겠다.
https://math.stackexchange.com/a/3198681
완벽히 이해하게 된다면 추가할 생각이다.- 결과
$$
\displaystyle \text {cost function}\ C(w) = -\sum_{i=1}^m (y_i\log h_w(x_i) + (1-y_i) log(1-h_w(x_i)))
$$
- logistic regression의 cost function을 MLE를 통해 도출해봤다.
- convex에 관해서는 다음 기회에..!'NLP' 카테고리의 다른 글
Attention 매커니즘 기본 구조 실습 (0) 2023.01.31 감정분석 (naive bayes classifier, 나이브 베이즈 분류기) (3) 2022.10.02 Feature Scaling의 효과 (Loss 시각화) 실습 (0) 2022.07.29 Feature scaling의 종류 (0) 2022.07.28 Simple Linear Regression 실습 (0) 2022.07.27 댓글