NTT DATA

DATA INSIGHT

NTTデータの「知見」と「先見」を社会へ届けるメディア

絞り込み検索
キーワードで探す
カテゴリで探す
サービスで探す
業種で探す
トピックで探す
キーワードで探す
カテゴリで探す
サービスで探す
業種で探す
トピックで探す
background-image-careers
2014年11月6日技術ブログ

ビッグデータ時代の機械学習アルゴリズム:オンライン学習

ビジネスで欠かせなくなってきたビッグデータ分析において、デファクトスタンダードになりつつある機械学習アルゴリズム「オンライン学習」をご紹介します。

オンライン学習とその活用場面

オンライン学習は機械学習モデルにおける学習アルゴリズムの1つであり、データを1つずつ読み込んでモデル更新を繰り返すことで学習を行う手法です。反対に、データを全て読み込んでから学習する手法をバッチ学習と呼びます。

【図】

図:オンライン学習のイメージ

通常、機械学習で作成したモデルは運用していくうちに徐々に精度が低下するため、モデルの精度維持のためには定期的に新たなデータを加えたモデル更新が必要となります。この時、バッチ学習では過去のデータと新しいデータを合わせてモデルを1から作り直す必要があり、多くの計算時間が必要になります。オンライン学習を用いれば、新たなデータのみを既存のモデルに取り込む逐次更新が可能になるため、モデルの精度維持がわずかな時間で可能になります。これを推し進めて、発生したデータをその場でモデルに反映すれば、モデルの精度低下を意識する必要すらなくなります。オンライン学習のこのような使い方の実例としては、Webメールサービスの迷惑メールや重要メール判定モデルがあります参考1

また、計算時間やメモリが節約できる特徴を活かして、膨大に蓄えられたデータの学習に活用されることもよくあります。オンライン学習では、データ件数に比例した時間で必要なデータのみをメモリに展開すれば学習できるため、バッチ学習では学習困難だった膨大なデータに対しても学習可能となります(バッチ学習では、計算時間がデータ件数の2乗以上に比例し、すべてのデータをメモリに展開する必要がある)。最近各所で話題になっているDeep Learning参考2、3などの高度な機械学習モデルでは特に、精度向上のために膨大なデータを用いて学習させる必要があり、オンライン学習が必須となっています。

古くて新しいオンライン学習

オンライン学習は実は1950年代から使用されている古い方法ですが、バッチ学習を基本とするモデル(例えばKernel法による非線形Support Vector Machineなど)の研究が盛んになるとともに、オンライン学習の研究は下火になってきていました。しかし近年、蓄えられているデータ量の急増に伴い再び脚光を浴びており、さまざまな機関が熱心に研究を行っています。例えば、現在主流のオンライン学習アルゴリズムであるStochastic Gradient Descent(SGD)には、解に近づくほどデータのノイズの影響により精度が向上しにくくなる問題がありましたが、2012年以降、ノイズを打ち消すことで大幅に学習を加速するアルゴリズム(Stochastic Average GradientおよびStochastic Variance Reduced Gradient)が相次いで開発され、注目が集まっています参考4、5

また、少ない計算時間での学習が可能なオンライン学習とはいえ、単一スレッドにより処理できるデータ量には限界があるため、超大規模データの学習のためには並列・分散化が必要となります。逐次的に学習を進めることから更新処理の際に排他制御が必要になり、並列処理によって速度を向上させにくいアルゴリズムですが、Distributed Delayed Stochastic Optimizationのように更新処理の遅延を許容したり参考6、Hogwild!のようにあえて排他制御を行わないようにすることで、精度を保ちながら大きな速度向上を実現しようとする研究参考7があります。株式会社NTTデータ数理システムでは、これらの先端研究を取り入れたオンライン学習手法を搭載したBig Data Module参考8、9を開発・販売しています。今後超大規模データを用いたオンライン学習の利用はますます盛んになっていくと考えています。

お問い合わせ