検索
連載

ディープラーニングモデルを自動構築するAutoML OSS「AutoKeras」AutoML OSS入門(7)(1/3 ページ)

AutoML OSSを紹介する本連載第7回は、KerasベースのAutoML OSSである「AutoKeras」を解説します。AutoKerasは、ENAS(Efficient Neural Architecture Search)によりニューラルネットワークの構造設計とハイパーパラメーターチューニングを自動で行うツールです。

Share
Tweet
LINE
Hatena

本記事で紹介したノートブックはGitHubにて公開しています。すぐに実行できますので、ぜひご利用ください。


 本連載第6回では、最小限のPythonコードでAutoMLを実現するローコード機械学習ライブラリ「PyCaret」を紹介しました。今回はディープラーニングモデルを自動構築する「AutoKeras」を紹介します。

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(オープンソースソフトウェア)と比較して次のような特徴があります。

  • Efficitent Neural Architecture Search(ENAS)によるニューラルネットワークの構造設計
  • マルチモーダル&マルチタスクにも対応

ENASによるニューラルネットワークの構造設計

 AutoKerasはENASと呼ばれる効率的な最新のNeural Architecture Searchを実現しており、最適なニューラルネットワーク構造を自動で見つけてくれます。

 AutoKerasのシステムアーキテクチャを図1に示します。API呼出し後の処理フローは次のようになっています。

  1. Searcherのベイジアンオプティマイザーは、CPUを使って新しいニューラルアーキテクチャを生成する
  2. Graphモジュールは、生成されたニューラルアーキテクチャからRAM上にパラメーターを持つ実際のニューラルネットワークを構築する
  3. Model Trainerは、構築されたニューラルネットワークをGPUにコピーし、学習する
  4. 学習済みのニューラルネットワークはストレージに保存される
図1 AutoKerasのシステム概要
図1 AutoKerasのシステム概要(出典:Auto-Keras: An Efficient Neural Architecture Search System

マルチモーダル&マルチタスクにも対応

 AutoKerasでは、図2に示すようなマルチモーダルおよびマルチタスクニューラルネットワークモデルによる予測もできます。

図2 マルチモーダル&マルチタスクニューラルネットワークモデルの例
図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.

       | 次のページへ
ページトップに戻る