2024. 7. 1. 14:43ㆍAI & ML & DL/정리
최근에 머신러닝 부트캠프에 합격해서 머신러닝 개념들을 다시 처음부터 공부하고 있습니다.
오랜만에 LR(Logistic Regression), BCE(Binary Cross Entropy) 등을 보기 시작하니 오랫만에 옛날 친구들을 만나는 심정으로 보고 있는데, loss function이 BCE일 때에 아래와 같은 그림이 나온다고 합니다.

여기서 저는 어떻게 Binary Cross Entropy가 convex 한 성질을 가지고 있는가 궁금해졌습니다.
일단 BCE를 사용한 cost function은 아래와 같이 정리가 됩니다.

일단 log 값도 있고... y_hat = a(wx+b) 인데, a 는 심지어 sigmoid function 입니다. (그래서 MSE를 사용하면 non-convex 해진다고 하죠...) 그런데 어떻게 이 식이 convexity를 가질까요?
일단 convex function 에 대한 정의와 특성들을 살펴봅시다. convex function의 정의는 함수 위의 임의의 두 점을 잇는 직선을 그으면 내부의 점들이 모두 함수 보다 아래가 되어야 합니다. (그래서 convex function은 local optima가 없습니다. 항상 global optimum에 도달하죠.) 수식으로 멋지게 설명하자면...

이 식을 풀어서 설명하자면... lambda (편의를 위해 a라고 하겠습니다.) 값이 0 과 1 사이의 실수이므로 ax + (1-a)y는 x와 y 사이의 값들이 됩니다. 이를 z라고 쉽게 표현합시다.
또한, f(x)와 f(y)를 잇는 직선은 일차식 형태를 띄므로 F(X) = wX+b, F(x) = f(x) and F(y) = f(y)가 됩니다. 그러면 F(z) = F(ax + (1-a) y) = w(ax + (1-a)y) + b = a wx +(1-a) wy + b = awx + ab + (1-a)wy + (1-a)b = aF(x) + (1-a)F(y) = af(x) + (1-a)f(y) 이렇게 식이 전개가 됩니다. 따라서 위의 식은 convex function의 정의와 동치입니다.
특정 function이 convex한지(convexity)에 대한 증명은 크게 두 가지(이차 미분, Jenson의 부등식) 방법이 있지만 그 중에서도 이차 미분을 통한 증명만 알아볼 겁니다. (다만 이차 미분은 미분을 두 번 이상 가능한 함수만 적용할 수 있습니다.) 함수를 이차 미분을 한 f''(x) 는 함수 f의 곡률을 나타냅니다. 곡률이 양수이면 함수는 볼록한 형태를 가지는데, 이게 항상 양수 혹은 0이면 f는 어느 점에서도 볼록한 형태를 가지므로 convexity가 증명이 됩니다.
그러면 이제 BCE가 convexity를 가지고 있는지 이차 미분을 해서 알아봅시다. 우선 y가 0과 1일 때 계산할 값이 달라지므로 케이스를 나눠서 구해봅시다. 그리고 y_hat은 0과 1 사이의 실수값인 걸 잊지 맙시다. (Sigmoid function 이므로 y_hat은 절대 정확히 0 혹은 1이 될 수 없습니다.)
먼저 y = 1 이라면 L(y_hat) = - log(y_hat) 이 됩니다. 이를 이차 미분 한다면...
- L' (y_hat) = - 1 / (y_hat) = - (y_hat) ^ (-1)
- L'' (y_hat) = (y_hat)^(-2) = 1 / (y_hat)^2 이므로 항상 0 이상의 값을 가집니다.
또한 y = 0 이라면... L(y_hat) = - log(1 - y_hat)일 것이고 이차 미분을 한다면...
- L' (y_hat) = 1 / (1-y_hat) = (1-y_hat) ^ (-1)
- L'' (y_hat) = (1-y_hat)^(-2) = 1 / (1-y_hat)^2 이므로 항상 0 이상의 값을 가집니다.
이렇게 모든 y의 경우에서 이차 미분한 결과는 항상 0 이상의 값을 가짐을 알 수 있습니다.
따라서, BCE는 convex function입니다. 즉, 항상 최적의 해로 수렴하는 함수라는 것이죠.
그렇다면 번외로 왜 MSE 는 non-convex 할까요? 이는 아래의 ChatGPT가 설명한 걸 노트로 남겨두겠습니다.

위의 설명에 추가로 노트를 남겨두자면 동일한 원리로 MLP 같이 중간 중간에 비선형적인 activation function들이 들어가면 MSE는 non-convex 해집니다. 반면에 BCE는 항상 convex 하죠.
이렇게 Convexity 증명과 왜 BCE 가 convex 한지를 정리해보았습니다. 예전에 ML 공부했을 때에는 convexity라는 뜻을 잘 몰라서 이를 간과하고 공부를 했었는데, 알고리즘 공부하면서 convex의 의미도 공부해보고 다시 돌아와보니 이해가 가능하더군요. 또한, MSE가 항상 convex 하지 않다는 건 이번에 처음 안 것 같습니다. 그와 별개로 ChatGPT 성능이 엄청 미친 것 같습니다. 엄청 도움되기도 하고 답변 속도도 엄청 빨라서 놀랐네요;;;
'AI & ML & DL > 정리' 카테고리의 다른 글
2024.05.14. OpenAI Spring Update 정리 (0) | 2024.05.16 |
---|---|
[의료모델] Cox Proportional Hazard 모델 (0) | 2023.12.24 |
[MLC] 필수적으로 알아야 할 모델들 (0) | 2023.12.24 |