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.
Smart & Social 髫ェ蛟�スコ荵斟帷ケ晢スウ郢ァ�ュ郢晢スウ郢ァ�ー