バックプロパゲーション
CPUのメニーコアやSIMDを有効活用する簡単な方法は行列演算ライブラリを使用する方法である。行列演算ライブラリとしては、例えばインテルのCPU向けではIntel Math Kernel Libraryなどがある。
バックプロパゲーションは完了までに非常に時間のかかる反復処理である。マルチコアのコンピュータでマルチスレッド技法を使えば、収斂までにかかる時間を大幅に短縮することができる。バッチ学習を行う場合、マルチスレッドでバックプロパゲーションのアルゴリズムを実行するのが比較的簡単である。
訓練データをそれぞれのスレッド毎に同程度の大きさに分割して割り当てる。それぞれのスレッドで順方向と逆方向のプロパゲーションを行う。重みとしきい値のデルタをスレッド毎に合計していく。反復の周回毎に全スレッドを一時停止させて、重みとしきい値のデルタを合計し、ニューラルネットワークに適用する。これを反復毎に繰り返す。このようなバックプロパゲーションのマルチスレッド技法がEncog Neural Network Frameworkで使われている。
初期値: 各層で平均0分散1、かつ連続一様分布 入力ベース: U ( − 3 / fan in , 3 / fan in ) {\displaystyle U(-{\sqrt {3/{{\text{fan}}_{\text{in}}}}},{\sqrt {3/{{\text{fan}}_{\text{in}}}}})} by ヤン・ルカン 入出力ベース: U ( − 6 / fan in + fan out , 6 / fan in + fan out ) {\displaystyle U(-{\sqrt {6/{{\text{fan}}_{\text{in}}+{\text{fan}}_{\text{out}}}}},{\sqrt {6/{{\text{fan}}_{\text{in}}+{\text{fan}}_{\text{out}}}}})} by Xavier Glorot
勾配法: 様々なパラメータ更新法が提案され利用されている(確率的勾配降下法#変種を参考)。
活性化関数 原点を通過すなわち f ( 0 ) = 0 {\displaystyle f(0)=0} 例: tanh  ( x ) {\displaystyle \tanh(x)} 、 x 1 + | x | {\displaystyle {\frac {x}{1+|x|}}} 、逆に標準シグモイド関数は f(0) = 0.5 のため不適切 入出力範囲 f ( ± 1 ) = ± 1 {\displaystyle f(\pm 1)=\pm 1} 例: 1.7159 tanh  ( 2 x / 3 ) {\displaystyle 1.7159\tanh(2x/3)} ReLU(ランプ関数、アナログ閾素子(英: analog threshold element)): 経験的に良い性能