2020.09.24

Cremeを用いたオンライン機械学習の検証

こんにちは。次世代システム研究室のY.R.です。外国人です。

今度、オンライン機械学習の習いを皆さんと共有致します。

宜しくお願い致します。

はじめに

オンライン機械学習(online machine learning)は、データが順次利用できるようになる機械学習の方法であり、各ステップで将来のデータの最適な予測子を更新するために使用されます。それに対して、通常の機械学習は、データをバッチで取り込んでモデルをトレーニングします(こちらで「バッチ機械学習」と呼ばれています)。オンライン機械学習は増分学習(incremental learning)、逐次学習 (sequential learning)、 インタラクティブ学習 (interactive learning)とアウトオブコア学習(out-of-core learning)も呼ばれている。

オンライン機械学習の特徴は以下の通りになります。
  • データはストリームでもらいます。
  • モデルは一度に1つのサンプルを観測します。
  • トレーニングデータは保存されることは必要でないです。
  • 特徴量とラベルは動的になります。
ランダムフォレスト(Random forest)、K-means 法などのバッチ機械学習(*1)はよく使用していますが、日常で多くの場合はオンラインで進行します。例えば、時系列データ予測(time series forecasting)、スパムフィルタ (spam filter)、モノのインターネット(Internet of Things)など。基本的に、イベントドリブン (event driven)のことになれば、オンラインにしていいと考えられます。

オンライン機械学習 vs. バッチ機械学習

https://www.researchgate.net/figure/Online-machine-learning-versus-batch-learning-a-Batch-machine-learning-workflow-b_fig1_316818527
上図で示すように、オンライン機械学習とバッチ機械学習の違いは明らかになります。オンライン機械学習はデータを受けていると共にモデルを調整しています。オンライン機械学習を深く理解するため、論文参考していいと思います。Online Learning: A Comprehensive Survey[1]

Cremeの紹介

機械学習の領域においてオンライン機械学習はメインではないみたいですが、複数のライブラリはリリースされています。

Jubatus [2] Hivemall [3] Trident-ml [4]

興味が持っている方々は上記のリンクを参考してお願い致します。これらでCremeというライブラリを紹介致します。

https://creme-ml.github.io

2019年1月でCreme の実装は初めてコミットされていましたから、より新しいプロジェクトになります。ウェブサイトの参考ページまだ不全になっております。現在以下のモジュールを含まれています。


Cremeの使い方
  1. トレーニングサンプルは辞書方(dict)で表示されます[5]。
  2. 場合によって多様なタイプのターゲットが指定できます。
  3. ストリームが使えます[6]。
  4. 「fit_one」と「predict_one」が使えます。次の「3 Cremeのデモ」で例を追加しました。

Cremeのデモ

こちらで平均値の計算から代表的なオンライン機械学習のPassive Aggressive (PA) アルゴリズムまでcreme の使い方を演じます。

平均値の計算

常に利用される平均値は以下の通りにインクリメンタルで計算できます。


この計算方法のメリットは明らかであります。全てのサンプルを保存ではなくて、最近の平均値と一番新しいサンプルが必要であるようになります。この計算方法のおかげで、私たちはcremeを通してオンラインで平均値を取れますようになります。


Creme のおかげで、最大値、最小値、Varianceなどの統計量をインクリメンタルに計算できまるようになります。詳しいことは[7]に参加してお願いいたします。

線形回帰

勾配降下法(gradient descent)は回帰分析でよく使用しています。トレーニングデータの取り込みによって、三種類があります。三者の違いは下記の図で示されているように最適解を取る過程にあります。

https://codeburst.io/realtime-machine-learning-online-learning-with-pubnub-2005e86670ad
確率的勾配降下法は一番不安定であるし、より長い時間がかかるかもしれないです。



3 Types of Gradient Descent Algorithms for Small & Large Data Sets



こちらでmはトレーニングサンプルの数量になります。nは特徴量のディメンションになります。確率的勾配降下法で、一つずつでモデルをトレーニングできますから、オンラインの回帰分析は可能になります。実は、Cremeでオンラインの回帰分析の使い方はsklearnなどの回帰分析と違うところをあまりないです。


Passive Aggressive (PA) アルゴリズム

Passive Aggressive (PA) というアルゴリズムおよび二つのバリアントは2006年に提出されました[8]。今も重要なオンライン機械学習のアルゴリズムになります。


簡単的に説明すると、誤りが発生する限りでPAはモデルのパラメータを更新します。更に、重要なポイントはトレーニングのデータは保存しなくてもいいです。CremeでPAの使い方はSklearnと合わせて容易であると思います。


こちらでcremeを用いてPAの使い方を紹介しましたが、sklearnにPAの実装も含まれています[9]。

感想

こちらでオンライン機械学習の概要とcremeによる検証を共有致しました。検証のコードもオープンしました[10]。

盛り上がっているディープラーニングと比べると、オンライン機械学習の注目と進展はまだ不足であると思います。しかし、近来K-meansやよく使わるアルゴリズムをオンライン型に転換されました。

更に、オンライン機械学習は人類の学習と似ているところが多いと考えます。皆は経験を積んでいながら、様々な知識を勉強しています。

オンライン機械学習は人工知能の発展に不可欠な一部分であると考えます。2017年アメリカの国防高等研究計画局(DARPA)により発表した生涯学習機械(Lifelong Learning Machines「L2M」)というプログラムはオンライン機械学習と緊密に繋がっています。

 

(*1) 本来のRandom forestとK-meansはバッチ機械学習ですが、最近オンラインバージョンも提出されました。

最後に

次世システム研究室では、ビッグデータ解析プラットホームの設計・開発を行うアーキテクトとデータサイエンティストを募集しています。興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧からご応募をお願いします。 一緒に勉強しながら楽しく働きたい方のご応募をお待ちしております。

Pocket

関連記事