4-6-2 勾配降下法の学習方法

前の節では、AIが霧の山の中で、坂の傾きを手がかりにして谷底を探していく、勾配降下法のイメージを見てきました。
しかし、ここで一つ疑問が生まれます。
AIは、どのデータを使って、次の一歩を決めるのでしょうか。
実は、この「データの使い方」によって、いくつかの学習方法があります。
ここでも、霧の山を歩く旅人の物語で考えてみましょう。

バッチ学習

まず最も基本的な方法が、バッチ学習(batch learning)です。
旅人が山を歩く前に、持っている地図をすべて広げて確認するとします。
山の地形をよく調べてから、「よし、この方向に進もう」と決める。
これがバッチ学習のイメージです。

AIの場合は、すべての学習データを一度に使って勾配を計算し、その結果をもとに重みを更新するという方法になります。
このやり方は、安定した計算ができるという利点があります。
ただし、データが多いと計算に時間がかかる、メモリを多く使う、という欠点もあります。

オンライン学習

次に、オンライン学習(online learning)を見ててみましょう。
これは、地図をまとめて見るのではなく、旅をしながら「今見えている地形をもとに、次の一歩を決める」という方法です。
つまり、データが1つ入ってくるたびに、その都度モデルを更新するという学習方法です。

この方法は、新しいデータが次々に届く場合、リアルタイムで学習したい場合などに使われます。
ただし、毎回の判断がデータ1つに左右されるため、学習が少し不安定になることもあります。

確率的勾配降下法(SGD)

オンライン学習に近い考え方として、よく使われるのが、確率的勾配降下法(Stochastic Gradient Descent, SGD)です。
確率的勾配降下法では、学習データの中からランダムに1つ選び、そのデータを使って重みを更新します。
つまり旅人は、すべての地図を見るのではなく、ランダムに1枚の地図を手に取って進む方向を決める、ようなイメージです。
この方法は、計算が軽い、学習が速い、という利点があります。
また、ランダムに方向を変えることで、局所最適解から抜け出しやすくなることもあります。

ミニバッチ学習

実際のディープラーニングでは、ミニバッチ学習(mini-batch learning)がよく使われます。
これは、バッチ学習とオンライン学習の中間の方法です。

旅人の例で言えば、地図を全部見るわけでも、1枚だけ見るわけでもなく、数枚の地図をまとめて見てから進むようなイメージです。
AIでは、学習データを小さなグループ(ミニバッチ)に分けそのグループごとに重みを更新するという方法になります。

この方法は、計算効率がよい、学習が安定しやすいという理由から、ディープラーニングで広く使われています

まとめ

バッチ学習
→ すべてのデータを使って更新

オンライン学習
→ データ1つごとに更新

ミニバッチ学習
→ 小さなグループごとに更新

確率的勾配降下法(SGD)
→ ランダムに選んだデータで更新

next ▶ 勾配降下法を改良するアルゴリズム