私はJavaでニューラルネットワークをプログラムし、現在バックプロパゲーションアルゴリズムに取り組んでいます。
重みのバッチ更新により、オンラインの重み更新ではなく、より安定した勾配検索が行われることを読みました。
x = [0..99]
テストとして、となどの100ポイントの時系列関数を作成しましたy = f(x)
。テスト用に、1つの入力と1つの出力、および10個のニューロンを持つ2つの隠れ層を持つニューラルネットワークを作成しました。私が苦労しているのは、この問題に取り組むときのバックプロパゲーションアルゴリズムの学習率です。
100個の入力ポイントがあるので、各ノードの重みの変化を計算すると、dw_{ij}
実際には合計になります。
dw_{ij} = dw_{ij,1} + dw_{ij,2} + ... + dw_{ij,p}
この場合はどこp = 100
に。
これで、重みの更新が非常に大きくなるため、エラーがE
跳ね返り、最小値を見つけるのが困難になります。私が適切な行動をとる唯一の方法は、学習率y
をのようなものに設定したときでした0.7 / p^2
。
サンプル量に基づいて学習率を設定するための一般的なルールはありますか?