こんにちは、Kosei(@kay_diacc2)です!
学習データの投入方法

「バッチ学習」「オンライン学習」「ミニバッチ学習」という投入方法について、「メリット」「デメリット」「学習手順」という3つの側面から解説していきます。
バッチ学習

バッチ学習は全てのデータを一括投入してモデルを学習する手法です。
メリット
- 一度に全てのデータを利用するため学習の進行が安定しやすい。
- 学習データに少量の異常データが混じっていても、モデル性能に与える悪影響を小さく抑えることができる。
デメリット
- 全データを利用するため、使用するメモリ量が大きくなる。計算負荷が大きい。
- 株価予測などリアルタイムで何度もモデルを更新するケースでは適用が難しい。
学習手順

バッチ学習による学習手順を示します。学習データがZ件存在する場合、Z件全てを用いて予測・分類誤差を算出し、モデル性能を高めていくが特徴です。ニューラルネットワークを例にすると、算出された誤差は一般的にデータZ件の平均値に変換された後、モデルパラメータ(重み等)の更新に利用されます。
オンライン学習

オンライン学習はデータをランダムに1件ずつ投入してモデルを更新していく手法です。以下学習手順とその特徴を示します。
メリット
- 1件ずつデータを投入するためメモリ使用量も少なく、モデル学習にかかる計算負荷も小さい。
- バッチ学習が不得意とするリアルタイムでモデル更新を頻繁に行うケースにも適用しやすい。
デメリット
- 1データごとにパラメータを更新するため学習が安定しにくく、1データ単位の計算速度はバッチ学習に劣る。
- 異常なデータが入力されると、モデルの予測性能がそのデータにひっぱられる可能性がある。異常検出アルゴリズムのような、異常データをモニタリングできる仕組みが別途必要となる。
学習手順

オンライン学習による学習手順を示します。学習データがZ件存在する場合、Z件からランダムに1件抽出して予測・分類誤差を算出し、モデル性能を高めていくが特徴です。このサイクルを繰り返し、あらかじめ指定した学習ラウンドや停止条件を満たすとオンライン学習は終了します。
特徴
オンライン学習では「学習率」の設定が重要となります。学習率はモデル学習に適用する新規データの割合です。学習率が高いと新規の入力データに適応しやすくなる一方で、古いデータから得られた情報が消失しやすくなります。一方で、学習率が低いとトレードオフの関係で、新しいデータへの適用度は下がる一方で古いデータの情報は保持できるようになります。
ミニバッチ学習

ミニバッチ学習はバッチ学習とオンライン学習の中間のような学習手法であり、データをミニバッチという小さなグループに分割してモデルを学習します。以下学習手順とその特徴を示します。
特徴
- 学習の進行はオンライン学習より安定・バッチ学習より不安定。
- 異常データから受けるモデル学習への影響度は、オンライン学習より小さく、バッチ学習より大きい。
- 1データあたりの計算速度はオンライン学習より速く、バッチ学習より遅い。
- メモリ使用量はオンライン学習より大きく、バッチ学習より少ない。
学習手順

ミニバッチ学習による学習手順を示します。まず学習データがZ件ある場合、Z件をバッチサイズN件のサブセットに分割します。続いてサブセット毎に予測・分類誤差を求め、サブセット内の誤差平均を算出します。最後に、サブセット内の誤差平均を用いてモデルパラメータを更新します。このサイクルを分割したサブセットの数だけ繰り返すのがミニバッチ学習の特徴です。
ここで1つのサブセットを用いて学習した回数をイテレーション数と呼び、全てのサブセットで学習した回数をエポック数と呼びます。
現在の機械学習ブームを牽引する深層学習ではほとんどの場合、このミニバッチ学習が利用されます。扱うデータ数が増加しているためバッチ学習の実行はメモリサイズ的に現実的でないケースが多く、ミニバッチ学習を利用しなるべく大きなバッチサイズを設定することが一般的です。
AI・機械学習まとめ
最後までご覧いただきありがとうございました。当サイトでは機械学習・深層学習における理論やPythonを用いた実装方法の解説記事を多数取り扱っております。
【AI・機械学習・ディープラーニング】記事一覧
AI・機械学習・深層学習における理論からPythonを用いた実装に至るまで幅広く解説しています。
【初学者向け】データサイエンス・人工知能(AI)開発のおすすめ学習方法も解説してます。
【初心者向け】Pythonで人工知能(AI)開発を独学!|機械学習プログラミングスキルを身に着けるおすすめ学習方法
近年人気プログラミング言語ランキングで常に上位をキープする「Python」について、その理由の1つに「人工知能開発ができること」が挙げられます。本記事では「Pythonプログラミングを通じてAI開発を行うためのおすすめ独学方法」を徹底解説します。
ディープラーニングを学ぶ上でおすすめの教材はこちらで紹介しています。
【Python・深層学習入門】おすすめの本・動画教材7選
「人工知能(AI)開発に興味があり、Pythonを用いてできるようになりたい」「ディープラーニング(深層学習)プログラミングスキル習得に向けた、おすすめ学習教材を知りたい」このような要望にお応えします。
最後に

お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら