Loading the catalog…
Loading the catalog…
2학년때, 처음 인공지능개론을 배우면서 각 알고리즘에 적합한 Loss Function이 다르다는 것을 배웠다. 사실 그때는 수식을 외우기에 바빠 이해보다 암기 위주로 학습을 진행했던 것 같다. 최근 들어 교수님 앞에서 논문을 리뷰하는 시간이 있는데, 교수님께서 기초적인 개념에 관한 질문을 많이 하신다. 거기에 피상적인 답만 하는 내 모습이 부끄러웠고, 아직 기초가 부족하다는 생각이 들었다. 그렇기에 이번 학기 위클리 블로그는 머릿속에 파편화되어 있는 개념들을, 하나씩 정리해보는 기회로 삼으려 한다. 이번 블로그 주제는 자주 등장하는 Loss Function에 관한 글이다. Regression Task와 Classification Task에서는 왜 서로 다른 Loss Function을 사용할까? 1. Regression & Classification Regression Task 연속적인 값을 예측하는 작업 → 출력은 실수 범위 내 대표적인 Loss Function: MSE(Mean Squared Error), MAE(Mean Absolute Error) $$ MSE = \frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2 $$ 실제값과 예측값 차를 제곱한 후 평균을 낸 것이다. 즉 MSE는 실제값과 예측값이 얼마나 멀리 떨어져 있는지 계산 할 수 있다. Classification Task 주어진 입력을 여러 클래스 중 하나로 분류하는 작업 → 이산적인 클래스 레이블 분류 작업의 출력은 각 클래스가 정답일 확률 이다. (ex. class = [a,b,c]면 모델의 출력은 [0.1, 0.7, 0.2] 이며, 최종적으론 b로 예측) 대표적인 Loss Function: Cross-Entropy 계열의 Loss (이진 분류)Binary Cross-Entropy (다중 분류) Categorical Cross-Entropy Binary Cross-Entropy $$ BCE = -\frac{1}{n} \sum_{i=1}^{n} \left[ y_i\log(\hat{y}_i) + (1-y_i)\log(1-\hat{y}_i) \right] $$ 그런데 왜 Classification에서는 MSE가 아니라 Cross-Entropy를 사용하는 걸까? Entropy란 무엇일까? 2. Entropy란? 어떤 시스템이나 확률 분포의 불확실성 또는 정보의 불확실성을 나타내는 척도다. 쉽게 생각하면 어떤 사건의 결과를 얼마나 예측하기 어려운가 를 나타내는 값이다. 이산확률분포 $P$의 Entropy는 다음과 같다. $$ H(P) = -\sum_i P(i)\log P(i) $$ 예를 들어 동전의 앞면이 나올 확률이 100%면 결과가 이미 정해져 있으므로 Entropy는 0이다. 반대로 앞면과 뒷면의 확률이 각각 50%라면, 어떤 결과가 나올지 가장 예측하기 어렵기에 Entropy가 가장 크다. 그런데 식에는 왜 log 가 들어갈까? 정보이론에서는 어떤 사건 $x$가 발생했을 때 얻는 정보량을 다음과 같이 정의한다. $$ I(x) = -\log P(x) $$ 직관적으로 생각해보면, 확률이 높은 사건은 이미 예상하기 쉬운 사건이다. 따라서 실제로 발생해도 새롭게 얻는 정보가 많지 않다. 반대로 확률이 매우 낮은 사건이 실제로 발생하면 더 많은 정보를 얻게 된다. 예를 들어 $$ P(x)=1 $$ 이라면 $$ -\log 1 = 0 $$ 이다. 반드시 발생하는 사건이기 때문에 새로운 정보가 없는 것이다. 반대로 $P(x)$가 작아질수록 $-\log P(x)$는 커진다. Entropy는 이렇게 각 사건이 주는 정보량을 확률분포 전체에 대해 평균낸 값이라고 볼 수 있다. 3. Cross-Entropy 두 확률분포 $P$, $Q$에 대한 Cross-Entropy는 다음과 같다. $$ H(P,Q) = -\sum_i P(i)\log Q(i) $$ Classification에서는 $P$ = 실제 정답 분포 $Q$ = 모델이 예측한 분포 라고 생각할 수 있다. 예를 들어 실제 정답이 b 라면 $$ P = [0,1,0] $$ 이고, 모델의 예측이 $$ Q = [0.1,0.7,0.2] $$ 라고 해보자. Cross-Entropy를 계산하면 $$ -(0\log0.1 + 1\log0.7 + 0\log0.2) $$ 이므로 결국 $$ -\log0.7 $$ 만 남는다. 즉, 정답 클래스에 높은 확률을 줄수록 Loss는 작아지고, 낮은 확률을 줄수록 Loss는 커진다. 그렇다면 Cross-Entropy는 실제 분포와 예측 분포 사이의 차이를 측정하는 값이라고 볼 수 있을까? 여기서 조금 의문이 든다. 분포 간의 차이를 측정하는 방법으론 KL Divergence 나 Wasserstein Distance 같은 것도 있기 때문이다 4. Cross-Entropy와 KL Divergence KL Divergence는 두 확률 분포 간의 차이를 측정하는데 사용된다. $$ D_{KL}(P \parallel Q) = \sum_i P(i)\log\frac{P(i)}{Q(i)} $$ 식을 조금 풀어보면 $$ D_{KL}(P \parallel Q) = \sum_i P(i)\log P(i) - \sum_i P(i)\log Q(i) $$ 가 된다. 여기서 Entropy는 $$ H(P) = -\sum_i P(i)\log P(i) $$ 이고, Cross-Entropy는 $$ H(P,Q) = -\sum_i P(i)\log Q(i) $$ 이다. 따라서 $$ D_{KL}(P \parallel Q) = H(P,Q)-H(P) $$ 라는 관계를 얻을 수 있다. 다시 정리하면 $$ H(P,Q) = H(P)+D_{KL}(P \parallel Q) $$ 이다. 즉, Cross-Entropy = Entropy(실제 분포가 원래 가지고 있는 불확실성) + KL Divergence(두 분포의 차이) 라고 볼 수 있다. 그런데 모델을 학습할 때 실제 정답 분포 $P$는 이미 정해져 있으므로 $H(P)$는 고정된 값이다. 따라서 모델이 Cross-Entropy를 줄이는 것은, 결국 KL Divergence를 줄이는 것과 같다. 즉 Classification에서 Cross-Entropy를 최소화한다는 것은, 모델이 예측한 확률분포를 실제 정답 분포에 가깝게 만드는 과정이라고 이해할 수 있다. 정리하자면, 예측값이 실수인 회귀에서 사용하는 손실 함수 MSE 등은 실제값과 예측값 사이의 수치적인 차이 를 직접 계산할 수 있다. 반면 분류에서는 모델이 각 클래스에 대한 확률을 출력하고, Cross-Entropy를 최소화함으로써 모델이 예측한 확률분포를 실제 정답 분포에 가깝게 만든다! 처음에는 단순히 회귀면 MSE, 분류면 Cross-Entropy 정도로 암기했는데, 이 포스트를 작성면서 두 Task에서 서로 다른 Loss Function을 사용하는지 명확하게 이해할 수 있었다.
What RADAR observed and classified to build this opportunity. It is what the source published, not a verification that the offer is still active.
Regression Task와 Classification Task에서는 왜 서로 다른 Loss Function을 사용할까?. 2학년때, 처음 인공지능개론을 배우면서 각 알고리즘에 적합한 Loss Function이 다르다는 것을 배웠다. 사실 그때는 수식을 외우기에 바빠 이해보다 암기 위주로 학습을 진행했던 것 같다. 최근 들어 교수님 앞에서 논문을 리뷰하는 시간이 있는데, 교수님께서 기초적인 개념에 관한 질문을 많이 하신다. 거기에 피상적인 답만 하는 내 모습이 부끄러웠고, 아직 기초가 부족하다는 생각이 들었다. 그렇기에 이번 학기 위클리 블로그는 머릿속에 파편화되어 있는 개념들을, 하나씩 정리해보는 기회로 삼으려 한다. 이번 블로그 주제는 자주 등장하는 Loss Function에 관한 글이다.…
Open source