2値分類問題における交差エントロピー誤差関数の導出及びパラメータの勾配の式展開について

『詳解ディープラーニング』(PP.88-91)を読んだので、復習を兼ねて該当ページの式展開をより詳細に記載してみました。





交差エントロピー誤差関数の導出について

シグモイド関数 \sigma(\cdot)を用いて


\begin{eqnarray}
y := \sigma(w^{T}x+b)
\end{eqnarray}


としたとき、入力データ xに対して、分類されるクラス値を取る確率変数を Cとする。
2値分類問題ではC=t, t \in \{0, 1\}となるので、このときクラス t xが分類される確率は


\begin{eqnarray}
P(C=t|x) = y^{t}(1-y)^{1-t}
\end{eqnarray}


として表現できる。
これより、N個の入力データ x_n(n=1,2,\cdots,N)とそれぞれの入力データに対応する正解の出力データ t_nが与えられたときのウェイト wとバイアス b最尤推定するための尤度関数 L(w, b)


\begin{eqnarray}
L(w, b) &=& \prod_{n=1}^{N}p(C=t_n|x_n)\\
&=& \prod_{n=1}^{N} y_n^{t_n}(1-y_n)^{1-t_n}
\end{eqnarray}


のように表すことができる。

このとき尤度関数の計算を簡便にする(積ではなく和として計算したい)ため対数変換し、尤度の最小化問題を解くため符号を反転させると、


\begin{eqnarray}
E(w, b) &:=& -logL(w, b)\\
&=& - \sum_{n=1}^{N}{t_nlogy_n+(1-t_n)log(1-y_n)}
\end{eqnarray}


が得られる。この関数 E(w, b)のことを交差(クロス)エントロピー誤差(損失)関数という。

パラメータに対する勾配(ウエイトwに対する勾配とバイアスbに対する勾配)の算出

この交差エントロピー誤差関数の最適なパラメータ w bを勾配降下法(gradient descent)で求める。これは以下の式で表される。


\begin{eqnarray}
w^{(k+1)} &=& w^{(k)}-\eta\frac{\partial E(w,b)}{\partial w}
\end{eqnarray}

\begin{eqnarray}
b^{(k+1)} &=& b^{(k)}-\eta\frac{\partial E(w,b)}{\partial b}
\end{eqnarray}


\eta(>0)は学習率であり、上式においてパラメータが更新されなくなったときが勾配がゼロになったことを表わす。これは反復学習で探索した範囲内において最適な解が求められたことを意味する。
ここで E_n := -\{t_nlogy_n+(1-t_n)log(1-y_n)\}とし、このとき各パラメータに対する勾配(ウエイトwに対する勾配とバイアスbに対する勾配)を求めてみる。この偏微分の式展開を記述するのが今回の記事の主目的です。

ウエイトwに対する勾配

ウエイトwに対する勾配は合成関数の微分により以下の式のように表現できる。

\begin{eqnarray}
\frac{\partial E(w, b)}{\partial w} &=& \sum_{n=1}^{N}\frac{\partial E_n}{\partial y_n}\frac{\partial y_n}{\partial w}\\
\end{eqnarray}


ここで、 E_n := -\{t_nlogy_n+(1-t_n)log(1-y_n)\}y := \sigma(w^{T}x+b)としており、シグモイド関数 \sigma(\cdot)より\sigma(w^{T}x+b)=(1+e^{-(w^{T}x+b)})^{-1}となるので、合成関数の微分を行うと、


\begin{eqnarray}
\frac{\partial E_n}{\partial y_n} &=& -\biggl\{\frac{t_n}{y_n}+\frac{(1-t_n)}{(1-y_n)}(-1)\biggl\}\\
&=& -\biggl\{\frac{t_n}{y_n}-\frac{(1-t_n)}{(1-y_n)}\biggl\}
\end{eqnarray}


\begin{eqnarray}
\frac{\partial y_n}{\partial w} &=& \frac{\partial \sigma(w^{T}x_n+b)}{\partial w}\\
&=& (1+e^{-(w^{T}x+b)})^{-2}e^{-(w^{T}x_n+b)}x_n\\
&=& \frac{1}{1+e^{-(w^{T}x_n+b)}}\frac{e^{-(w^{T}x_n+b)}}{1+e^{-(w^{T}x_n+b)}}x_n\\
&=& \frac{1}{1+e^{-(w^{T}x_n+b)}}\biggl\{
\frac{1+e^{-(w^{T}x_n+b)}}{1+e^{-(w^{T}x_n+b)}}-\frac{1}{1+e^{-(w^{T}x_n+b)}}
\biggl\}x_n\\
&=& \frac{1}{1+e^{-(w^{T}x_n+b)}}\biggl(
1-\frac{1}{1+e^{-(w^{T}x_n+b)}}
\biggl)x_n\\
&=& \sigma(w^{T}x_n+b)(1-\sigma(w^{T}x_n+b))x_n\\
&=& y_n(1-y_n)x_n
\end{eqnarray}


となる。これらより、ウエイトwに対する勾配は、以下のように表すことができる。


\begin{eqnarray}
\frac{\partial E(w, b)}{\partial w} &=& \sum_{n=1}^{N}\frac{\partial E_n}{\partial y_n}\frac{\partial y_n}{\partial w}\\
&=& -\sum_{n=1}^{N}\biggl(\frac{t_n}{y_n}-\frac{1-t_n}{1-y_n}\biggl)y_n(1-y_n)x_n\\
&=& -\sum_{n=1}^{N}\frac{(t_n(1-y_n)-y_n(1-t_n))}{y_n(1-t_n)}y_n(1-y_n)x_n\\
&=& -\sum_{n=1}^{N}(t_n(1-y_n)-y_n(1-t_n))x_n\\
&=& -\sum_{n=1}^{N}(t_n-y_n)x_n
\end{eqnarray}


バイアスbに対する勾配

バイアスbに対する勾配もウエイトwに対する勾配を求めるときと同様に、合成関数の微分により以下の式のように表現できる。


\begin{eqnarray}
\frac{\partial E(w, b)}{\partial b} &=& \sum_{n=1}^{N}\frac{\partial E_n}{\partial y_n}\frac{\partial y_n}{\partial b}\\
&=& -\sum_{n=1}^{N}\biggl(\frac{t_n}{y_n}-\frac{1-t_n}{1-y_n}\biggl)\frac{\partial y_n}{\partial b}\\
&=& -\sum_{n=1}^{N}\biggl(\frac{t_n(1-y_n)-y_n(1-t_n)}{y_n(1-y_n)}\biggl)y_n(1-y_n)\\
&=& -\sum_{n=1}^{N}(t_n(1-y_n)-y_n(1-t_n))\\
&=& -\sum_{n=1}^{N}(t_n-t_ny_n-y_n+t_ny_n)\\
&=& -\sum_{n=1}^{N}(t_n-y_n)
\end{eqnarray}