trsing’s diary

勉強、読んだ本、仕事で調べたこととかのメモ。

PRML 5.3.2~5.3.4

5.3.2 単純な例

誤差逆伝播の例を示す。
・2層ネットワーク(図5.1)
・2乗和誤差関数(5.61)
・出力ユニットは線形活性化関数
・隠れユニットはシグモイド活性化関数(5.58)
シグモイド関数微分は(5.60)。演習5.8参照

1.順伝播を実行する。(5.62)(5.63)(5.64)
2.出力ユニットの\delta_{k}を計算する。(5.65)
3.逆伝播により隠れユニットの\deltaを得る。(5.66)
4.誤差関数の各重みに関する微分を評価する。(5.67)

5.3.3 逆伝播の効率

目的:逆伝播法を用いて誤差関数を一度評価するのに必要な計算量を求める。

結果:O(W)

詳細

逆伝播法の最も重要な側面の1つは計算上の効率の良さ。 誤差関数の微分を評価するのに必要な計算量を確認する。
※ネットワークの重みとバイアスの総計をWとする。

順伝播の計算量

(5.48)と(5.49)だが、重み数がユニット数よりもはるかに多いのが一般的なので、(5.48)の和の評価に関するものが大部分となる。すべてのユニットで(5.48)をとると重み数だけ評価するため計算量はO(W)

図1を考えるとユニット数はM+1+K。重み数は(D+1)M+(M+1)K

逆伝播の計算量

(5.56)。これも和の評価が大部分となる。入力と第1層間の重み数はないが、計算量はO(W)。 ※出力ユニット分(5.54)はK<<W

誤差関数の微分の計算量

(5.53)。これが重み数だけあるため計算量はO(W)

よって逆伝播法を用いて誤差関数を評価する場合計算量はO(W)+O(W)+O(W)=O(W)

逆伝播法以外のアプローチ

有限差の差分による近似(5.68)。誤差はO(\epsilon)。 精度がいる場合は中心差分(5.69)を用いれば良い。誤差O(\epsilon^{2})。ただし計算量は(5.68)のおおよそ倍。

順伝播(E_{n}(w_{ji}+\epsilon))でO(W)。 これを重み数だけ計算するため計算量は全体でWO(W)=O(W^{2}

5.3.2 ヤコビ行列

目的:逆伝播のテクニックをヤコビ行列の評価に応用する。

結果:(5.73)と(5.74)。 各出力ユニットが個々にシグモイド活性化関数を持つ場合は(5.75)、ソフトマックス関数を持つ場合は(5.76)。

詳細
ヤコビ行列について

たくさんの異なるモジュールで構成されたシステムにおいて、例えば図5.8において誤差関数E微分は(5.71)となりヤコビ行列が現れる。

ヤコビ行列がわかっていれば入力に任意の既知の誤差\Delta x_{i}がある場合、出力誤差への寄与\Delta y_{k}を評価することができる(5.72)。一般に、ヤコビ行列は定数ではなく用いた入力ベクトルに依存するため、新しい入力ベクトルに対してヤコビ行列そのものを再評価する必要がある。

逆伝播を応用した評価方法

隠れユニット2層の3層ネットワークのx_{i}からy_{k}までの流れはたぶん次図みたいな感じ。 f:id:trsing:20190127201447j:plain

要素J_{jk}について考えると(5.73)となる。
※(5.48)により\frac{\partial a_{j}}{\partial x_{i}}=w_{ji}

\frac{\partial y_{k}}{\partial a_{j}}は(5.74)となる。
※(5.48),(5.49)により 
\frac{\partial a_{l}}{\partial a_{j}}=
\sum_{i} w_{li} \frac{\partial h(a_{i})}{\partial a_{j}}=
w_{lj} h'(a_{j})

この逆伝播は出力ユニットから始まり、そこでの微分は出力ユニットの活性化関数の関数形式を直接微分をして求める。

ユニットが個々にシグモイド化関数を持つ場合y_{k}=\sigma(a_{k})より(5.75)。

ソフトマックス関数を持つ場合には y_{k}=\frac{\exp(a_{k})}{\exp(a_l)} より(5.76)。
\delta_{kl}クロネッカーのデルタであることに注意

ヤコビ行列を評価する手続き

  1. 入力をネットワークに入れて順伝播させてすべての隠れユニットと出力ユニットの出力を得る。
  2. \frac{\partial y_{k}}{\partial a_{l}}を求める。
  3. 再帰的な関係式(5.74)を用いてネットワーク内のすべての隠れユニットを逆伝播させる。
  4. (5.73)を用いて入力への逆伝播を行う。
  5. kを変更しながら2~4を繰り返す。

※2~4でヤコビ行列のk行が求まる