機械学習の心臓部!バッチ最急降下法と確率的勾配降下法の違いを世界一わかりやすく解説

こんにちは。ゆうせいです。

AIが賢くなっていくプロセスを不思議に思ったことはありませんか。

実は、コンピューターも私たちと同じように「失敗から学ぶ」ことで成長しているのです。

今回は、その学習を支える非常に重要な技術である、バッチ最急降下法と確率的勾配降下法の違いについてお話しします。

難しそうな名前ですが、中身はとてもシンプルです。

一緒に、データサイエンスの世界へ一歩踏み出してみましょう!


そもそも勾配降下法とは何だろう?

まず、これら二つの手法の基礎となる、勾配降下法について理解を深めましょう。

機械学習の目的は、予測の「ズレ」を最小にすることです。

このズレのことを専門用語で、損失関数と呼びます。

イメージしてみてください。

あなたは今、深い霧に包まれた山の上にいます。

足元しか見えない状況で、一番低い場所にある「村」にたどり着くにはどうすればいいでしょうか。

きっと、足元の地面の傾きを確かめて、一番急な下り坂の方向へ一歩ずつ進むはずですよね。

この「傾きを調べて下る」という作業が、まさに勾配降下法なのです。

山を下りきったところが、損失関数が最小になる、つまりAIが最も正確な予測をできるポイントになります。


全員で相談して進む「バッチ最急降下法」

それでは、一つ目の手法であるバッチ最急降下法について解説します。

これは、手元にある全てのデータを一度に見てから、進むべき方向を決める方法です。

例えば、テストの平均点を上げるために、クラス全員(全データ)の答案を丸付けしてから、次の授業の方針を決めるようなイメージです。

バッチ最急降下法のメリット

  • 動きが安定している全員の意見を聞いてから進むので、常にゴールに向かって真っ直ぐ進むことができます。
  • 計算の効率が良い場合がある一度にまとめて計算するため、コンピューターの処理能力をフル活用できることがあります。

バッチ最急降下法のデメリット

  • 時間がかかるデータが1億件あったら、1億件すべてをチェックし終わるまで、最初の一歩が踏み出せません。
  • メモリが足りなくなる一度に大量のデータを読み込むため、パソコンがパンクしてしまう可能性があります。

目の前の一人で即決する「確率的勾配降下法」

次に、もう一つの主役である確率的勾配降下法(SGD)を見ていきましょう。

こちらはバッチ最急降下法とは対照的で、ランダムに選んだたった一つのデータを見て、すぐに進む方向を修正します。

先ほどの例で言えば、一人の生徒が問題を間違えるたびに、その瞬間に教え方を変えるようなスピード感です。

確率的勾配降下法のメリット

  • とにかく速い一つのデータを見るだけで学習が進むので、データが膨大であってもすぐに一歩目を踏み出せます。
  • 落とし穴を回避できる動きが少し「ふらふら」しているおかげで、山の中腹にある小さな窪み(局所最適解)にハマらず、より深い谷を見つけられることがあります。

確率的勾配降下法のデメリット

  • 動きが不安定たまたま極端な意見を持つ一人のデータに振り回されて、ゴールとは逆の方向に進んでしまうことがあります。

数式で見る学習のルール

機械学習の学習効率を語る上で欠かせないのが、学習率です。

これは、一度にどれくらい大きく足を動かすかという「歩幅」の強さを表します。

学習の更新式は、一般的に次のように表されます。

新しい位置 = 現在の位置 - 学習率 \times 傾き

もし、学習率が大きすぎると、谷底を飛び越えて反対側の山に登ってしまいます。

逆に小さすぎると、ゴールにたどり着くまでに日が暮れてしまいますね。

適切な歩幅を選ぶことが、AI教育のプロであるデータサイエンティストの腕の見せ所なのです!


どちらの手法を選ぶべき?

二つの手法を比較表にまとめました。

特徴バッチ最急降下法確率的勾配降下法
使用するデータ量全データ1データ
学習のスピード遅い(準備に時間がかかる)速い(すぐ始められる)
進み方の安定感非常に安定しているふらふらと不安定
大規模データへの対応苦手得意

現在は、この二つのいいとこ取りをした「ミニバッチ勾配降下法」という手法が、AI開発の現場では最もよく使われています。

これは、10人や100人といった「手頃なグループ」ごとに方針を決める方法です。

あなたは、じっくり派ですか?それとも、すぐに行動する派ですか?

実はAIの世界でも、その性格を使い分けているのですね。

バッチ最急降下法と確率的勾配降下法の歴史


始まりは19世紀の数学から

最急降下法の根本的なアイデアは、実は今から170年以上も前、1847年にフランスの数学者オーギュスタン=ルイ・コーシーによって提案されました。

当時はコンピューターなんて存在しませんから、天体の軌道計算など、複雑な数式を解くための「純粋な数学の道具」として誕生したのです。

この時点では、手元にある全ての情報を使って計算するバッチ処理のような考え方が基本でした。

これが、私たちが今日バッチ最急降下法と呼んでいるもののルーツです。


確率的勾配降下法の誕生と「効率」の革命

一方で、確率的勾配降下法(SGD)の原型が登場したのは1950年代のことです。

1951年にロビンスとモンローという統計学者が発表した手法がその土台となっています。

なぜ、全てのデータを見ない「不完全な方法」がわざわざ作られたのでしょうか。

それは、時代が進むにつれて扱うデータがどんどん大きくなり、全てを一度に計算することが物理的に不可能になってきたからです。

例えば、100年前の村の人口調査なら全員分を紙に書いて計算できたかもしれません。

しかし、現代のインターネット上の膨大なデータを全て読み込んでから一歩進むのでは、一生かかっても学習が終わりませんよね。

現代のAIはどちらを使っている?

現在、私たちが使っているChatGPTなどの高度なAIは、ほとんどが確率的勾配降下法、あるいはその進化形を使っています。

もしバッチ最急降下法だけで学習させようとしたら、計算が終わるまでに何百年もかかってしまうでしょう。

歴史を学ぶと、今当たり前に使われている技術が、いかに先人たちの「苦肉の策」や「賢い妥協」から生まれてきたかが分かって面白いですよね!


学びを深めるための次のステップ

バッチと確率的の違い、イメージできましたか?

もし興味が湧いてきたら、次は「モーメンタム」や「Adam」といった、より高度な学習アルゴリズムについて調べてみてください。

これらは、今回学んだ手法に「慣性(勢い)」や「個別の歩幅調整」を加えた、さらに賢いやり方です。

理論を学んだ後は、実際にPythonなどのプログラミング言語を使って、小さなデータを学習させてみるのが一番の近道ですよ。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。