Skip to content

Loss Function

BIBI edited this page Mar 8, 2020 · 13 revisions

1. Loss Function

  • 모델에서 생성된 값과 실제 데이터의 값이 차이나는 정도를 나타내는 함수
  • loss function의 값을 최소화하는 방식으로 딥러닝 모델 학습
  • neural network에서의 최적화 : output과 label 차이를 Error로 정의한 후, 이 값을 줄이도록 parameter를 바꾸어 나가는 것

2. 종류

2-1. Linear regression (MSE, Mean Square Error)

(1) 정의

image

(2) 특징

  • 주로 regression 문제에 사용한다.

(3) regression에 MSE를 쓰는 이유

Classification 과 같은 경우, 맞다/아니다가 판별이 가능하지만, 주식 가격 예측과 같은 수치 판단은 애매한 경우가 많다.

  • ex. 주식

    • GT: 100,000원, output: 95,000원
    • output이 GT와 동일하진 않지만, 이 모델이 얼마나 잘 판단한 것인지 애매하다.
    • 따라서 실제 값과 예측값의 차이를 기준으로 오차를 판단해야 한다.
  • MSE 값이 작은 바람직한 추정량이란, 불편성과 효율성을 만족하는 값을 의미한다.

    • 불편성(unbiasedness): 추정량의 평균이 가능한 한 모수의 평균에 근접
    • 효율성(efficiency): 추정량의 분산이 동시에 작아야 함
  • 즉 MSE는 정답셋과의 평균적인 차이 뿐만 아니라 각각의 출력값이 정답과 얼마나 차이가 크게 나는지도 반영한다.

2-2. Cross-Entropy Error (CEE)

(1) 정의

주어진 확률 변수 X에 대해, 확률 분포 p를 찾아보자. 확률 분포 p를 알 수 없기 때문에 p를 예측한 근사 분포 q를 생각한다. 정확한 확률 분포를 얻기 위해 q의 parameter들을 update하면서 q를 p에 근사할 것이다. 즉 두 분포의 차이를 측정하는 KL(p|q)가 최소가 되는 q를 찾는 문제가 된다.

스크린샷 2020-03-08 오후 6 23 01

두번째 항은 근사 분포 q에 무관한 항이므로 KL Divergence를 최소화하는 것은 결국 첫번째 항이다. 그러므로 첫번째 항을 최소화하는 q를 찾아야 한다.

스크린샷 2020-03-08 오후 6 23 05
  • p_i: 실제 확률 분포
  • q_i: p를 근사한 분포

(2) 특징

  • classification(분류문제)에는 ACE(Average cross-entropy)를 사용한다.

(3) classification에 ACE(Average cross-entropy)를 사용하는 이유

Model X, Y가 있고, class는 A,B,C 3개가 있다.

Model X의 output

output label A B C correct?
0.3 0.3 0.4 0 0 1 Y
0.3 0.4 0.3 0 1 0 Y
0.1 0.2 0.7 1 0 0 N
  • 1,2는 겨우 맞췄고 3은 완전히 틀렸다.

Model Y의 output

output label A B C correct?
0.1 0.2 0.7 0 0 1 Y
0.1 0.7 0.2 0 1 0 Y
0.3 0.4 0.3 1 0 0 N
  • 1,2는 확실히 맞췄으나 3은 아쉽게 틀렸다.
[단순 분류 오차]
* model X : 1/3 = 0.33
* model Y : 1/3 = 0.33
[분류 정확도]
* model X : 2/3 = 0.67
* model Y : 2/3 = 0.67
  • 단순 분류 오차 계산은 틀린 개수에 대한 결과만 있을 뿐, label과 비교하여 얼마나 많이 틀렸는 지는 제공하지 않는다.

cross entropy로 계산할 경우

model X
* 첫번째 sample : -( (ln(0.3)*0) + (ln(0.3)*0) + (ln(0.4)*1) ) = -ln(0.4)
* 3개 sample 모두에 대한 계산 및 ACE (Average cross-entropy)
  * -(ln(0.4) + ln(0.4) + ln(0.1)) / 3 = 1.38
model Y
* 3개 sample 모두에 대한 계산 및 ACE (Average cross-entropy)
  * -(ln(0.7) + ln(0.7) + ln(0.3)) / 3 = 0.64

Model X보다 Y가 오차가 더 작다. 즉 어떤 model이 더 잘 학습 되었는 지를 알 수 있다.

MSE로 계산할 경우

model X
* 첫번째 sample : (0.3 - 0)^2 + (0.3 - 0)^2 + (0.4 - 1)^2 = 0.09 + 0.09 + 0.36 = 0.54
* 3개 sample 모두에 대한 계산 및 MSE(Mean squared error)
  * (0.54 + 0.54 + 1.34) / 3 = 0.81
model Y
* (0.14 + 0.14 + 0.74) / 3 = 0.34

MSE는 틀린 sample에 대해 더 집중한다. 맞은 것과 틀린 것 모두에 똑같이 focus해야 하는데 여기서는 그렇지 않다.

ACE와 MSE 비교 (activation을 softmax로 했을 경우)

  • background : backpropagation 중에 label에 따라 output을 1.0 또는 0.0으로 설정하려고 한다.
  • MSE를 사용할 경우
    • 가중치 계산에서 기울기 값에 (output) * (1 - output)이라는 조정 요소가 포함된다.
    • 계산 된 출력이 0.0 또는 1.0에 가깝거나 가까워짐에 따라 (output) * (1 - output)의 값은 점점 작아진다.
      • ex) output = 0.6이라면 (output) * (1 - output) = 0.24이지만 출력이 0.95이면 (output) * (1 - output) = 0.0475이다.
    • 그렇게 되면 조정 요소가 점점 작아지면서 가중치 변화도 점점 작아지고 학습 진행이 멈출 수도 있다.
  • ACE를 사용할 경우
    • (output) * (1 - output) 항이 사라진다.
    • 따라서 가중치 변화는 점점 작아지지 않으므로 학습이 멈추는 일이 발생하지 않는다.

2-3. Logistic regression (binary cross-entropy)

2-4. Hinge Loss

SVM 등에서 Maximum-margin classification에 사용하기 위한 Loss function

2-5. Ranking Loss

Reference

Clone this wiki locally