LoginSignup
1
2

More than 3 years have passed since last update.

分類タスクでコスト関数になぜCrossEntropyを使うのか

Posted at

はじめに

 深層学習を勉強していると、分類タスクにおいてはCrossEntropyを使うのだということを知る。とにかく深層学習を動かせればよく、単純な理解で良いという人は、モデルの出力をラベルに近づけるためだという程度で、なぜそれを使っているのかについての詳しい理由についてはすっ飛ばしてしまう。そこで、簡単にまとめてみた。

CrossEntropyとは

 CrossEntropy(CE)とは、二つの確率分布$p$と$q$に対して以下のように定義される。
$$CE(p,q)\overset{def}{=}-\sum_{i=1}^{N}p_i\log{q_i}$$
分類タスクにおいては、$p$がラベルとして、正解クラスのインデックスを$c$とすると、$p_i=0\left(i\neq c\right)$なので、次のように書ける。
$$CE(p,q)=-\log{q_c}$$

Kullback–Leibler divergence

 CrossEntropyが使われる理由を知るために、Kullback–Leibler divergence(KLDiv)を知る必要がある。これもCrossEntropyと似たようなもので二つの確率分布$p$と$q$に対して以下のように定義される。

\begin{align}
KLDiv(p,q)&=\sum_{i=1}^{N}p_{i}\log{\frac{p_i}{q_i}}\tag{1}
\end{align}

 KLDivは、二つの確率分布が似ているほど小さくなる性質がある。完全に一致していれば0となる。詳しい説明がこちらに書かれている。

KLDivとCEとの関係

 (1)を展開すると次のように書ける。

\begin{align}
KLDiv(p,q)&=\sum_{i=1}^{N}p_{i}\log{p_i}-\sum_{i=1}^{N}p_{i}\log{q_i}\\
&=\sum_{i=1}^{N}p_{i}\log{p_i}+CE(p,q)
\end{align}

 分類タスクにおいて、ラベルの確率分布$p$とモデルの出力$q$に対して$CE$を最小化させるので、一項目は定数となる。すると$p,q$に関して$CE$を最小化させることはKLDivを最小化させることと等しくなる!
 従って$CE$を最小化させることは二つの分布$p,q$を近づけることを意味する。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2