演算法類型 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

演算法類型

機器學習可以幫助您完成需要某種歸納推論的實證任務。這項任務涉及到感應,因為它使用資料來訓練算法,使一般推論。這表示演算法可以在統計上做出可靠的預測或決策,或在套用至未用來訓練這些資料的新資料時完成其他任務。

為了幫助您選擇最適合您的任務的算法,我們將這些任務分類在各種抽象層級。在抽象的最高層級中,機器學習會嘗試尋找功能或較低結構化項目之間的模式或關係,例如資料集中的文字。模式識別技術可以分為不同的機器學習範式,每個範例都可以解決特定的問題類型。目前有三種用於解決各種問題類型的機器學習基本範例:

每種學習範式可以解決的問題類型是考慮您想要從您擁有或可能收集的資料類型中進行的推論 (或預測、決策或其他任務) 來識別出來。機器學習範例使用演算法方法來解決其各種問題類型。該算法提供了解決這些問題的配方。

但是,許多算法 (例如神經網路) 都可以用不同的學習模式和不同類型的問題進行部署。多種演算法也可以解決特定的問題類型。某些算法更普遍適用,其他算法對於某些類型的目標和資料非常具體。因此,機器學習演算法和問題類型之間的映射是 many-to-many。此外,還有可用於演算法的各種實作選項。

以下各節提供有關實作選項、機器學習範例以及適用於不同問題類型的演算法的指引。

選擇演算法實作

選擇演算法之後,您必須決定要使用的演算法的實作方式。Amazon SageMaker 支援三個需要增加工作量的實作選項。

  • 預先訓練的模型需要最少的努力,並且是已準備好部署或使用 微調和部署的模型 SageMaker JumpStart。

  • 如果資料集龐大且需要大量資源來訓練和部署模型,內建演算法需要更多的精力和擴充能力。

  • 如果沒有可用的內建解決方案,請嘗試開發一個使用預先製作的映像用於機器和深度學習架構的架構,例如 Scikit-Learn TensorFlow、 PyTorch、 MXNet或 Chainer。

  • 如果您需要執行自訂套件,或使用不屬於支援架構或透過 提供的任何程式碼 PyPi,則需要建置自訂 Docker 映像,並設定為安裝必要的套件或軟體。自訂映像檔也必須推送至線上儲存庫,例如 Amazon 彈性容器登錄。

演算法實作指南

實作 需要代碼 預先編碼演算法 支援第三方軟體套件 Support 自訂程式碼 努力程度
內建
Scikit-learn PyPi 僅限
Spark ML PyPi 僅限
XGBoost (開啟來源) PyPi 僅限
TensorFlow PyPi 僅限 中高
PyTorch PyPi 僅限 中高
MXNet PyPi 僅限 中高
Chainer PyPi 僅限 中高
自訂映像 是,來自任何來源

使用內建的演算法。

為您的問題和資料類型選擇演算法時,最簡單的選項是使用 Amazon SageMaker的其中一個內建演算法。這些內建演算法具有兩個主要優點。

  • 內建演算法不需要編碼即可開始執行實驗。您唯一需要提供的輸入是資料、超參數和運算資源。這可讓您更快速地執行實驗,減少追蹤結果和程式碼變更的額外負荷。

  • 內建演算法隨附跨多個運算執行個體的平行處理,並針對所有適用演算法提供立即可用的GPU支援 (由於固有限制,某些演算法可能不包括在內)。如果您有大量可用來訓練模型的資料,則大部分的內建演算法都可以輕鬆擴充以滿足需求。即使您已經有預先訓練的模型,在支援的架構上使用指令碼模式,在 中輸入已知 SageMaker 的超參數可能還是比較容易。

如需 提供的內建演算法的詳細資訊 SageMaker,請參閱 Amazon 中的內建演算法和預先訓練的模型 SageMaker

如需有關 所提供的所有內建演算法常用之Docker 登錄檔路徑、資料格式、建議EC2執行個體類型和 CloudWatch 日誌的重要資訊 SageMaker,請參閱 內建演算法的參數

在支援的架構中使用指令碼模式

如果內建選擇不支援您想要用於模型的演算法,且您願意自行編寫解決方案的程式碼,則應考慮使用 Amazon SageMaker 支援的架構。這被稱為 “指令碼模式”,因為您在具有 .py 擴展的文字檔案中編寫自訂程式碼 (指令碼)。如上表所示, SageMaker 支援大多數熱門機器學習架構。這些架構預先載入了對應的架構和一些額外的 Python 套件,例如 Pandas 和 NumPy,因此您可以編寫自己的程式碼來訓練演算法。這些架構也可讓您在 上安裝託管的任何 Python 套件, PyPi 方法是將 requirements.txt 檔案與訓練程式碼一起包含您自己的程式碼目錄。R 也原生支援於 SageMaker 筆記本核心。有些架構,例如 scikit-learn 和 Spark ML,具有您可以輕鬆使用的預先編碼演算法,而其他架構,例如 TensorFlow 和 PyTorch 可能需要您自行實作演算法。使用支援的架構映像時,唯一的限制是您無法匯入任何未託管在架構映像上 PyPi 或尚未包含在架構映像中的軟體套件。

如需 支援架構的詳細資訊 SageMaker,請參閱 Machine Learning 架構和語言

使用自訂 Docker 映像檔

Amazon SageMaker的內建演算法和支援的架構應涵蓋大多數使用案例,但有時您可能需要從未包含在任何支援的架構中的套件使用演算法。您可能還會在您需要部署的地方選取或保留預先訓練的模型。 SageMaker 使用 Docker 映像來託管所有模型的訓練和服務,因此,如果您所需的套件或軟體不包含在支援的架構中,您可以提供自己的自訂 Docker 映像。這可能是你自己的 Python 包或用 Stan 或朱莉婭等語言編碼的算法。對於這些圖像,您還必須在 Dockerfile 中正確配置算法的訓練和模型的服務。這需要對 Docker 的中級知識,除非您熟悉編寫自己的機器學習算法,否則不建議使用。您的 Docker 映像必須上傳至線上儲存庫,例如 Amazon Elastic Container Registry (ECR),才能正確訓練和提供模型。

如需 中自訂 Docker 映像的詳細資訊 SageMaker,請參閱 用於訓練和部署模型的 Docker 容器

基本機器學習範例的問題類型

以下三節說明機器學習的三個基本範例所解決的主要問題類型。如需 SageMaker 提供以解決這些問題類型的內建演算法清單,請參閱 Amazon 中的內建演算法和預先訓練的模型 SageMaker

監督式學習

如果您的資料集包含包含目標值 (輸出) 的圖徵或屬性 (輸入),則您有受監督學習問題。如果你的目標值是分類的 (數學上離散),那麼你有一個分類問題。這是一個標準的做法,以區分二進制和多類分類。

  • 二進制分類是一種監督式學習,它會根據個人屬性將個人指派給兩個預先定義項目的其中之一和互斥的類別。它會受到監督,因為模型會使用範例進行訓練,而範例中為屬性提供正確標籤物件。醫療診斷是二進位分類的一個例子,根據診斷檢驗的結果判斷個人是否患有疾病。

  • 多類別分類是一種監督式學習,會根據個人屬性將個人指派給多個類別的其中之一。它會受到監督,因為模型會使用範例進行訓練,而範例中為屬性提供正確標籤物件。與文字文件最相關的主題預測就是一個例子。一個文件可能會歸類為宗教、政治或金融相關,或作為與多個其他預先定義主題類別的其中之一相關。

如果您嘗試預測的目標值在數學上是連續的,那麼您有一個回歸問題。迴歸會根據相互關聯的一或多個其他變數或屬性,估計相依目標變數的值。房價預測就是一個例子,它會使用浴室和臥室數量、房子和花園的平方英尺等特徵來進行預測。迴歸分析可建立使用一或多個這類特徵做為輸入並預測房價的模型。

如需 提供的內建監督式學習演算法的詳細資訊 SageMaker,請參閱 監督式學習

非監督式學習

如果您的資料集由不包含標籤或目標值 (輸出) 的特徵或屬性 (輸入) 組成,那麼您就有一個非監督式學習問題。在這種類型的問題,輸出必須根據在輸入資料中發現的模式進行預測。非監督式學習問題的目標是發現模式,例如資料中的分組。有各種各樣的任務或問題類型,可以應用非監督式學習。主要元件和叢集分析是通常部署用於預處理資料的兩種主要方法。以下是可以通過無監督學習解決的問題類型的簡短清單:

  • 尺寸縮減通常是資料探索步驟的一部分,用於確定模型構建的最相關的特徵。這個想法是將資料從高維度、稀疏的空間轉換為保留原始資料最重要屬性的低維度空間。這可以緩解維度的詛咒,這種詛咒可能會產生稀疏的高維度資料,統計分析變得有問題。它還可以用來幫助理解資料,將高維資料減少到可視化的較低維度。

  • 叢集分析是一類技術,用於將物件或案例分類為群組,稱為叢集。其會試圖找出資料內分散的群組,盡可能讓群組成員彼此相似,而進能可和其他群組內的成員有所差異。您可以定義要演算法用來決定相似性的特徵或屬性,選取距離函式來測量相似性,並指定要在分析中使用的叢集數目。

  • 異常檢測是指資料集中罕見物品,事件或觀察的識別,這引起了懷疑,因為它們與其餘資料顯著不同。例如,可以使用異常物品的識別來檢測銀行欺詐或醫療錯誤。異常也稱為異常值、新奇、雜訊、偏差和例外狀況。

  • 密度估計是根據觀察到的資料估計不可觀察的基礎概率密度函式的構建。密度估計的自然用途是用於資料探索。密度估計可以發現資料中的偏斜和多模式等功能。密度估計的最基本形式是重新縮放的直方圖。

SageMaker 提供數個內建機器學習演算法,可供您用於這些非監督式學習任務。如需 提供的內建無監督演算法的詳細資訊 SageMaker,請參閱 非監督式學習

強化學習

強化學習是一種基於與環境互動的學習類型。這種類型的學習由客服人員使用,他們必須透過與動態環境 trial-and-error的互動來學習行為,其中目標是將客服人員因動作而收到的長期獎勵最大化。透過具有已知獎勵的行動來交換具有不確定獎勵的探索行動,從而獲得最大的獎勵。

如需 的 SageMaker架構、工具組和強化學習環境的詳細資訊,請參閱 透過 Amazon 使用強化學習 SageMaker