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
댓글