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

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

出力ユニット活性で微分(回帰)

ニューラルネットワークにおいてM次元入力、1次元出力の回帰モデルを考えます。下図のようなモデルです。雑な図ですけど、まあ伝わりますよね。

f:id:opabinia2:20180920201206p:plain

今回は、このモデルの誤差関数の出力ユニット活性aでの微分を計算します。なお活性化関数hは恒等関数です。(参考:ニューラルネットワークの概要

ニューラルネットワークモデルを最適化するためには誤差関数をモデルのパラメータ\mathbf{w}で微分し、勾配を求め、最急降下法などのアルゴリズムを適用する必要があります。今回の計算は、勾配を求めるための1ステップです。

訓練データ(\mathbf{x}_n,t_n)N個与えられ、出力をy_nと書くと、二乗和誤差E(\mathbf w)


\displaystyle E(\mathbf w) = \frac{1}{2} \sum_{n=1}^{N} ( y_n - t_n )^{2} \tag{1}

です。これを出力ユニット活性a_nで微分します。活性化関数は恒等関数で、y_n=a_nですから、


\begin{eqnarray*}
\displaystyle \frac{\partial E(\mathbf{w})}{\partial a_n} &=& \frac{\partial E(\mathbf{w})}{\partial y_n} \frac{\partial y_n} {\partial a_n} \tag{2} \\
&=& y_n - t_n \tag{3}
\end{eqnarray*}

となります。ニューラルネットワークといっても、今考えているのは最後の出力層の部分だけですから、計算は単純です。

次回以降、2クラス分類モデル、多クラス分類モデルを考えても、出力ユニット活性で微分すれば全て式(3)の形となることを順番に見ていきます。