次の方法で共有


自動機械学習 (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 の問題 (分類、予測、回帰、コンピューター ビジョン、NLP) を特定します。

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

  3. ラベル付けされたトレーニング データのソースを指定します。さまざまな 方法で Azure Machine Learning にデータを取り込みます。

  4. 自動機械学習パラメーターの構成: さまざまなモデルに対する反復回数、ハイパーパラメーター設定、高度な前処理と特徴付けオプション、最適なモデルを決定するときに評価するメトリックを設定します。

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

  6. 結果を確認します。

このプロセスを説明する図を次に示します。 自動機械学習

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

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

AutoML を使用する場合: 分類、回帰、予測、コンピューター ビジョン、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

コンピューター ビジョン タスクをサポートすることで、画像分類や物体検出などのシナリオで画像データにトレーニングされたモデルを簡単に生成できます。

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

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

Azure Machine Learning Python SDK を使用して、ビジョン タスク用の AutoML モデルを作成できます。 結果として得られる実験ジョブ、モデル、および出力には、Azure Machine Learning Studio 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 Studio 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 ソリューションでも使用できます。