오늘은 Loss function: 손실함수에 대하여 알아볼 것이다.
크게 손실함수의 중요성과 대표적인 손실 함수들, 해석 관점 등을 알아볼 것이다.
손실함수를 바꾼다는 것은, 파라미터를 조정하는 최적화 방법 즉 학습 방법도 달라진다. 따라서 모델의 성능에 매우 크게 영향을 끼치는 것이다.
1. 대표 손실함수
1-1. 평균제곱오차 MSE
`평균제곱오차`는 `Mean Squared Error: MSE` 라고 부르며, `Quadratic Loss` 혹은 `L2 Loss`고도 부른다.
$$ MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 $$
이 함수는 실제값($y$)와 모델의 예측값(y hat)의 차이를 제곱하여 평균 낸 값을 말한다.
실제값과 예측값 사이의 오차가 제곱되어 더해지기 때문에 초반 학습(오차가 클 때)는 미분값이 크기 때문에 학습속도가 빠르나, 이상치에 민감하다는 단점이 있다.
또한 데이터가 가우시안분포를 따르는 경우, 즉 대부분의 회귀 문제에서 MSE가 CEE보다 우월하다.
1-2. 평균절대오차 MAE
`평균절대오차`는 `Mean Absolute Error:MAE`라고 부르며, `L1 Loss`라고도 부른다.
$$ MAE = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| $$
이 함수는 추정하고자 하는 값과의 단위가 같기 때문에 직관적으로 이해하기 쉽다.
그러나 손실함수의 값이 최소값에 거의 근접했을 때 미분값이 동일하거나 계산할 수 없기 때문에 점핑이 일어날 수 있으며, 이럴 땐 손실함수의 크기를 직접 조절해줘야 한다.
1-3. Huber Loss
오차가 일정 수준 이하일 떄는때는 MSE를 그렇지 않을 때는 MAE를 사용하여 두 손실 함수의 장점을 결합하는 방법.
위에서 언급했듯이 MAE는 손실함수의 값이 최소값에 근접했을 때 오히려 점핑이 일어날 수 있기 때문에 이 때는 MSE를 사용하고, 멀 때는 MAE를 사용하여 이상치의 영향을 덜 받고자 하였다.
$$ L_{\delta}(y, \hat{y}) = \begin{cases} \frac{1}{2}(y - \hat{y})^2, & \text{if } |y - \hat{y}| \leq \delta \\\delta(|y - \hat{y}| - \frac{1}{2}\delta), & \text{otherwise}\end{cases} $$
1-4. 교차 엔트로피 CE
`교차 엔트로피`는 `Cross Entropy:CE`라고 부른다.
이는 주어진 확률 변수 또는 사건 집합에 대한 두 확률 분포간의 차이를 측정하는 함수이다.
분류 문제에서는 예측값과 실제값의 차이를 수치적으로 표현할 수 없기때문에 엔트로피라는 개념을 사용한다.
이 개념에서 나온 게 교차엔트로피로, 실제 분포를 모를 때 모델링을 통해 실제 분포를 예측하고자 하는 것이다.
$$ CEE= - \sum_{i=1}^{C} P_i \cdot \log(Q_i)$$
이때 P는 정답분포, Q는 예측분포를 나타낸다.
또한, 이진분류에 적용되는 교차엔트로피를 `Binary Cross Entropy:BCE` 라고 부르며, `Log Loss`라고도 부른다.
이 때 log를 붙이는 이유는 기존의 교차엔트로피를 한 개체가 아니라 여러 개체에 적용하게 되면 모두 곱할 때 0에 가까워지는데 log를 붙임으로써 곱셈을 덧셈으로 만들 수 있기 때문이다. 또한 로그가 단조함수라서 붙여도 상관이없다.
식은 다음과 같다. $$ BCE= - \sum_{i} \left( y_i \cdot \log(\hat{y}_i) + (1 - y_i) \cdot \log(1 - \hat{y}_i) \right)$$
CEE의 경우, 데이터가 베르누이 분포를 따르는 일반적인 분류 문제에서 적합하다.
1-5. Hinge Loss
`Hinge Loss`는 모델이 만드는 결정 경계(decision boundary)와 데이터 사이의 마진(margin)을 최대화하는 것을 목적으로 하는 함수이다. `SVM Loss`라고도 부르며, 이진분류문제에서 y를 +1이나, -1로 설정하여 사용한다.
$$ \text{Hinge Loss}(y, f(x)) = \max(0, 1 - y \cdot f(x)) $$
일반적으로 회귀문제에서는 MSE, 분류문제에서는 CE를 사용하는데 이는 데이터의 분포가 가우시안분포, 베르누이 분포를 따르냐에 따라 정해지는 것이라고 한다. 가우시안분포로 이어지는 회귀 문제에서 MSE가 적합하고, 베르누이 분포로 이어지는 분류 문제에서 CE가 적합한데, 이는 Maximum Likelihood의 관점에서 이러한 결과가 도출된다고 한다.
이에 관한 자세한 설명은 아래를 참조하면 좋을 것 같다.
--> 예시를 하나 들어보자 어떠한 이미지를 분류하는 task에서 이 이미지가 강아지일 확률을 q라고 하자. 이 때 손실함수를
만약 MSE를 쓴다면 $(q-1)^2$ 이 될테고, 크로스엔트로피를 쓴다면 $-log(q)$가 될 것이다. 이 때 만약 모델이 0을 출력했다면, MSE의 결과는 1이 될테고, 크로스엔트로피는 양의 무한대가 될 것이다. 즉 오차에 더욱 민감하다는 것이다.
--> log liklihood?
그러나 어떤 손실함수를 정하느냐는 정해져있지 않고, 기본적으로 위와 같은 MSE나 Cross Entropy를 사용해 보고 계속하여 실험을 통해 경험적으로 바꿔보거나, 손실함수를 개인적으로 수정하여 사용하게 된다.
'ML & DL > 개념정리' 카테고리의 다른 글
CNN: Convolution Neural Network (0) | 2023.12.21 |
---|---|
PyTorch 시작 (0) | 2023.12.21 |
역전파(Backpropagation) 기초 (1) | 2023.12.21 |
Gradient Descent: 경사하강법 (1) | 2023.12.20 |
퍼셉트론과 다층 퍼셉트론(MLP) (0) | 2023.12.19 |