現在ブームになっているAI(機械学習)について学んでいると逐次学習(オンライン学習, sequential learning)という言葉が出てきますよね。文中で当然のように使われていることも多いこの単語ですが、「オンラインで学習させる方法なのかな〜」などと曖昧に捉えている人も多いかもしれません。
実際僕自身がそんな風に思っていたこともありましたが、それは大きな間違いですので今回はそんな逐次学習(オンライン学習)について整理していきましょう。
※逐次学習(オンライン学習)と記述するのは誤訳であるという意見もありますが、今回は参考書籍②(記事の最後に掲載)に従って逐次学習(オンライン学習)とさせて頂きました
一言で言うと「逐次学習(オンライン学習)」とは・・・
データを一つずつ読み込んでその都度モデルの更新を繰り返すことで学習を行う手法です。
逐次学習(オンライン学習)は、教師データを一つずつ、またはミニバッチと呼ばれる小さなグループで逐次的に与えて、その都度最適な重みを計算していくやり方で学習を進めていく手法です。モデルの学習を行う際に毎回ゼロからモデルを構築するのではなく、データを一つずつ与えることで現状のモデルのパラメータを随時更新していきます。
逐次学習(オンライン学習)は、継続的なフロートしてデータを受け取って、素早く、または自律的に変化に対応しなければならないシステムで効果を発揮します。例えば、株価の自動売買システムなどがこれに該当するでしょう。
逐次学習(オンライン学習)と対照的な学習方法として一括学習(バッチ学習)がありますが、一括学習(バッチ学習)はオンライン学習のように一つずつデータを与えるというやり方はせず、重みの計算のために全ての教師データを使って、つまり全てのデータを用いて最適な重みを計算します。一般的に、一括学習(バッチ学習)では教師データが増えると必要とするメモリ量もその分増加していきます。
変化するデータに対応する速さを示す指標「学習速度」
ちなみに逐次学習(オンライン学習)には、変化するデータに対してどの程度の速さで対応するかを示す重要な指標「学習速度」があります。
この学習速度を速くすればシステムは新たなデータにすぐに対応できるようになる一方で、古いデータをすぐに忘れる傾向を持ってしまうようになることが避けられません。逆に学習速度を遅くすれば、新しいデータに含まれるノイズや現実をよく表しているとは言えないデータセットに影響を受けにくくなります。
逐次学習(オンライン学習)のメリットとデメリット
逐次学習(オンライン学習)のメリットとしては、
- 1回あたりの学習コストが低い
- 学習データを全て蓄えておかなくても良い
- データの変化に対応しやすい
といった点が挙げられます。逆にデメリットとしては、
- 外れ値やノイズに影響されてしまう
- 新たなデータによる影響を強く受けてしまう
といった点が挙げられるでしょう。
まとめ
つまり、逐次学習(オンライン学習)とは
データを一つずつ読み込んでその都度モデルの更新を繰り返すことで学習を行う手法であり、1回あたりの学習コストが低くデータの変化に対応しやすいなどの特徴があります
コメントをどうぞ
> 一般的に、一括学習(バッチ学習)では教師データが増えると必要とするメモリ量もその分増加していきます。
間違っています。メモリに教師データを丸読みすることはバッチ学習にとって必須条件ではありません。
(例えばHDDから教師データを1つずつ読み込みながら勾配を計算して、すべての教師データを読み込み終わってからモデルを更新すれば、バッチ学習であってもメモリ使用量はオンライン学習とほとんど変わりません。)
通りがかりさん、親切にご指摘くださってありがとうございます。大変勉強になりました。
ご指摘頂きました誤った内容の箇所については、削除線を引かせて頂きました。
今後ともよろしくお願いします。