質問

最近、私はBackPropagation Networkを研究し、手動の演習をしました。その後、私は質問を思いつきました(おそらく意味をなさないかもしれません):2つの異なる交換方法に沿って重要なことはありますか:1。増分トレーニング:すべてのデルタWijがわかっていて、提示する前に重量がすぐに更新されます次のトレーニングベクトル。 2.バッチトレーニング:デルタWijは、各模範トレーニングベクトルごとに計算および保存されます。ただし、Delta Wijはすぐにはウェイトの更新に使用されません。重量の更新は、トレーニングエポックの終わりに行われます。

しばらくグーグルで検索しましたが、結果は見つかりませんでした。

役に立ちましたか?

解決

したがって、あなたが言及しているのは、勾配降下学習を実行する2つのモードです。バッチモードでは、トレーニングデータセット(1つの「エポック」)のプレゼンテーション全体に重量行列の変更が蓄積されます。オンライントレーニングは、トレーニングセットを含む各ベクターの提示後に重量を更新します。

コンセンサスは、オンライントレーニングがはるかに速く収束するため、より優れているということだと思います(ほとんどの研究では、精度の明らかな違いはないと報告しています)。 (例えば、ランドール・ウィルソン&トニー・マルティネス、 勾配降下学習のためのバッチトレーニングの一般的な非効率性, 、 の ニューラルネットワーク (2003).

オンライントレーニングがより速く収束する理由は、各エポックのエラー表面の曲線に従うことができるためです。これの実際的な重要性は、より大きな学習レートを使用できることです(したがって、トレーニングデータを介してサイクルが少なくなると収束します)。

別の言い方をすれば、バッチトレーニングの蓄積された重量変化は、トレーニングセットのサイズとともに増加します。その結果、バッチトレーニングは各反復で大きなステップを使用しているため、エラースペーストポロジでローカルミニマを逃します。ソルバーは収束するのではなく振動します。

バッチトレーニングは通常、「デフォルト」(MLの教科書などで使用されることが最も多い)であり、許容できる時間制限内に収束する限り、それを使用することに何の問題もありません。繰り返しますが、パフォーマンスの違い(解像度、または分類精度)は小さく、または無視できます。

他のヒント

はい、これら2つの方法には違いがあります。計算されるデルタは、入力ベクトルとネットワークの重みの関数です。重みを変更すると、次の入力ベクトルから計算されたデルタは、重みを変更しなかった場合とは異なります。

したがって、最初の入力ベクトルについては、選択した方法に関係なく、同じデルタが計算されます。これで、連続した方法では、ネットワーク内の重みが変わりますが、同時の方法では、今のところ重みは同じままになります。 2番目の入力ベクトルが表示されると、2つのネットワーク間で重みが異なるため、両方の方法が異なるデルタを生成するようになりました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top