Goalist Developers Blog

AutoML:機械学習の次の波

f:id:vivek081166:20190424142833j:plain
Source: www.pexels.com

AIと機械学習は、依然として初心者が参入しにくい専門性の分野です。 豊富な専門知識と事業リソースをもった企業は少ししかありません。~Fei-Fei Li

Mercari は日本で人気のあるショッピングアプリで、画像の分類にAutoML (Automated Machine Learing) Vision(GoogleのAutoMLソリューション)を使用しています。Mercari によると、「写真をアップロードすると、12の主要ブランドのブランド名を提案する独自のMLモデルを開発しています」

TensorFlowでトレーニングされた独自のモデルは75%の精度を達成しましたが、50,000のトレーニング画像を含むアドバンストモードのAutoML Visionは91.3%の精度を達成しました。これは15%もの大幅な向上です。そのような驚くべき結果により、MercariはAutoMLをシステムに統合しました。

これは、複雑なシナリオに対処するための機械学習モデルを進化させることによってもたらされた恩恵のほんの一例です。AutoML(Automated Machine Learning)が今日のML (Machine Learning)ベースのソリューションを根本的に変えたのです。

自動機械学習:AutoML

近年、機械学習はさまざまな分野で大きな進歩をもたらしてきました。金融サービス、医療、小売、交通などの分野では、何らかの形で機械学習システムが使用されており、その結果は有望視されています。

今日の機械学習は、研究に限定されているのではなく、エンタープライズドメインに進出しています。ただし、多くの企業は豊富なデータサイエンティストチームに投資できるだけの事業資源を持っていないために、人に依存した従来のMLプロセスでは解決できない問題が多くありました。Auto MLは、そのような状況への答えになるかもしれません。

自動機械学習(AutoML)は、実世界の問題に機械学習を適用するというend-to-end のプロセスを自動化する過程です。AutoMLは、機械学習の分野で高度な専門知識を持たない人でも、それらを利用できるようにしたのです。

機械学習モデルは、次の4つのプロセスで構成されています。

f:id:vivek081166:20190424143407p:plain

データの取り込みから前処理、最適化、そして結果の予測まで、すべてのステップを人間が管理し、実行します。 AutoMLは基本的に2つの主要な側面に焦点を合わせています 。それはデータ収集/収集と予測すす。これらの間で行われる前処理と最適化のステップは、簡単に自動化することができます。

AutoMLの必要性

機械学習システムの需要は過去数年間で急上昇しました。これは、今日の幅広いアプリケーションでのML の成功によるものです。ただ、機械学習によって特定のビジネスが促進される可能性があることが明確だとしても、多くの企業がMLモデルの展開に苦労しています。

まずは、データサイエンティストのチームを立ち上げる必要があります。第二に、チームを抱えていても、 どの問題にどのモデルが最適であるかを決めることはしばしば知識より多くの経験を必要とします。

AutoMLは、モデルのパフォーマンスを犠牲にすることなく、最小限の労力でMLパイプラインの最大ステップ数を自動化するのに役立ちます。

利点

AutoMLの利点を要約すると、次の3つになります。

  • 作業を自動化することで生産性を高めます。そうするとモデルではなく問題にもっと集中することができます。

  • MLパイプラインを自動化することで、手動時に発生する人為的なエラーを回避するのにも役立ちます。

  • 結局のところ、AutoMLは、MLの力を誰もが利用できるようにすることによって、機械学習の民主化に向けた一歩です。

AutoMLフレームワーク

AutoMLは、機械学習パイプラインの一部または全部を自動化できます。そこで、まずはフレームワークのいくつかを見てみましょう。これは完全なリストではありませんが、幅広い分野で使用されているフレームワークについて紹介しようと思います。

1. MLBox

f:id:vivek081166:20190424143752p:plain
https://mlbox.readthedocs.io/en/latest/

MLBoxは強力な自動機械学習Pythonライブラリです。 公式文書によると、このライブラリは以下の機能を提供します。

  • 高速読み取りおよび分散データの前処理/クリーニング/フォーマット

  • 非常に正確な特徴量選択、リーク検出、そして正確なハイパーパラメータ最適化

  • 分類と回帰のための最先端の予測モデル(ディープラーニング、スタッキング、LightGBMなど)

  • モデル解釈による予測

パイプライン

MLBoxのメインパッケージには、次の作業を自動化するための3つのサブパッケージが含まれています。 * 処理:データの読み取りと前処理 * 最適化:モデルのテストと交差検定 * 予測:予測をする

インストール

現在、MLBoxはLinuxとのみ互換性がありますが、WindowsとMacOSのサポートは間もなく追加される予定です。

#gcc
sudo apt-get install build-essential

#cmake
pip install cmake

pip install mlbox

デモ

ハウスプライス回帰問題で "MLBox"自動MLパッケージを実行する。

gist.github.com

2. Auto-Sklearn

Auto-Sklearnは、Scikit-learnの上に構築された自動機械学習パッケージです。 Auto-Sklearnを使用すれば、アルゴリズムの選択やハイパーパラメータの調整は不要です。 Auto-Sklearnには、ワンホットエンコーディング、PCAなどのフィーチャーエンジニアリング手法が含まれています。

Auto-Sklearnは、中小規模のデータセットではうまく機能しますが、大規模なデータセットに適用するとパフォーマンスが低下します。

インストール

Auto-Sklearnは現在Linuxマシンでのみ動作します。

#dependencies
curl https://raw.githubusercontent.com/automl/auto-sklearn/master/requirements.txt | xargs -n 1 -L 1 pip install

#auto-sklearn
pip install auto-sklearn

デモ

次の例は、Auto-Sklearnを使用して近似のデータを元に予測し、単純な回帰モデルを作る方法です。

gist.github.com

3. Tree-Based Pipeline Optimization Tool (TPOT)

f:id:vivek081166:20190424144939p:plain
https://epistasislab.github.io/tpot/

TPOTは、ジェネティックプログラミングを使用して機械学習パイプラインを最適化するPython自動機械学習ツールです。

TPOTはScikit-learnフレームワークを拡張しますが、独自のリグレッサおよび分類子メソッドを使用します。

f:id:vivek081166:20190424144610p:plain
TPOTによって自動化された機械学習プロセスの一部

インストール

pip install tpot

詳しい手順については、公式文書のTPOTインストール手順を参照してください。

デモ

TPOTでMNIST数字を分類する

gist.github.com

4. H2O

f:id:vivek081166:20190424145540p:plain
http://docs.h2o.ai/
H2Oは、RとPythonの両方をサポートする、H20.aiのオープンソース分散型インメモリ機械学習プラットフォームです。

H2Oは、フィーチャエンジニアリング、モデル検証、モデル調整、モデル選択、モデル展開など、最も困難なデータ科学および機械学習ワークフローの一部を自動化します。

インストール

H2Oをダウンロードしてインストールするには、以下のリンクを利用してください。

h2o-release.s3.amazonaws.com

デモ

H2OAutoML クラスをPythonで基本的な使い方は下記の通りです。

gist.github.com

5. AutoKeras

f:id:vivek081166:20190424145528p:plain
https://autokeras.com/

Auto-Kerasは、機械学習自動化するためにDATA Labが作ったオープンソースライブラリです。KerasディープラーニングフレームワークをベースにしたAuto-Kerasは、ディープラーニングモデル用のアーキテクチャとハイパーパラメータを自動的に検索する機能を、私たちに提供してくれます。

Auto-KearsのAPIはScikit-Learn APIと似ているのでとても使いやすいです。現在のバージョンでは、ディープラーニングプロセス中にハイパーパラメータを自動的に検索する機能が提供されています。

Auto-Kerasは、自動化されたNeural Architecture Search(NAS)アルゴリズムを使用してMLプロセスを簡素化します。

インストール

インストールもシンプルです。

デモ

下記はMNISTデータセットを利用したAuto-Kerasライブラリのデモです。

gist.github.com

6. Cloud AutoML

Cloud AutoML は機械学習プロダクトのスイートです。AutoML を利用すると、機械学習の専門知識があまりない開発者でも Google の最先端の転移学習とニューラル アーキテクチャ検索技術を利用して、ビジネスニーズに合った高品質のモデルをトレーニングできます。

Cloud AutoMLは、自身のデータに基づいてモデルをトレーニング、評価、改善、および展開するためのシンプルなグラフィカルユーザーインターフェイス(GUI)を提供します。現在、このスイートは以下のAutoMLソリューションを提供しています。

f:id:vivek081166:20190424150050p:plain

GoogleのAutoMLの欠点はオープンソースではないということです。 AutoML Visionの場合、モデルをトレーニングするのにかかる時間と、予測のためにAutoML Visionに送信する画像の数によってコストが異なります。詳しくはこちらをご覧ください。

cloud.google.com

7. TransmogrifAI

TransmogrifAIは、Salesforceのオープンソースの自動機械学習ライブラリです。

Einsteinと呼ばれる同社の主力MLプラットフォームもTransmogrifAIによって供給されています。 これは、Apache Spark上で動作するScalaで書かれた構造化データ用のend to endのAutoMLライブラリです。

インストール

# JAVA 1.8 インストール

# Spark 2.3.x 取得
git clone https://github.com/salesforce/TransmogrifAI.git

cd TransmogrifAI && ./gradlew compileTestScala installDist

インストール手順については、資料をお読みください。

デモ

TransmogrifAIによるタイタニック生存者の予測してみましょう。詳しくはこちらをご覧ください。

gist.github.com

AutoMLの未来

AutoMLの基本的な目的は、パイプラインの作成やハイパーパラメータの調整などの反復的な作業を自動化して、自分が解決すべきビジネス上の課題により多くの時間を費やすことができるようにすることです。

AutoMLが成功するかどうかは、多くの人に使われることと機械学習分が進歩することにかかっています。ただ、AutoMLが将来の機械学習の大部分を占めることは間違いないでしょう。

参照

  1. Efficient and Robust Automated Machine Learning
  2. Benchmarking Automatic Machine Learning Frameworks