こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
学習データの投入方法
「バッチ学習」「オンライン学習」「ミニバッチ学習」という投入方法について、「メリット」「デメリット」「学習手順」という3つの側面から解説していきます。
バッチ学習
バッチ学習とは、全てのデータを一括投入してモデルを学習する手法です。
バッチ学習では、モデル学習に費やす計算時間は非常に長くなる傾向にあるため、モデルの学習と予測を分けて行うのが特徴的です。このように、予測を分けて学習する方法をオフライン学習と言います。
バッチ学習のメリットおよびデメリットについて以下見てみましょう。
メリット
- 一度に全てのデータを利用するため学習の進行が安定しやすい。
- 学習データに少量の異常データが混じっていても、モデル性能に与える悪影響を小さく抑えることができる。
デメリット
- 全データを利用するため、使用するメモリ量が大きくなる。計算負荷が大きい。
- 株価予測などリアルタイムで何度もモデルを更新するケースでは適用が難しい。
学習手順
バッチ学習による学習手順を示します。学習データがZ件存在する場合、Z件全てを用いて学習・分類誤差を算出し、モデル性能を高めていくが特徴です。ニューラルネットワークを例にすると、算出された誤差は一般的にデータZ件の平均値に変換された後、モデルパラメータ(重み等)の更新に利用されます。
モデル実行・学習サイクル
バッチ学習では、新規のデータをモデルに適用する場合「新旧データを全て入力して、学習をやり直す」というプロセスを辿ります。この学習サイクルを経て新しい予測モデルが作成されると、それまで現場で利用されていた予測モデルを停止し、新しいモデルへと置き換えます。
バッチ学習の場合、データの学習に時間がかかるため、リアルタイムでのモデル更新は不可能です。また、全データを頻繁に学習し直す必要がある場合、計算資源の消費が膨大になってしまうため、コストがかかるのも注意が必要です。
ゆえに、リアルタイム性が重視されず、学習頻度が低い現場活用では、バッチ学習が有効と言えます。
オンライン学習
オンライン学習とは、データをランダムに1件ずつ投入してモデルを更新していく手法です。
以下学習手順とその特徴を示します。
メリット
- 1件ずつデータを投入するためメモリ使用量も少なく、モデル学習にかかる計算負荷も小さい。
- バッチ学習が不得意とするリアルタイムでモデル更新を頻繁に行うケースにも適用しやすい。
デメリット
- 1データごとにパラメータを更新するため学習が安定しにくく、1データ単位の計算速度はバッチ学習に劣る。
- 異常なデータが入力されると、モデルの予測性能がそのデータにひっぱられる可能性がある。異常検出アルゴリズムのような、異常データをモニタリングできる仕組みが別途必要となる。
学習手順
オンライン学習による学習手順を示します。学習データがZ件存在する場合、Z件からランダムに1件抽出して予測・分類誤差を算出し、モデル性能を高めていくが特徴です。このサイクルを繰り返し、あらかじめ指定した学習ラウンドや停止条件を満たすとオンライン学習は終了します。
特徴
オンライン学習では「学習率」の設定が重要となります。学習率はモデル学習に適用する新規データの割合です。学習率が高いと新規の入力データに適応しやすくなる一方で、古いデータから得られた情報が消失しやすくなります。一方で、学習率が低いとトレードオフの関係で、新しいデータへの適用度は下がる一方で古いデータの情報は保持できるようになります。
ミニバッチ学習
ミニバッチ学習とは、バッチ学習とオンライン学習の中間のような学習手法であり、データをミニバッチという小さなグループに分割してモデルを学習します。
以下学習手順とその特徴を示します。
特徴
- 学習の進行はオンライン学習より安定・バッチ学習より不安定。
- 異常データから受けるモデル学習への影響度は、オンライン学習より小さく、バッチ学習より大きい。
- 1データあたりの計算速度はオンライン学習より速く、バッチ学習より遅い。
- メモリ使用量はオンライン学習より大きく、バッチ学習より少ない。
学習手順
ミニバッチ学習による学習手順を示します。まず学習データがZ件ある場合、Z件をバッチサイズN件のサブセットに分割します。続いてサブセット毎に予測・分類誤差を求め、サブセット内の誤差平均を算出します。最後に、サブセット内の誤差平均を用いてモデルパラメータを更新します。このサイクルを分割したサブセットの数だけ繰り返すのがミニバッチ学習の特徴です。
ここで1つのサブセットを用いて学習した回数をイテレーション数と呼び、全てのサブセットで学習した回数をエポック数と呼びます。
現在の機械学習ブームを牽引する深層学習ではほとんどの場合、このミニバッチ学習が利用されます。扱うデータ数が増加しているためバッチ学習の実行はメモリサイズ的に現実的でないケースが多く、ミニバッチ学習を利用しなるべく大きなバッチサイズを設定することが一般的です。
【参考】AI・機械学習における配信情報まとめ
当サイトではAI・機械学習における「基礎」から「最新のプログラミング手法」に至るまで幅広く解説しております。また「おすすめの勉強方法」をはじめ、副業・転職・フリーランスとして始める「AI・機械学習案件の探し方」についても詳しく言及しています。
【仕事探し】副業・転職・フリーランス
【教育】おすすめ勉強法
【参考】記事一覧
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら