最急降下法と確率的勾配降下法の違いは何ですか?

最急降下法と確率的勾配降下法の違いは何ですか?

私はこれらにあまり詳しくありませんが、短い例で違いを説明できますか?

回答

簡単な説明:

勾配降下法(GD)と確率的勾配降下法(SGD)の両方で、エラー関数を最小化するためにパラメーターのセットを反復的に更新します。

GDでは、トレーニングセット内のすべてのサンプルを実行して、特定の反復でパラメーターの単一の更新を実行する必要があります。一方、SGDでは、トレーニングサンプルの1つまたはサブセットのみを使用します。特定の反復でパラメーターの更新を行うためのトレーニングセット。 SUBSETを使用する場合、これはミニバッチ確率的勾配降下法と呼ばれます。

したがって、トレーニングサンプルの数が多く、実際には非常に多い場合、勾配降下法の使用には時間がかかりすぎる可能性があります。パラメータの値を更新している場合は、完全なトレーニングセットを実行しています。一方、SGDの使用は、トレーニングサンプルを1つだけ使用し、最初のサンプルからすぐに改善し始めるため、高速になります。

SGDは、GDと比較してはるかに速く収束することがよくありますが、誤差関数はそうではありません。 GDの場合と同様に最小化されます。多くの場合、パラメータ値は最適値に到達し、そこで振動し続けるため、SGDで得られる近似値で十分です。

実際のケースでこの例が必要な場合は、次を確認してください。 Andrew NGのメモは、両方のケースに関連する手順を明確に示しています。 cs229-notes

出典: Quoraスレッド

コメント

  • ありがとう、簡単に言うと、このように3つのバリエーションがあります。最急降下法:バッチ、確率的およびミニバッチ:バッチは、すべてのトレーニングサンプルが評価された後に重みを更新します。確率的、重みは、各トレーニングサンプルの後に更新されます。ミニバッチは、両方の長所を組み合わせます。完全なデータセットは使用しませんが、単一のデータポイントは使用しません。データセットからランダムに選択したデータセットを使用します。このようにして、計算コストを削減し、確率的バージョンよりも低い分散を実現します。
  • cs229-notesへの上記のリンクがダウンしていることに注意してください。ただし、投稿日と一致するWayback Machineは、配信します-やった! web.archive.org/web/20180618211933/ http://cs229.stanford.edu/…

回答

単語確率的を含める単に、トレーニングデータからのランダムサンプルが、最急降下法。

そうすることで、計算されたエラーとより速い反復での重みの更新だけでなく(一度に少数のサンプルを処理するだけなので)、多くの場合、より迅速に最適化。トレーニングに確率的ミニバッチを使用することが利点となる理由の詳細については、ここで回答を確認してください。

おそらく欠点の1つは、最適化へのパス(常に同じ最適化であると仮定)は、はるかにノイズが多い可能性があります。したがって、勾配降下の各反復でエラーがどのように減少するかを示す、滑らかな損失曲線の代わりに、次のように表示される場合があります。

ノイズの多い損失曲線

損失は時間の経過とともに明らかに減少しますが、エポックごとに(トレーニングバッチごとに)大きな変動があるため、曲線にノイズがあります。

これは、各反復で、データセット全体から確率的/ランダムに選択されたサブセットの平均誤差を計算するためです。一部のサンプルは高いエラーを生成し、いくつかは低いエラーを生成します。したがって、平均は、勾配降下の1回の反復でランダムに使用したサンプルに応じて変化する可能性があります。

コメント

  • ありがとう、簡単にこのように?最急降下法には、バッチ、確率論、ミニバッチの3つのバリエーションがあります。バッチは、すべてのトレーニングサンプルが評価された後に重みを更新します。確率的、重みは各トレーニングサンプルの後に更新されます。ミニバッチは、両方の長所を兼ね備えています。完全なデータセットは使用しませんが、単一のデータポイントは使用しません。データセットからランダムに選択されたデータセットを使用します。このようにして、計算コストを削減し、確率的バージョンよりも低い分散を実現します。
  • 'バッチがあると言うと、バッチはトレーニングセット全体(つまり基本的に1エポック)であり、次にミニバッチがあります。サブセットが使用されます(したがって、セット全体$ N $未満の任意の数)-このサブセットはランダムに選択されるため、確率的です。単一のサンプルを使用することは、オンライン学習と呼ばれ、ミニバッチのサブセットです…または単にn=1を使用したミニバッチです。
  • tks、これは明らかです!

回答

最急降下法またはバッチ最急降下法、エポックごとにトレーニングデータ全体を使用しますが、確率的勾配降下法では、エポックごとに1つのトレーニング例のみを使用し、ミニバッチ最急降下法はこれら2つの極端な中間にあり、ミニバッチ(小さな部分)を使用できます。 )エポックごとのトレーニングデータの場合、ミニバッチのサイズを選択するためのサムルールは32、64、128などのように2の累乗です。
詳細: cs231nレクチャーノート

コメント

  • ありがとう、簡単にこのように?最急降下法には、バッチ、確率論、ミニバッチの3つのバリエーションがあります。バッチは、すべてのトレーニングサンプルが評価された後に重みを更新します。確率的、重みは各トレーニングサンプルの後に更新されます。ミニバッチは、両方の長所を兼ね備えています。完全なデータセットは使用しませんが、単一のデータポイントは使用しません。データセットからランダムに選択されたデータセットを使用します。このようにして、計算コストを削減し、確率的バージョンよりも低い分散を実現します。

回答

勾配降下法は、 $ J(\ Theta)$ <を最小化するアルゴリズムです。 / span>!

アイデア:シータの現在の値について、 $ J(\ Theta)$ 次に、負の勾配の方向に小さなステップを踏みます。繰り返します。

Gradient_Descent

式の更新= UpdateEqn

アルゴリズム:

while True: theta_grad = evaluate_gradient(J,corpus,theta) theta = theta - alpha * theta_grad 

しかし、問題は $ J(\ Theta)$ がウィンドウ内のすべてのコーパスの関数であるため、計算に非常にコストがかかることです。

確率的勾配降下法は、ウィンドウを繰り返しサンプリングし、各ウィンドウの後に更新します

確率的勾配降下法アルゴリズム:

while True: window = sample_window(corpus) theta_grad = evaluate_gradient(J,window,theta) theta = theta - alpha * theta_grad 

通常、サンプルウィンドウサイズは2の累乗、たとえばミニバッチとして32、64です。

回答

両方のアルゴリズムは非常に似ています。唯一の違いは、反復中に発生します。最急降下法では、損失と導関数を計算する際にすべての点を考慮しますが、確率的勾配降下法では、損失関数の単一点とその導関数をランダムに使用します。これらの2つの記事をチェックしてください。どちらも相互に関連しており、十分に説明されています。お役に立てば幸いです。

  1. 最急降下法アルゴリズム

  2. 確率的勾配降下法

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です