ニューラルネットワークの重み付け
-
10-10-2019 - |
質問
最近、私はBackPropagation Networkを研究し、手動の演習をしました。その後、私は質問を思いつきました(おそらく意味をなさないかもしれません):2つの異なる交換方法に沿って重要なことはありますか:1。増分トレーニング:すべてのデルタWijがわかっていて、提示する前に重量がすぐに更新されます次のトレーニングベクトル。 2.バッチトレーニング:デルタWijは、各模範トレーニングベクトルごとに計算および保存されます。ただし、Delta Wijはすぐにはウェイトの更新に使用されません。重量の更新は、トレーニングエポックの終わりに行われます。
しばらくグーグルで検索しましたが、結果は見つかりませんでした。
解決
したがって、あなたが言及しているのは、勾配降下学習を実行する2つのモードです。バッチモードでは、トレーニングデータセット(1つの「エポック」)のプレゼンテーション全体に重量行列の変更が蓄積されます。オンライントレーニングは、トレーニングセットを含む各ベクターの提示後に重量を更新します。
コンセンサスは、オンライントレーニングがはるかに速く収束するため、より優れているということだと思います(ほとんどの研究では、精度の明らかな違いはないと報告しています)。 (例えば、ランドール・ウィルソン&トニー・マルティネス、 勾配降下学習のためのバッチトレーニングの一般的な非効率性, 、 の ニューラルネットワーク (2003).
オンライントレーニングがより速く収束する理由は、各エポックのエラー表面の曲線に従うことができるためです。これの実際的な重要性は、より大きな学習レートを使用できることです(したがって、トレーニングデータを介してサイクルが少なくなると収束します)。
別の言い方をすれば、バッチトレーニングの蓄積された重量変化は、トレーニングセットのサイズとともに増加します。その結果、バッチトレーニングは各反復で大きなステップを使用しているため、エラースペーストポロジでローカルミニマを逃します。ソルバーは収束するのではなく振動します。
バッチトレーニングは通常、「デフォルト」(MLの教科書などで使用されることが最も多い)であり、許容できる時間制限内に収束する限り、それを使用することに何の問題もありません。繰り返しますが、パフォーマンスの違い(解像度、または分類精度)は小さく、または無視できます。
他のヒント
はい、これら2つの方法には違いがあります。計算されるデルタは、入力ベクトルとネットワークの重みの関数です。重みを変更すると、次の入力ベクトルから計算されたデルタは、重みを変更しなかった場合とは異なります。
したがって、最初の入力ベクトルについては、選択した方法に関係なく、同じデルタが計算されます。これで、連続した方法では、ネットワーク内の重みが変わりますが、同時の方法では、今のところ重みは同じままになります。 2番目の入力ベクトルが表示されると、2つのネットワーク間で重みが異なるため、両方の方法が異なるデルタを生成するようになりました。