Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

 深層学習を勉強していると、分類タスクにおいては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$を近づけることを意味する。

sho4_forever
深層学習における予測の信頼性について興味があります。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away