本文へ移動

G検定(ジェネラリスト検定)

かくりつてきこうばいこうかほう

確率的勾配降下法

SGD

Stochastic Gradient Descent

重みとバイアスを更新するたびに、無作為に選んだ1件の例だけで勾配を計算する勾配降下法の手法。十分な反復で機能するが、ノイズが大きい。

詳しい説明

何をする手法か

確率的勾配降下法(SGD)は、重みとバイアスを更新するたびに、データセットから1件の例だけを使って勾配を計算する手法です。1回の反復(iteration)で扱う例の数、つまりバッチサイズは1です。

重みとバイアスを更新する前に、データセットの全例について損失を計算すべきだと考えるかもしれません。しかし、データセットが数十万件や数百万件の例を含む場合、全例を使うフルバッチは現実的ではありません。SGDとミニバッチSGDは、更新の前に全例を見なくても、平均すれば正しい勾配が得られるようにする代表的な手法です。

stochastic(確率的)の意味

名前の stochastic は、各バッチを構成する1件の例が無作為に選ばれることを表しています。どの例で勾配を計算するかが毎回ランダムに決まるため、確率的と呼ばれます。

ノイズという性質

SGDは反復を十分に重ねれば機能しますが、ノイズが非常に大きい手法です。ここでいうノイズとは、学習中のばらつきのうち、ある反復で損失が減らずにかえって増えてしまうものを指します。SGDのノイズは収束の間際だけでなく、損失曲線の全体にわたって生じることがあります。

ノイズは取り除くべき望ましくない性質だと思われがちです。しかし、ある程度のノイズは良い方向に働くことがあります。ノイズは、モデルの汎化を助けたり、ニューラルネットワークで最適な重みとバイアスを見つける助けになったりすることがあります。

ミニバッチSGD

ミニバッチ確率的勾配降下法(ミニバッチSGD)は、フルバッチとSGDの間をとった手法です。データ点がN件あるとき、バッチサイズには1より大きくN未満の任意の数を選べます。モデルは各バッチに含める例を無作為に選び、それらの勾配を平均してから、1回の反復につき1回だけ重みとバイアスを更新します。

1バッチあたりの例の数をいくつにするかは、データセットと使える計算資源によって決まります。一般に、バッチサイズが小さいとSGDに近い振る舞いになり、大きいとフルバッチの勾配降下法に近い振る舞いになります。

バッチサイズはハイパーパラメータ

バッチサイズは、学習率やエポック数と並ぶ代表的なハイパーパラメータです。ハイパーパラメータは学習のさまざまな面を制御する値で、人が設定します。これに対し、重みやバイアスのようにモデルそのものの一部であり、モデルが学習中に計算する値はパラメータと呼ばれ、ハイパーパラメータとは区別されます。SGDとミニバッチSGDの違いは、このバッチサイズの設定の違いとして捉えられます。

試験で問われること

G検定

  • SGDは1回の反復で1件の例だけを使って勾配を計算し、重みとバイアスを更新する手法で、バッチサイズが1であることが定義の中心である。全例の損失を計算してから更新するフルバッチとの違いを押さえる。
  • 名前の stochastic(確率的)は、各バッチを構成する1件の例が無作為に選ばれることを意味する。更新に使う例がランダムに選ばれる点が名称の由来であると結び付けて覚えておく。
  • SGDは十分な反復で機能するがノイズが非常に大きい。ここでのノイズは、ある反復で損失が減らずに増えてしまうばらつきを指し、収束の間際に限らず損失曲線の全体に現れることがある。
  • ノイズは除くべき欠点とだけ捉えない。ある程度のノイズはモデルの汎化を助け、ニューラルネットワークで最適な重みとバイアスを見つける助けにもなりうると理解しておく。
  • ミニバッチSGDはフルバッチとSGDの間をとった手法で、N件のデータに対してバッチサイズは1より大きくN未満である。無作為に選んだ例の勾配を平均して反復ごとに1回更新し、バッチサイズが小さいほどSGDに、大きいほどフルバッチに近づく。

最終更新日: 2026/09/23