ニューラルネットワークを理解する。 - パラメータ更新
正解を導くためには損失関数を微分して勾配を求めそれを"0"に近づけることが必要です。そのために数値微分、誤差逆伝播法を使って勾配を求めます。その勾配を利用して"重み"を最適化することで正解を導きます。
その重み、パラメータの更新の方法を考えます。
数値微分 ・・・ 勾配降下法
重みは
$$
W = \begin{pmatrix}
w11 & w21& w31 \\ \\
w12& w22&w32
\end{pmatrix}
$$
となっていてこの勾配を求めるのは重みそれぞれを以下のように微分します。
$$
\frac {\partial L} {\partial W} = \begin{pmatrix}
\frac {\partial L} {\partial w11} & \frac {\partial L} {\partial w21} & \frac {\partial L} {\partial w31} \\ \\
\frac {\partial L} {\partial w12} & \frac {\partial L} {\partial w22} &\frac {\partial L} {\partial w32}
\end{pmatrix}
$$
誤差逆伝播法
連鎖律で分解しながら微分していくので比較的単純で処理が早い。
例えばということで
という式を考えるときに連鎖律では分解して考えます。
$${z = t^2}$$
と
t = x + y
の2つに分解します。
ここで連鎖律です。合成関数の微分の性質を使ってこの合成関数を簡単に微分することができます。
上記のように分解してその積、掛け算することで微分が成立します。
色に表すと、$${z = t^2}$$の微分は
$${ \frac {\partial z} {\partial t} }$$
t = x + y は
$${ \frac {\partial t} {\partial x} }$$
になるのでその積、掛け算は
$${ \frac {\partial t} {\partial x} = \frac {\partial z} {\partial t} \frac {\partial t} {\partial x}}$$
となります。
これを微分の公式を使って解いていくと
$${ \frac {\partial z} {\partial t} = 2t}$$
$${ \frac {\partial t} {\partial x} = 1}$$
となるのでその積、掛け算は
となります。
微分を求めることで勾配を求めてパラメータを更新します。誤差逆伝播法については枝分かれしているノードごとに順番に微分することで単純化し、処理スピードも上がっていきます。