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.