工学系大学院生のブログ

2人の大学院生による雑記ブログ

第1-A回 数学から見るニューラルネットワーク [python]



ニューラルネットワークの実装に関して,細かい点を記載していきます.



1 オンライン処理


 ニューラルネットワークでは、誤差関数を最小化するようにしました。



 誤差関数の勾配は次のように書いていました。

\begin{align}
\nabla E (\textbf{w}) = \frac{1}{N} \sum \frac{\partial E}{\partial \textbf{w}}
\end{align}


 この方法でも問題ありませんが、誤差関数は一般的に複雑で局所解に陥る可能性があります。

 

 勾配降下法はその時点における傾きを使用するため、関数全体における最小値を探索することはできず、初期値に依存して最近傍の下に凸な場所に落ち着きます。

 

 これを逃れるために、オンライン処理を行います。

 

 オンライン処理では、全傾きの平均値を使うのではなく、一部の傾きの平均値を使用します。これにより、局所解に陥るのを防ぎます。


2 モメンタム



 このモメンタムは、勾配降下法の収束速度を上げる方法になります。



 重さの更新の際に、次のように1つ前の変化量を加算します。ここでの肩付き文字は時間ステップであることに注意してください。


\begin{align}
\textbf{w}^{t+1} = \textbf{w}^{t} – \epsilon E(\textbf{w}^t) + \mu (\textbf{w}^t – \textbf{w}^{t-1})
\end{align}



hide

このエントリーをはてなブックマークに追加

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です