什麼是自動化機器學習 (AutoML)?

自動化機器學習 (亦稱為自動化 ML 或 AutoML) 是使機器學習模型開發中耗時的反覆工作自動化的流程。 其可讓資料科學家、分析師和開發人員以高擴充性、效率和生產力來建置 ML 模型,同時維持模型品質。 Azure Machine Learning 中的自動化 ML 以我們 Microsoft Research 部門的突破為基礎。

傳統機器學習模型的開發會耗用大量資源,需要大量的領域知識和時間來產生和比較數十種模型。 透過自動化機器學習,您將可以更輕鬆、更高效率地縮短取得生產就緒 ML 模型所需的時間。

在 Azure Machine Learning 中使用 AutoML 的方式

Azure Machine Learning 提供下列兩種使用自動化 ML 的體驗。 請參閱下列各節,以了解每個體驗中的功能可用性

實驗設定

下列設定可讓您設定自動化 ML 實驗。

Python SDK Studio Web 體驗
將資料分割成定型/驗證集
支援 ML 工作:分類、迴歸和預測
支援電腦視覺工作 (預覽):影像分類、物件偵測和執行個體分割
根據主要計量最佳化
支援 Azure ML 計算做為計算目標
設定預測範圍、目標延遲與移動視窗
設定允出準則
設定並行反覆項目
置放資料行
封鎖演算法
交叉驗證
支援在 Azure Databricks 叢集上進行定型
檢視已進行工程特徵名稱
特徵化摘要
假日的特徵化
記錄檔詳細程度等級

模型設定

這些設定可套用至最佳模型,作為自動化 ML 實驗的結果。

Python SDK Studio Web 體驗
最佳模型註冊、部署、可解釋性
啟用投票集團與堆疊集團模型
根據非主要計量顯示最佳模型
啟用/停用 ONNX 模型相容性
測試模型 ✓ (預覽)

回合控制設定

這些設定可讓您檢閱及控制您的實驗回合及其子回合。

Python SDK Studio Web 體驗
回合摘要資料表
取消回合與子回合
取得護欄
暫停與繼續回合

使用 AutoML 的時機:分類、回歸、預測、電腦視覺 & NLP

當您想要 Azure Machine Learning 使用您指定的目標計量來為您定型和調整模型時,請套用自動化 ML。 自動化 ML 會促進機器學習模型的開發程序大眾化,並讓其使用者 (無論其資料科學專業知識如何) 都能找出任何問題的端對端機器學習管道。

ML產業的專業人員和開發人員可以使用自動化ML來:

  • 不需要豐富的程式設計知識即可實作 ML 解決方案
  • 節省時間和資源
  • 運用資料科學最佳做法
  • 提供敏捷式問題解決

分類

分類是一個常見的機器學習工作。 分類是一種監督式學習,其中模型會學習使用定型資料,並將那些學習套用至新的資料。 Azure Machine Learning 特別針對這些工作提供特徵化,例如用於分類的深度類神經網路文字功能。 深入了解特徵化選項

分類模型的主要目標,是根據從其定型資料中的學習,來預測新資料將屬於哪些類別。 常見的分類範例包括詐騙偵測、手寫辨識和物件偵測。 深入了解並查看使用自動化 ML 建立分類模型的範例。

請參閱下列 Python 筆記本中的分類和自動化機器學習的範例:詐騙偵測 \(英文\)、行銷預測 \(英文\),以及新聞群組資料分類 \(英文\)

迴歸

與分類類似,迴歸工作也是常見的監督式學習工作。 Azure Machine Learning 針對這些工作提供的特徵化

不同於預測輸出值為類別的分類,迴歸模型會根據獨立的預測指標來預測數值輸出值。 在迴歸中,目標是藉由評估一個變數如何影響其他變數,來協助您建立那些獨立預測變數之間的關聯性。 例如,以諸如油耗、安全等級等特徵為基礎的汽車價格。 深入了解並查看使用自動化機器學習進行迴歸的範例。

請參閱下列 Python 筆記本中的迴歸和自動化機器學習範例以進行預測:CPU 效能預測

時間序列預測

建置預測是任何企業不可或缺的一部分,無論是收入、庫存、銷售還是客戶需求。 您可以使用自動化 ML 結合技術和方法,並取得建議的高品質時間序列預測。 透過此操作說明深入了解:適用於時間序列預測的自動化機器學習

自動化時間序列實驗會被視為多元迴歸問題。 過去的時間序列值會進行「樞紐處理」,以與其他預測變量一起成為迴歸輸入變數的附加維度。 與傳統時間序列方法不同的是,這種方法的優點是在定型期間自然結合多個內容變數及其關聯性。 自動化 ML 會針對資料集和預測範圍中的所有項目,學習單一但通常是內部分支的模型。 因此,可以使用更多的資料來估計模型參數,並且可以推廣到看不見的序列。

進階的預測設定包括:

  • 假日偵測和特徵化
  • 時間序列和 DNN 學習模組 (Auto-ARIMA、Prophet、ForecastTCN)
  • 許多模型都支援透過群組
  • 輪流原始交互驗證
  • 可設定延遲
  • 移動視窗彙總功能

請參閱這些 Python 筆記本中預測的回歸和自動化機器學習範例:銷售預測需求預測預測GitHub的每日作用中使用者

電腦視覺定價 (預覽)

重要

此功能目前為公開預覽狀態。 在此提供的這個預覽版本並無服務等級協定。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

支援電腦視覺工作可讓您輕鬆地針對影像分類和物件偵測等案例,產生針對影像資料定型的模型。

有了這項功能,您可以:

  • Azure Machine Learning 資料標記功能緊密整合
  • 使用加上標籤的資料來產生影像模型
  • 藉由指定模型演算法和微調超參數來最佳化模型效能。
  • 將產生的模型下載或部署為 Azure Machine Learning 中的 Web 服務。
  • 運用 Azure Machine Learning MLOpsML Pipelines 功能大規模作業化。

您可以透過 Azure ML Python SDK 來支援撰寫視覺工作的 AutoML 模型。 可以從 Azure Machine Learning 工作室 UI 存取產生的實驗回合、模型和輸出。

了解如何設定電腦視覺模型的 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 支援下列電腦視覺工作:

Task Description
多類別影像分類 僅使用一組類別的單一標籤來分類影像的工作,例如,每個影像都會分類為「貓」或「狗」或「鴨子」的影像
多標籤影像分類 影像可以有一組標籤中一或多個標籤的工作 (例如,影像可能會標記為「貓」和「狗」)
物件偵測 用來識別影像中的物件及使用週框方塊找出每個物件的工作,例如找出影像中的所有狗和貓,並在每個方塊週圍繪製週框方塊。
執行個體分割 工作可在像素層級識別影像中的物件,並在影像中的每個物件週圍繪製多邊形。

自然語言處理:NLP (預覽)

重要

此功能目前為公開預覽狀態。 此預覽版本是在沒有服務等級協定的情況下提供,不建議用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

在自動化ML中支援自然語言處理 (NLP) 工作,可讓您輕鬆地針對文字分類和具名實體辨識案例產生文字資料定型的模型。 透過 Azure Machine Learning Python SDK 支援撰寫自動化ML定型 NLP 模型。 可以從 Azure Machine Learning 工作室 UI 存取產生的實驗回合、模型和輸出。

NLP 功能支援:

  • 使用最新的預先定型 BERT 模型進行端對端深度神經網路 NLP 定型
  • Azure Machine Learning資料標籤緊密整合
  • 使用標示的資料來產生 NLP 模型
  • 具有 104 種語言的多語系支援
  • 使用 Horovod 的分散式訓練

瞭解如何 設定 NLP 模型的 AutoML 定型

自動化 ML 的運作方式

在定型期間,Azure Machine Learning 會以平行方式建立數個管道,這些管道分別會為您嘗試不同的演算法與參數。 服務會逐一查看與特徵選取項目配對的 ML 演算法,其中每個反覆項目都會產生具有定型分數的模型。 分數越高,模型就越「適合」您的資料。 一旦達到實驗中定義的允出準則,其就會停止。

使用 Azure Machine Learning,您可以使用下列步驟來設計和執行自動化 ML 定型實驗:

  1. 識別要解決的 ML 問題:分類、預測、迴歸或電腦視覺 (預覽)。

  2. 選擇您是否要使用 Python SDK 或 Studio Web 體驗:了解 Python SDK 和 Studio Web 體驗之間的同位檢查。

  3. 指定標記定型資料的來源和格式:Numpy 陣列或 Pandas 資料框架

  4. 設定模型定型的計算目標,例如您的本機電腦、Azure Machine Learning Compute、遠端 VM 或 Azure Databricks

  5. 設定自動化機器學習參數,這些參數決定不同模型上有多少反覆項目、超參數設定、進階前置處理/特徵化,以及決定最佳模型時要查看的計量。

  6. 提交定型回合。

  7. 檢閱結果

下圖說明此程序。 Automated Machine learning

您也可以檢查所記錄的回合資訊,其中包含回合執行期間所收集的計量。 定型回合會產生 Python 序列化物件 (.pkl 檔案),其中包含模型與資料前置處理。

在自動化模型建置的同時,您還可以了解對產生的模型而言,功能的重要性或相關性

本機與遠端受控 ML 計算目標的指導方針

自動化 ML 的 Web 介面一律會使用遠端計算目標。 但當您使用 Python SDK 時,您將選擇本機計算或遠端計算目標來進行自動化 ML 定型。

  • 本機計算:定型在本機膝上型電腦或 VM 計算上進行。
  • 遠端計算:定型在 Machine Learning 計算叢集上進行。

選擇計算目標

選擇您的計算目標時,請考慮下列因素:

  • 選擇本機計算:如果您的案例是關於使用小型資料和簡短定型 (也就是每個子回合的秒數或幾分鐘) 進行的初始探勘或示範,則在本機電腦上進行定型可能是一個更好的選擇。 沒有設定時間,可以直接使用基礎結構資源 (您的電腦或 VM)。
  • 選擇遠端 ML 計算叢集:如果您要使用較大的資料集進行定型,例如在生產定型中建立需要較長定型的模型,則遠端計算會提供更好的端對端時間效能,因為 AutoML 會在叢集的節點上平行處理定型。 在遠端計算上,內部基礎結構的啟動時間大約會每個子回合增加 1.5 分鐘,而如果 VM 尚未啟動並執行,叢集基礎結構也會增加額外的分鐘數。

優缺點

選擇使用本機與遠端時,請考慮這些優缺點。

優點 (優勢) 缺點 (障礙)
本機計算目標
  • 沒有任何環境啟動時間
  • 功能的子集
  • 無法平行處理回合
  • 不適用於大型資料。
  • 定型時沒有資料串流
  • 沒有以 DNN 為基礎的特徵化
  • 僅限 Python SDK
  • 遠端 ML 計算叢集
  • 完整的功能集
  • 平行處理子回合
  • 大型資料支援
  • 以 DNN 為基礎的特徵化
  • 視需要計算叢集的動態擴充性
  • 無程式碼體驗 (Web UI) 也可供使用
  • 叢集節點的啟動時間
  • 每個子回合的啟動時間
  • 功能可用性

    下表中顯示了使用遠端計算時可用的更多功能。

    功能 遠端 本機
    資料串流 (大型資料支援,最多 100 GB)
    以 DNN-BERT 為基礎的文字特徵化和定型
    現成的 GPU 支援 (定型和推斷)
    影像分類和標記的支援
    適用於預測的 Auto-ARIMA、Prophet 和 ForecastTCN 模型
    以平行方式執行多個回合/反覆項目
    在 AutoML Studio Web 體驗 UI 中建立具有可解釋性的模型
    Studio Web 體驗 UI 中的特徵工程自訂
    Azure ML 超參數調整
    Azure ML 管線工作流程支援
    繼續回合
    預測
    在筆記本中建立及執行實驗
    在 UI 中註冊實驗的資訊和計量並加以視覺化
    資料護欄

    定型、驗證和測試資料

    您可以使用自動化 ML 提供定型資料來定型 ML 模型,且您可以指定要執行哪種類型的模型驗證。 自動化 ML 會在定型過程中執行模型驗證。 也就是說,自動 ML 會使用驗證資料,根據套用的演算法來調整模型超參數,以找出最適合定型資料的最佳組合。 不過,相同的驗證資料會用於每個微調反覆項目,這會引進模型評估偏差,因為模型會持續改善並符合驗證資料。

    為了協助確認這類偏差未套用至最終的建議模型,自動化的 ML 支援使用測試資料來評估在您實驗結束時自動化 ML 建議的最終模型。 當您在自動化 ML 實驗設定中提供測試資料時,預設會在實驗結束時測試此建議的模型 (預覽)。

    重要

    有一項預覽功能是使用測試資料集來測試模型以評估產生的模型。 此功能是實驗性預覽功能,而且可能隨時變更。

    了解如何設定 AutoML 實驗,以透過 SDKAzure Machine Learning 工作室來使用測試資料 (預覽)。

    您也可以提供您自己的測試資料,或設定部分定型資料來測試任何現有的自動化 ML 模型 (預覽),(包括子回合中的模型)。

    功能工程

    特徵工程是使用資料的網域知識來建立功能,以協助加強 ML 演算法學習的程序。 在 Azure Machine Learning 中,會套用規模調整和正規化技術來輔助特徵工程。 這些技術和特性工程統稱統稱為特徵化。

    針對自動化機器學習實驗,特徵化會自動套用,但也可以根據您的資料進行自訂。 深入瞭解包含哪些特徵化 ,以及 AutoML 如何 協助防止模型中過度調整和不平衡的資料

    注意

    自動化機器學習特徵化步驟 (功能標準化、處理遺漏的資料、將文字轉換為數值等等) 會成為基礎模型的一部分。 使用模型進行預測時,定型期間所套用的相同特徵化步驟會自動套用至您的輸入資料。

    自訂特徵化

    您也可以使用其他特徵工程技術,例如編碼和轉換。

    啟用此設定的方式:

    • Azure Machine Learning Studio:透過這些步驟,在 [檢視其他設定] 區段中啟用 [自動特徵化]。

    • Python SDK:在您的 AutoMLConfig 物件中指定 "feauturization": 'auto' / 'off' / 'FeaturizationConfig'。 深入了解如何啟用特徵化

    集團模型

    自動化機器學習支援預設會啟用的集團模型。 集團學習藉由結合多個模型來改善機器學習結果和預測效能,而不是使用單一模型。 集團反覆項目顯示為回合的最終反覆項目。 自動化機器學習會使用投票和堆疊集團方法兩者來結合模型:

    • 投票:根據預測類別機率 (適用於分類工作) 或預測迴歸目標 (適用於迴歸工作) 的加權平均值進行預測。
    • 堆疊:堆疊結合了異質性模型,並根據個別模型的輸出來定型中繼模型。 目前的預設中繼模型是用於分類工作的 LogisticRegression,和用於迴歸/預測工作的 ElasticNet。

    包含排序集團初始化的 Caruana 集團選取項目演算法,用於決定要在集團中使用的模型。 概括而言,此演算法使用最多五個具有最佳個別分數的模型來初始化集團,並確認這些模型是否在最佳分數的 5% 閾值內,以避免不佳的初始集團。 然後,針對每個集團反覆項目,會將新的模型加入至現有的集團,並計算產生的分數。 如果新模型已改善現有的集團分數,則會更新集團以包含新的模型。

    請參閱操作說明,以變更自動化機器學習中的預設集團設定。

    AutoML 與 ONNX

    使用 Azure Machine Learning,您可以使用自動化 ML 來建置 Python 模型,並將其轉換成 ONNX 格式。 一旦模型採用 ONNX 格式,就可以在各種不同的平台和裝置上執行。 深入了解使用 ONNX 加速 ML 模型

    在此 Jupyter 筆記本範例中 \(英文\),了解如何轉換為 ONNX 格式。 了解 ONNX 支援哪些演算法

    ONNX 執行階段也支援 C#,因此您可以使用在 C# 應用程式中自動建置的模型,而無需重新編碼或 REST 端點引入的任何網路延遲。 深入了解如何在 .NET 應用程式中使用 AutoML ONNX 模型,並搭配 ML.NET 使用 ONNX 執行階段 C# API 推斷 ONNX 模型

    後續步驟

    有多個資源可讓您啟動並執行 AutoML。

    教學課程/操作說明

    教學課程是 AutoML 案例的端對端入門範例。

    操作說明文章提供自動化 ML 所提供功能的其他詳細資料。 例如

    Jupyter Notebook 範例

    自動化機器學習範例的 GitHub 筆記本存放庫中,檢閱詳細的程式碼範例和使用案例。

    Python SDK 參考

    使用 AutoML 類別參考文件,加深 SDK 設計模式與類別規格的專業知識。

    注意

    自動化機器學習功能也適用於其他 Microsoft 解決方案,例如 ML.NETHDInsightPower BISQL Server