AutoML OSSを紹介する本連載第7回は、KerasベースのAutoML OSSである「AutoKeras」を解説します。AutoKerasは、ENAS(Efficient Neural Architecture Search)によりニューラルネットワークの構造設計とハイパーパラメーターチューニングを自動で行うツールです。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本記事で紹介したノートブックはGitHubにて公開しています。すぐに実行できますので、ぜひご利用ください。
本連載第6回では、最小限のPythonコードでAutoMLを実現するローコード機械学習ライブラリ「PyCaret」を紹介しました。今回はディープラーニングモデルを自動構築する「AutoKeras」を紹介します。
AutoKerasは、TensorFlowまたはMicrosoft Cognitive Toolkit(CNTK)などの高レベルAPIであるKeras(現在はtf.keras〈※〉)をベースとしたAutoMLシステムで、テキサスA&M大学のData Labで開発されました。
AutoKerasの目標は、公式サイトで“The goal of AutoKeras is to make machine learning accessible to everyone.”と書かれているように、機械学習を誰もが近づきやすいものにすることです。
※現在KerasはTensorFlowに取り込まれ、以前のKerasと区別するためにtf.kerasと呼ばれることがあります。
| 開発元 | テキサスA&M大学 Data Lab | 
|---|---|
| GitHub公開日 | 2017年11月 | 
| リポジトリ | https://github.com/keras-team/autokeras | 
| 実装言語 | Python | 
| ライセンス | Apache-2.0 License | 
| 公式サイト | https://autokeras.com/ | 
| 表1 AutoKerasの基本情報 | |
AutoKerasは以下のような識別器クラスを備えており、画像をはじめテキストやテーブルデータなどを扱うことができます。
| 識別器 | 機能 | 
|---|---|
| ImageClassifier | 画像の分類 | 
| ImageRegressor | 画像による回帰 | 
| TextClassifer | テキストの分類 | 
| TextRegressor | テキストによる回帰 | 
| StructuredDataClassifier | 構造化データの分類 | 
| StructuredDataRegressor | 構造化データによる回帰 | 
| TimeSeriesForecaster | 時系列予測 | 
| 表2 AutoKerasの識別器 | |
そして、各識別器クラスは、以下のようなメソッドを備えています。
| メソッド | 機能 | 
|---|---|
| fit() | 学習 | 
| predict() | 予測 | 
| evaluate() | 評価 | 
| export_model() | モデルのエクスポート | 
| 表3 識別器クラスのメソッド一覧 | |
具体例は次の章で説明しますが、AutoKerasの基本的な使い方は非常に簡単で、以下のような短いコードで学習や予測ができます。
import autokeras as ak clf = ak.ImageClassifier() # 学習 clf.fit(X_train, y_train) # 予測 predictions = clf.predict(X_test)
AutoKerasは、AutoMLができる他のOSS(オープンソースソフトウェア)と比較して次のような特徴があります。
AutoKerasはENASと呼ばれる効率的な最新のNeural Architecture Searchを実現しており、最適なニューラルネットワーク構造を自動で見つけてくれます。
AutoKerasのシステムアーキテクチャを図1に示します。API呼出し後の処理フローは次のようになっています。
AutoKerasでは、図2に示すようなマルチモーダルおよびマルチタスクニューラルネットワークモデルによる予測もできます。
マルチモーダルとは、さまざまな種類の情報(画像、テキスト、構造化データ)のことで、複数のデータソースからモデルを学習する仕組みをマルチモーダル学習といいます。例えば、写真を分類するために、画像に加えて、撮影日時や撮影場所(位置情報)などの構造化データも利用するような場合が考えられます。
同じ入力特徴量から複数のターゲットを予測するマルチタスクにも対応しています。複数のターゲットを1つのモデルで学習することをマルチタスク学習といいます。例えば、写真に写っている人物の性別を判定するだけでなく、その年齢を予測することなどが考えられます。
AutoModelクラスを使用して、マルチモーダルおよびマルチタスクニューラルネットワークを初期化し、学習するコードの例を示します。
# モデルの初期化
model = ak.AutoModel(
    inputs=[ak.ImageInput(), ak.StructuredDataInput()],
    outputs=[
        ak.RegressionHead(metrics=["mae"]),
        ak.ClassificationHead(loss="categorical_crossentropy", metrics=["accuracy"]),
    ],
    overwrite=True,
    max_trials=2
)
# モデルの学習
model.fit(
    [image_data, structured_data],
    [regression_target, classification_target],
    epochs=3
)
Copyright © ITmedia, Inc. All Rights Reserved.