cross entropy loss

cross entropy loss

  • 특정 인스턴스에 대해 모델이 예측한 각 클래스의 확률분포 $x$와 인스턴스의 $class$가 주어졌을 때의 cross entropy loss는 다음과 같다. 
$$loss(x, class) = -log(x[class]) $$
      • 위 수식에서 $x = (x[0], x[1], ... x[k])$ 로 $x[i]$는 i번째 클래스에 대한 모델의 예측값이다. 
      • 위 수식에서 인스턴스의 정답 클래스가 $i$번째 클래스인 경우, $class$는 $i$와 같다. 
      • 위 수식에서 $ 0 \leq x[i] \leq 1$이고, $\sum_i x[i] = 1$이다. 
    • $x$가 확률 분포가 아니라면, 아래와 같이 softmax를 이용해서 cross entropy loss를 계산할 수 있다. 
    $$\begin{align} loss(x, class) &= -log(softmax(x[class])) \\ &= -log( \frac{exp(x[class]) }{\sum_j exp(x[j]) } ) \end{align} $$ 
      • 위 수식에서 $softmax$는 $x[i]$를 확률로 만들기 위함이고, $ 0 \leq x[i] \leq 1$이고, $\sum_i x[i] = 1$이 되게끔한다. 
    • N개의 인스턴스가 있는 경우, loss는 다음과 같다. 
      • 각 instance의 cross entropy loss의 합이다. 
    $$loss = \sum_i^N loss(x_i, class[i]) $$ 
      • 위 수식에서 $x_i$는 $i$번째 instance 이다. 
      • 위 수식에서 $class[i]$는 $x_i$의 정답 클래스를 의미한다. 

    binary cross entropy loss 

    • 2가지 class만 있는 경우에 사용한다. 
    • 즉, class 개수가 2개뿐인 경우의 cross entropy loss 이다.

    사족) 분포 $p$에 대한 분포 $q$의 cross entropy $H(p,q)$ 

    $$\begin{align} H(p,q) &= -E_p[log_2 q] \\ &= -\sum_i^n p_i log_2 (q_i) \end{align} $$

    $$H(p,q) = H(p) + D_{KL}(p||q)$$ 

    $$p=(p_1, p_2, ..., p_n), 0 \leq p_i \leq 1 , \sum_i^n p_i = 1 $$ 

    $$q=(q_1, q_2, ..., q_n) , 0 \leq q_i \leq 1 , \sum_i^n q_i = 1 $$ 

    • $E_p$는 $p$에 대한 평균 (expected value) 
    • $H(p)$는 $p$의 entropy = $H(p, p)$ 
    • $D_{KL}$은 kullback-Leibler divergence 

    references: 


    댓글

    이 블로그의 인기 게시물

    utf-8과 utf8