回答:
簡単な簡単な説明:
勾配降下(GD)と確率的勾配降下(SGD)の両方で、一連のパラメーターを反復的に更新して、誤差関数を最小化します。
GDでは、トレーニングセットのすべてのサンプルを実行して特定の反復でパラメーターの更新を1回行う必要がありますが、SGDでは、トレーニングセットのトレーニングサンプルの1つまたはサブセットのみを使用します特定の反復でパラメータの更新を行うため。サブセットを使用する場合、ミニバッチ確率的勾配降下と呼ばれます。
したがって、トレーニングサンプルの数が多く、実際には非常に大きい場合、勾配降下の使用には時間がかかりすぎる可能性があります。これは、パラメーターの値を更新するたびに、トレーニングセット全体を実行するためです。一方、1つのトレーニングサンプルのみを使用し、最初のサンプルからすぐに改善し始めるため、SGDの使用は高速になります。
SGDは、多くの場合、GDと比較してはるかに速く収束しますが、エラー関数はGDの場合ほど小さくありません。多くの場合、パラメーター値のSGDで得られる近似値は、最適値に達し、そこで振動し続けるため、十分です。
実際のケースでこの例が必要な場合は、Andrew NGのメモをチェックして、両方のケースに関係する手順を明確に示してください。cs229-notes
ソース:Quoraスレッド
勾配降下法またはバッチ勾配降下法では、エポックごとにトレーニングデータ全体を使用しますが、確率勾配降下法では、エポックごとに単一のトレーニング例を使用します。エポックごとのトレーニングデータのミニバッチ(小さな部分)、ミニバッチのサイズを選択するための経験則は、32、64、128などのように2の累乗です。
詳細については、cs231n講義ノート
確率的という言葉を含めることは、勾配降下のフレームワーク内で、最適化中にパラメーターを更新するために、各実行でトレーニングデータからランダムサンプルが選択されることを意味します。
こうすることで、計算されたエラーを計算し、より高速な反復で重みを更新するだけでなく(一度に処理するサンプルの選択が少ないため)、最適化をより迅速に進めることもできます。持ってここに答えを見てみ申し出の利点をトレーニングするための確率的minibatchesを使用する理由についての詳細については、。
おそらく欠点の1つは、最適化へのパス(常に同じ最適化であると仮定した場合)のノイズが大きくなる可能性があることです。したがって、勾配降下の各反復でエラーがどのように減少するかを示す、なめらかな滑らかな損失曲線の代わりに、次のようなものが表示される場合があります。
損失は時間とともに明らかに減少しますが、エポックからエポック(トレーニングバッチからトレーニングバッチ)に大きな変動があるため、曲線はノイズが多くなります。
これは、単純に、各反復でデータセット全体から確率的/ランダムに選択されたサブセットの平均誤差を計算するためです。一部のサンプルではエラーが大きく、一部では低くなります。したがって、勾配降下の1回の反復にランダムに使用したサンプルに応じて、平均は変化します。
n=1