web-dev-qa-db-ja.com

SGDと逆伝播の違いは何ですか?

確率的勾配降下(SGD)と逆伝播の違いを教えてください。

バックプロパゲーションは、ニューラルネットワークなどの計算の有向グラフでの勾配の計算の効率的な方法です。これはnot学習方法ですが、むしろ学習方法でよく使用されるであるニースの計算上のトリックです。これは、実際には微分のチェーンルールの単純な実装であり、グラフサイズに関して線形時間で必要なすべての偏微分を計算する機能を単純に提供します(単純な勾配計算は深さで指数関数的にスケーリングします)。

SGDは多くの最適化手法の1つです。つまり、一次オプティマイザー、つまり、目的の勾配の分析に基づいています。その結果、ニューラルネットワークの観点から、効率的な更新を行うためにbackpropとともに適用されることがよくあります。また、SGDを異なる方法(サンプリング、数値近似など)で取得した勾配に適用することもできます。対称的に、backpropを使用した他の最適化手法、グラジエント/ヤコビアンを使用できるすべてのものを使用できます。

このよくある誤解は、単純化のために人々が「backpropでトレーニングされた」と言うことがあるという事実に由来します。また、古い教科書には、「デルタルール」など、少し複雑な用語があり、まったく同じことを記述しています(ニューラルネットワークコミュニティは長い間、一般的な最適化コミュニティから少し独立していました)。

したがって、抽象化の2つの層があります。

  • 勾配計算-backpropが機能する場所
  • 最適化レベル-SGD、Adam、Rprop、BFGSなどの技術が作用する場所。これらの技術は(1次以上の場合)上記で計算された勾配を使用します
64
lejlot

確率的勾配降下(SGD)は、使用される最適化方法です。損失関数を最小化します。

SGDでは、エラーの平均を使用する代わりに、この例によるエラーに応じて、各反復で1 exampleを使用してモデルの重みを更新しますallの例(「単純」勾配降下など)、各反復で。そのためには、SGDが「モデルの勾配」を計算する必要があります。

Backpropagationは、SGDが使用するこの「勾配」を計算するための効率的な手法です。

14
mohamed_18

バックプロパゲーションはモデルの多変数導関数を計算するための単なる方法ですが、SGDは損失/コスト関数の最小値を特定する方法です。

4
lf2225