機械学習に詳しくなりたいブログ

機械学習や数学について勉強した内容を中心に書きます。100%趣味です。記事は数学的に厳密でなかったり誤りを含んでいるかもしれません。ご指摘頂ければ幸いです。

多クラスロジスティック回帰における交差エントロピー誤差のヘッセ行列

ニュートン法を使うため、多クラスロジスティック回帰における交差エントロピー誤差のヘッセ行列を求めます。

多クラスロジスティック回帰より、


\displaystyle \frac{\partial E(\mathbf{w})}{\partial \mathbf{w}_i} = \sum_{n=1}^{N} (y_{ni}-t_{ni})\mathbf{x}_n \tag{1}

でした。式(1)を\mathbf{w}_{j}で微分したものを\mathbf{H}_{ij}と書けば、ロジスティック回帰における交差エントロピー誤差のヘッセ行列の追記で書いたように、


\displaystyle \mathbf{H}_{ij} = \frac{\partial^{2} E(\mathbf w)}{\partial \mathbf{w}_{i} \partial \mathbf{w}_{j}^{T}} \tag{2}

です。合成関数の微分より、


\begin{eqnarray*}
\displaystyle \mathbf{H}_{ij} &=& \frac{\partial^{2} E(\mathbf w)}{\partial \mathbf{w}_{i} \partial \mathbf{w}_{j}^{T}} \tag{3} \\
&=& \frac{\partial^2 E(\mathbf{w})}{\partial \mathbf{w}_{i}\partial y_{ni}} \frac{\partial y_{ni}}{\partial a_{nj}}\frac{\partial a_{nj}}{\partial \mathbf{w}_{j}^{T}} \tag{4}\\
&=& \sum_{n=1}^{N} y_{ni}(I_{ij} - y_{nj})\mathbf{x}_n\mathbf{x}_{n}^{T} \tag{5} \\
\end{eqnarray*}

です。この計算はロジスティック回帰における交差エントロピー誤差のヘッセ行列の追記でも書いたのですが、考え方が合っているのか自信がない。さらに参考書やネット上の解説では、式(5)のy_{ni}y_{nj}が逆になっていて、どうやったらそういう計算になるのか?ギブアップ。詳しい方いましたら助けてください。ただ、 y_{ni}(I_{ij} - y_{nj})i \ne jでは -y_{ni} y_{nj}ですし、i=jでは y_{ni}(1 - y_{nj})=y_{nj}(1 - y_{ni})なので、値自体は等しいのですが。

ということで、ここは相当悩んだ挙げ句解決できなかったのですが、値はどっちにしても等しいということで先に進むことにしました。

さて、勾配は式(1)を\mathbf{w}_1,\cdots,\mathbf{w}_Kまで並べた


 \left(
    \begin{array}{c}
      \displaystyle  \sum_{n=1}^{N} (y_{n1}-t_{n1})\mathbf{x}_n \\
      \vdots  \\
       \displaystyle \sum_{n=1}^{N} (y_{nK}-t_{nK})\mathbf{x}_n
    \end{array}
  \right) \tag{6}

でした。このi成分を\mathbf{w}_{j}^{T}で微分したものが\mathbf{H}_{ij}となりますので、求めるヘッセ行列は


\displaystyle \mathbf{H} = \left(
    \begin{array}{cccc}
      \mathbf{H}_{11} & \mathbf{H}_{12} & \ldots & \mathbf{H}_{1K} \\
      \mathbf{H}_{21} & \mathbf{H}_{22} & \ldots & \mathbf{H}_{2K} \\
      \vdots & \vdots & \ddots & \vdots \\
      \mathbf{H}_{K1} & \mathbf{H}_{K2} & \ldots & \mathbf{H}_{KK}
    \end{array}
  \right) \tag{7}

となります。

2クラスの場合と同様に、


\begin{eqnarray*}
\mathbf{R}_{ij} &=&  \left(
    \begin{array}{ccc}
      y_{1i}(I_{ij}-y_{1j}) &  & 0 \\
       &   \ddots &  \\
       0 &    & y_{Ni}(I_{ij}-y_{Nj})
    \end{array}
  \right) \tag{8} \\
\mathbf{X} &=&  \left(
    \begin{array}{ccc}
      x_{11} & \cdots & x_{1D} \\
       \vdots &   \ddots & \vdots  \\
       x_{N1} &    \cdots & x_{ND}
    \end{array}
  \right)  \tag{9}
\end{eqnarray*}

とすれば、


\mathbf{H}_{ij} =  \mathbf{X}^{T} \mathbf{R}_{ij} \mathbf{X} \tag{10}

です。