自動機械学習 (AutoML) とは

適用対象: Python SDK azure-ai-ml v2 (現行)

自動機械学習 (自動 ML または AutoML とも呼ばれます) は、時間のかかる反復的な機械学習モデルの開発タスクを自動化するプロセスです。 これにより、データ サイエンティスト、アナリスト、開発は、モデルの品質を維持しながら、高いスケール、効率性、生産性で ML モデルを構築することができます。 Azure Machine Learning の 自動 ML は、Microsoft Research 部門の最先端技術に基づいています。

AutoML のしくみ

トレーニング中、Azure Machine Learning は、さまざまなアルゴリズムとパラメーターを試行する多数のパイプラインを並列に作成します。 サービスは、機能選択と組み合わせた ML アルゴリズムを介して反復し、それぞれの反復で、トレーニング スコアを含むモデルを生成します。 最適化するメトリックのスコアが高いほど、モデルはデータに "適合している" と見なされます。 実験に定義されている終了基準に到達すると停止します。

Azure Machine Learning を利用するとき、次の手順で自動 ML トレーニング実験を設計し、実験できます。

  1. 解決すべき ML 問題を特定する: 分類、予測、回帰、Computer Vision または NLP。

  2. コードファーストのエクスペリエンスとコードなしのスタジオ Web エクスペリエンスのどちらを使うかを選ぶ: コードファーストのエクスペリエンスを希望するユーザーは、Azure Machine Learning SDKv2 または Azure Machine Learning CLIv2 を使用できます。 「チュートリアル: AutoML と Python を使用して物体検出モデルをトレーニングする」を開始します。 制限付き/コードなしのエクスペリエンスを好むユーザーは、https://ml.azure.com の Azure Machine Learning スタジオで Web インターフェイスを使用できます。 「チュートリアル:Azure Machine Learning の自動 ML で分類モデルを作成する」を開始します。

  3. ラベルの付いたトレーニング データのソースを指定する: さまざまな方法で Azure Machine Learning にデータを取り込むことができます。

  4. さまざまなモデルでの繰り返しの回数、ハイパーパラメーター設定、前処理/特徴付けの詳細、最良のモデルを決定するときに考慮されるメトリックを決定する自動化された機械学習のパラメーターを構成します

  5. トレーニング ジョブを送信します。

  6. 結果を確認します

このプロセスを説明する図を次に示します。 Automated Machine learning

ログに記録されたジョブ情報を調べることもできます。これには、ジョブ中に収集したメトリックが含まれています。 トレーニング ジョブでは、モデルおよびデータ前処理を含む Python シリアル化オブジェクト (.pkl ファイル) が生成されます。

モデルの構築は自動ですが、生成されたモデルにとって特徴がどれだけ重要であるか、または関連性があるかを学ぶこともできます。

AutoML を使用する場合: 分類、回帰、予測、Computer Vision と NLP

指定したターゲット メトリックを使用して自分の代わりに Azure Machine Learning にモデルのトレーニングと調整を行わせる場合は、自動 ML を適用します。 自動 ML を使うと、誰でも機械学習モデルの開発プロセスを使用でき、ユーザーはデータ サイエンスの専門知識に関係なく、どの問題についてもエンド ツー エンドの機械学習パイプラインを識別することができます。

さまざまな業界の ML プロフェッショナルと開発者は、自動化された ML を使用して次のことができます。

  • 広範なプログラミング知識なしで ML ソリューションを実装する
  • 時間とリソースを節約する
  • データ サイエンスのベスト プラクティスを活用する
  • アジャイルな問題解決を提供する

分類

分類は、モデルでトレーニング データを使用して学習を行い、得られた知識を新しいデータに適用する、教師あり学習の一種です。 Azure Machine Learning には、これらのタスクに特化した特徴付けが用意されています (分類用のディープ ニューラル ネットワーク テキスト特徴抽出器など)。 「特徴付けオプション」を参照してください。 また、AutoML でサポートされているアルゴリズムの一覧については、こちらを参照してください。

分類モデルの主な目的は、トレーニング データから学習した知識に基づいて、新しいデータがどのカテゴリに分類されるかを予測することです。 一般的な分類の例には、不正行為の検出、手書き認識、オブジェクトの検出などがあります。

分類と自動化された機械学習の例については、Python ノートブックの銀行マーケティングに関するページを参照してください。

回帰

分類と同様に、回帰タスクも一般的な教師あり学習の 1 つです。 Azure Machine Learning では、回帰の問題に固有の特徴量化が提供されます。 「特徴付けオプション」を参照してください。 また、AutoML でサポートされているアルゴリズムの一覧については、こちらを参照してください。

予測される出力値がカテゴリである分類とは異なり、回帰モデルでは、独立した予測子に基づいて数値の出力値が予測されます。 回帰の目的は、1 つの変数が他の変数にどのように影響するかを推定することによって、独立した予測変数間の関係を確立することです。 たとえば、自動車の価格は、燃費効率や安全性の評価などの特徴に基づいています。

予測のための回帰と自動機械学習の例については、ハードウェア パフォーマンスに関する Python ノートブックを参照してください。

時系列予測

予測を行うことは、収益、在庫、販売、顧客需要にかかわらず、あらゆるビジネスに不可欠です。 自動化された ML を使用してテクニックとアプローチを組み合わせて、推奨される高品質な時系列予測を得ることができます。 AutoML でサポートされているアルゴリズムの一覧については、こちらを参照してください。

自動化された時系列の実験は、多変量回帰問題として扱われます。 過去の時系列値は "ピボット" されて、他の予測因子とともにリグレッサーの追加ディメンションとなります。 このアプローチには、従来の時系列手法と異なり、トレーニング中に複数のコンテキスト変数とその関係を自然に取り込めるという利点があります。 自動 ML では、データセットと予測期間内のすべての項目について、単一ではあるがしばしば内部的に分岐するモデルが学習されます。 したがって、モデルのパラメーターを見積もるために多くのデータを使用でき、目に見えない系列の一般化が可能になります。

高度な予測構成には次のものが含まれます。

  • 休日の検出と特性付け
  • 時系列と DNN 学習 (自動 ARIMA、Prophet、ForecastTCN)
  • グループ化による多くのモデルのサポート
  • ローリング オリジン クロス検証
  • 構成可能なラグ
  • ローリング ウィンドウの集計機能

予測と自動化された機械学習の例については、Python ノートブックのエネルギー需要に関するページを参照してください。

Computer Vision

Computer Vision タスクのサポートにより、画像分類や物体検出などのシナリオで、画像データでトレーニングされたモデルを簡単に生成できます。

この機能を使用して、次のことができます。

  • Azure Machine Learning のデータのラベル付け機能とシームレスに統合する
  • ラベル付けされたデータを使用して画像モデルを生成する
  • モデル アルゴリズムを指定し、ハイパーパラメーターを調整することで、モデルのパフォーマンスを最適化します。
  • 結果のモデルを Web サービスとして Azure Machine Learning でダウンロードまたはデプロイします。
  • Azure Machine Learning MLOpsML パイプラインの機能を活用して、大規模に運用できるようにします。

ビジョン タスク用の AutoML モデルの作成は、Azure Machine Learning Python SDK を介してサポートされます。 結果として得られる実験ジョブ、モデル、出力には、Azure Machine Learning スタジオ UI からアクセスできます。

Computer Vision モデルの AutoML トレーニングを設定する方法を確認してください。

Computer vision tasks examples. Image from: http://cs231n.stanford.edu/slides/2021/lecture_15.pdf 画像の引用元: http://cs231n.stanford.edu/slides/2021/lecture_15.pdf

画像の自動 ML では、次の Computer Vision タスクがサポートされます。

タスク 説明
複数クラスの画像分類 クラスのセットから 1 つのラベルのみに画像が分類されるタスク (例: 各画像は、"猫" または "犬" または "アヒル" の画像として分類されます)
複数ラベルの画像分類 ラベルのセットから 1 つまたは複数のラベルが画像に適用される可能性のあるタスク (例: 1 つの画像に "猫" と "犬" の両方がラベル付けされる可能性があります)
オブジェクトの検出 画像内の物体を識別し、境界ボックスを使用して各物体を特定するタスク (例: 画像内のすべての犬と猫を見つけ、それぞれの周囲に境界ボックスを描画します)。
インスタンスのセグメント化 画像内の物体をピクセル レベルで識別し、画像の各物体の周囲にポリゴンを描画するタスク。

自然言語処理: NLP

自動 ML で自然言語処理 (NLP) タスクをサポートすることで、テキストデータに対してトレーニングされたモデルを簡単に生成し、テキスト分類と名前付きエンティティの認識シナリオを実現できます。 自動 ML トレーニング済み NLP モデルの作成は、Azure Machine Learning Python SDK を通じてサポートされています。 結果として得られる実験ジョブ、モデル、出力には、Azure Machine Learning スタジオ UI からアクセスできます。

NLP 機能は次をサポートします。

  • 最新のトレーニング済み BERT モデルを使用したエンドツーエンドのディープニューラルネットワーク NLP トレーニング
  • Azure Machine Learning データラベルとのシームレスな統合
  • ラベル付けされたデータを使用して画像モデルを生成する
  • 104 の言語による多言語サポート
  • Horovod を使用した分散トレーニング

NLP モデルの AutoML トレーニングを設定する方法について説明します。

トレーニング、検証、テストのデータ

自動 ML では、トレーニング データを与えて ML モデルをトレーニングします。実行するモデル検証の種類を指定できます。 自動 ML では、トレーニングの一環としてモデルが検証されます。 つまり、自動 ML では検証データを利用し、適用されているアルゴリズムに基づき、モデルのハイパーパラメーターを調整し、トレーニング データに最適な組み合わせを見つけます。 ただし、調整が繰り返されるとき、同じ検証データが使用され、モデルの評価が偏ります。これは、モデルは向上を継続するものであり、検証データに合わせるためです。

このような偏りが最終的な推奨モデルに適用されないように、自動 ML ではテスト データを利用し、自動 ML から実験の最後に推奨される最終モデルが評価されます。 自動 ML 実験の構成でテスト データを与えるとき、実験の最後に既定でこの推奨モデルがテストされます (プレビュー)。

重要

生成されたモデルを評価するためにテスト データセットを使ってモデルをテストする機能はプレビュー段階です。 この機能は試験段階のプレビュー機能であり、随時変更される可能性があります。

SDK または Azure Machine Learning スタジオを利用し、テスト データを使用するように AutoML 実験を構成する (プレビュー) 方法を確認してください。

機能エンジニアリング

特徴エンジニアリングは、データに関するドメインの知識を活用して、ML アルゴリズムの学習を支援する機能を作成するプロセスです。 Azure Machine Learning では、特徴エンジニアリングを容易にするために、スケーリングと正規化の手法が適用されます。 これらの手法と特徴エンジニアリングは、まとめて特徴量化と呼ばれています。

自動機械学習の実験において、特徴量化は自動的に適用されますが、データに基づいてカスタマイズすることもできます。 特徴量化の内容 (SDK v1) と、AutoML がいかにしてモデルのオーバーフィットと不均衡データを回避するかについてご確認ください。

注意

自動化された機械学習の特徴付け手順 (機能の正規化、欠損データの処理、テキストから数値への変換など) は、基になるモデルの一部になります。 このモデルを予測に使用する場合、トレーニング中に適用されたのと同じ特徴付けの手順がご自分の入力データに自動的に適用されます。

特徴量化のカスタマイズ

その他の特徴エンジニアリング手法 (エンコードや変換など) も使用できます。

この設定は次の方法で有効にできます。

アンサンブル モデル

自動機械学習では、既定で有効になっているアンサンブル モデルがサポートされています。 アンサンブル学習では、1 つのモデルを使用するのではなく、複数のモデルを組み合わせることによって、機械学習の結果と予測パフォーマンスが改善されます。 アンサンブル イテレーションは、ジョブの最終イテレーションとして表示されます。 自動機械学習では、モデルの結合に投票とスタッキングの両方のアンサンブル方法を使用します。

  • 投票: 予測されたクラス確率 (分類タスクの場合) または予測された回帰ターゲット (回帰タスクの場合) の加重平均に基づいて予測します。
  • スタッキング: スタッキングは異種のモデルを結合し、個々のモデルの出力に基づいてメタモデルをトレーニングします。 現在の既定のメタモデルは、分類タスクの場合は LogisticRegression、回帰/予測タスクの場合は ElasticNet です。

初期アンサンブルが並べ替えられた Caruana のアンサンブル選択アルゴリズムを使用して、アンサンブル内で使用するモデルを決定します。 大まかに言えば、このアルゴリズムでは、最適な個別スコアを持つ最大 5 つのモデルを使用してアンサンブルを初期化し、これらのモデルが最適なスコアの 5% のしきい値内にあることを確認して、不適切な初期アンサンブルを回避します。 その後、各アンサンブルの繰り返しに対して、新しいモデルが既存のエンティティに追加され、結果のスコアが計算されます。 新しいモデルによって既存のアンサンブル スコアが向上した場合、アンサンブルはその新しいモデルを含むように変更されます。

自動化された機械学習の既定のアンサンブル設定を変更するには、AutoML パッケージに関するページを参照してください。

AutoML & ONNX

Azure Machine Learning では、自動化された ML を使用して Python モデルを構築し、それを ONNX 形式に変換できます。 ONNX 形式になったモデルは、さまざまなプラットフォームやデバイスで実行することができます。 ONNX での ML モデルの能率化に関する詳細をご覧ください。

ONNX 形式に変換する方法については、この Jupyter ノートブックの例を参照してください。 ONNX でサポートされているアルゴリズムについてご確認ください。

ONNX ランタイムは C# にも対応しています。そのため、コードを書き直す必要がなく、また、REST エンドポイントで発生するネットワークの遅延なく、C# アプリで自動的に構築されたモデルを使用できます。 ML.NET を使用する .NET アプリケーションでの AutoML ONNX モデルの使用ONNX ランタイム C# API を使用した ONNX モデルの推論に関するページを参照してください。

次のステップ

AutoML の使用を開始する方法がわかるリソースが複数あります。

チュートリアルと方法

チュートリアルでは、AutoML シナリオのサンプルを端から端まで紹介します。

操作方法の記事では、自動 ML が提供する機能について詳しく説明しています。 たとえば、次のように入力します。

Jupyter Notebook のサンプル

GitHub の自動機械学習サンプルのノートブック リポジトリで詳しいコード サンプルやユース ケースを確認してください。

Python SDK リファレンス

AutoML ジョブ クラス リファレンス ドキュメントでは、SDK デザイン パターンとクラス仕様の知識を深めることができます。

注意

自動機械学習機能は、ML.NETHDInsightPower BISQL Server などの他の Microsoft ソリューションでも使用できます