自動機器學習綜述
自從計算機時代開始,科學家和工程師們就一直想知道如何像人類一樣,給計算機注入學習的能力。艾倫·圖靈是第一批提出智能理論的科學家之一,該理論設想有一天計算機能夠達到與人類同等的智能水平。從那時起,機器學習領域發生了一系列巨大的飛躍。我們已經看到機器學習在許多情況下擊敗或至少匹配特定的人類認知能力,例如在ResNet(一種深度殘留的網絡架構)的情況下超越了人類在圖像識別方面的表現,或者微軟的語音轉錄系統幾乎達到人類水平的表現。
「機器學習優點」:機器學習的最大好處之一是,它可以應用于人類今天面臨的幾乎任何問題。然而,有了這些好處,也有一些挑戰。
「痛點」:機器學習算法需要針對每個不同的現實場景進行配置和優化。這使得人工操作非常密集,并且從監督開發的人員那里花費了大量的時間。此手動流程也容易出錯、效率不高且難于管理。更不用說配置和優化不同類型算法的專業知識的匱乏。 「自動機器學習初衷」:如果配置、調優和模型選擇是自動化的,那么部署過程將更加高效,并且人們可以關注更重要的任務,例如模型可解釋性、道德規范和業務結果。因此,機器學習模型構建過程的自動化具有重要的現實意義。 進入自動機器學習: 注:在自動機器學習的定義中,包括:
自動化工程特點
自動的模型選擇和超參數調優
自動神經網絡架構選擇(NAS)
自動部署
這篇文章將探索目前可用于上述每個自動化過程的框架,以幫助讀者了解今天在自動化機器學習方面可能出現的情況。在探討每個過程之前,讓我們簡要地討論端到端機器學習流程,并指出每個過程在該流程中發生的位置。 從上面的圖可以明顯看出,機器學習流程不僅僅包括建模階段。它還包括「問題定義、數據收集和部署」。這篇博文的重點仍將放在“「建模」”和“「部署」”階段。這就是我們想從自動化的角度來探索的。如果建模和部署階段可以自動化,那么專家就可以更多地關注問題定義、數據理解、遵守道德標準,并確保部署的模型為業務生成有影響的見解,而不會引起任何道德問題。 對于建模和部署階段的每個部分,我們將探索來自開源社區、供應商(如谷歌、Microsoft和Amazon)和其他參與者的框架。
自動特征工程
通常情況下,機器學習算法的良好性能在很大程度上取決于模型使用的「特征的質量」。對于數據科學家來說,特征工程是一項非常手工和勞動密集型的任務,它涉及大量的試驗和錯誤、深入的領域知識,以及(目前)機器不擅長的東西:直覺。自動化特征工程的目的是「迭代地創建新的特征集」,直到ML模型達到令人滿意的準確度分數。現在讓我們來框定我們試圖自動化的過程。 功能工程流程通常是這樣的:收集數據集,例如,從電子商務網站收集關于客戶行為的數據集。作為一個數據科學家,你通常會喜歡創建新的功能,如果還沒有在數據中,如:
“客戶下單的頻率”
“上次購買后的天數或小時數”
“顧客通常購買的商品類型”
其目的是創建一種算法,「自動從數據生成或綜合這些類型的特征」。現在我們將列出并簡要描述一些用于自動化特性工程的框架。請注意,在一種稱為深度學習的專門機器學習形式中,通過深度學習模型層中的多重矩陣轉換自動從圖像、文本和視頻中提取特征是很典型的。我們在這篇文章中討論的特性工程類型主要涉及結構化的事務和關系數據集,盡管我們也將簡要地討論深度學習中的特性工程。
框架
「數據科學機器」是由麻省理工學院的Max Kanter和Kalyan Verramachaneni進行的一個研究項目。他們的研究論文概述了深度特征合成算法的內部工作原理,該算法使用原語的概念來為實體(數據中唯一的觀察)和實體之間的關系生成特征。基本類型本質上是應用于數據的數學函數(sum、mean、max、min、average等),這些函數返回不區分大小寫的數字結果,并且可以由人類解釋為表示不同的東西。在我們的電子商務示例中,sum可用于計算針對特定客戶的所有訂單所花費的美元金額。以飛機票務平臺為例,它可用于計算客戶已購買的當年機票的數量。不同的用例但是相同的數學原語。這是在Featuretools Python庫下開源的,可以嘗試下載并試用它。Featuretools是由Feature Labs開發的,它將數據科學機器研究論文中的工作進行了操作化。Feature Labs是數據科學機器的創造者Max和Kalyan創建的一家公司。
DataRobot使用一個稱為模型藍圖的概念來實現自動化特征工程,該概念在機器學習管道中堆疊了不同的預處理步驟。特性工程部分不像在Featuretools中那樣利用原語的概念。然而,它確實對數據應用了一些標準的預處理技術(基于所使用的ML算法,例如隨機森林、邏輯回歸等),如單熱編碼、輸入、類別計數、在自由文本列中出現的n個字符標記、比率等。
H2O的無人駕駛人工智能是一個自動機器學習的平臺。它可以用于自動化特性工程、模型驗證、模型調優、模型選擇和模型部署。在這一部分,我們將只討論無人駕駛AI的自動特性工程部分。無人駕駛智能支持一系列的所謂的“transformers”,可以應用于一個數據集。
tsfresh是一個用于從時間序列數據中計算和提取特征的Python庫。它提取了中位數、均值、樣本熵、分位數、偏度、方差、值計數、峰數等特征。它沒有泛化所有類型的數據集。它更針對于時間序列數據。但是,它可以與上面提到的其他工具一起使用。
自動化特性工程仍然是一項難以完成的任務。也有很多不支持自動化特性工程的爭論,因為它會產生不正確的結果,或者用不透明的方式使用錯誤的標簽對觀察結果進行分類。因此,自動化特性工程需要謹慎對待,特別是在高度管制的環境中,比如金融服務,在每個決策過程中,可解釋性和可說明性都是至關重要的。
自動選擇模型和超參數調整
一旦特征被預處理,你需要找到一個機器學習算法來訓練這些特征,并能夠預測新觀察的目標值。與功能工程不同,模型選擇具有豐富的選擇和選項。有「聚類模型、分類和回歸模型、基于神經網絡的模型、基于關聯規則的模型」等等。每個算法適用于某個類的問題和自動模型選擇這個模型我們可以過濾空間貫穿所有合適的模型為一個特定的任務,選擇一個產生最高精度(如最低AIC)或最低誤碼率(例如RMSE)。 可以理解的是,沒有一種機器學習算法在所有數據集上都表現得最好(No Free Lunch theory),有些算法需要進行超參數調優。事實上,在選擇模型時,我們傾向于嘗試不同的變量、不同的系數或不同的超參數。在回歸問題中,存在一種方法,可以使用F-test、t-test、ajdusted R-squared等技術自動選擇最終模型中使用的預測變量。這種方法稱為逐步回歸。但是這種方法容易出錯。 自動選擇模型的框架:
auto-sklearn是由Mathias Feurer, Aaron Klein, Katharina Eggensperger等人創建的Python庫。這個庫主要處理機器學習中的兩個核心過程:從分類和回歸算法的廣泛列表中選擇算法和超參數優化。這個庫不執行特性工程,因為數據集特性是通過組合使用數學原語(如Featuretools)來創建新特性的。Auto-sklearn類似于Auto-WEKA和Hyperopt-sklearn。下面是auto-sklearn可以從決策樹、高斯樸素貝葉斯、梯度增強、kNN、LDA、SVM、隨機森林和線性分類器(SGD)中選擇的一些分類器。在預處理步驟上,它支持以下幾個方面:內核主成分分析,選擇百分位數,選擇率,一熱編碼,歸位,平衡,縮放,特征聚集,等等。同樣,從通過組合現有特性來豐富數據集的角度來看,這些都不能理解為特性工程步驟。
有些算法會自動地通過一系列不同的變量配置來優化某些指標。這類似于尋找可變的重要性。通常,通過理解變量存在的上下文和域,人們可以很好地完成這項工作。例如:“夏季銷量增加”或“最昂貴的商品來自西倫敦居民”。這些變量可以由人類領域專家自然地暗示出來。然而,還有另一種方法來理解一個變量的重要性,那就是看這個變量在統計上有多重要。這是由決策樹(使用所謂的基尼指數或信息增益)等算法自動完成的。隨機森林也這樣做,但與決策樹不同,隨機森林運行多個決策樹,以創建引入了隨機性的多個模型。
對于時間序列數據,我們傾向于討論汽車。R中的arima包使用AIC作為優化指標。自動生成的算法。arima在后臺使用Hyndman-Khandakar來實現這一點,在下面的OText書中有詳細的解釋。
如前所述,H2O無人駕駛AI可以用于自動化特征工程。它還可以用來自動訓練多個算法在同一時間。這是由h2o實現的。automl包。它可以自動訓練您的數據使用多種不同的算法與不同的參數,如GLM, Xgboost隨機森林,深度學習,集成模型,等等。
DataRobot還可以用于同時自動訓練多個算法。這是通過使用經DataRobot科學家調整過的模型實現的,因此能夠使用預先設置的超參數運行幾十個模型。它最終會選擇一個準確率最高的算法。它還允許數據科學家手動干預和調整模型,以提高準確性。
微軟在9月宣布了自己的自動化機器學習工具包。事實上,該產品本身被稱為automatic ML,屬于Azure機器學習產品。微軟的自動ML利用協同過濾和貝葉斯優化來搜索機器學習的空間。Microsoft指的是數據預處理步驟、學習算法和超參數配置的組合。在上面討論的許多模型選擇技術中,ML學習過程中自動化的典型部分是超參數設置。微軟的研究人員發現,只調優超參數有時可以與隨機搜索相媲美,因此理想情況下,整個端到端流程應該是自動化的。
谷歌也在這個領域進行了創新,推出了谷歌云自動化。在Cloud AutoML谷歌中,通過只從用戶獲取標記數據并自動構建和訓練算法,數據科學家能夠訓練計算機視覺、自然語言處理和翻譯的模型。
Google CloudML
TPOT是用于自動化機器學習的Python庫,它利用遺傳編程優化機器學習管道。ML管道包括數據清理、特征選擇、特征預處理、特征構建、模型選擇和參數優化。TPOT庫利用了scikit-learn中可用的機器學習庫。
TPOT Machine Learning Pipeline
Amazon Sage Maker提供了建模、培訓和部署的能力。它可以自動調整算法,為了做到這一點,它使用了一種叫做貝葉斯優化的技術
HyperDrive是微軟的產品,是為全面的超參數探索而建立的。超參數搜索空間可以用隨機搜索、網格搜索或貝葉斯優化來覆蓋。它實現了一個調度器列表,您可以選擇通過聯合優化質量和成本來提前終止探索階段。
神經網絡結構選擇
在機器學習的世界中,最乏味的任務之一就是設計和構建神經網絡架構。通常情況下,人們會花費數小時或數天的時間嘗試使用不同的超參數迭代不同的神經網絡體系結構,以優化手頭任務的目標函數。這非常耗時,而且容易出錯。「谷歌引入了利用進化算法和強化學習實現神經網絡搜索的思想」,以設計和尋找最優的神經網絡結構。本質上,這是在訓練創建一個層,然后堆疊這些層來創建一個深層的神經網絡架構。近年來,這一領域的研究引起了廣泛關注,并提出了許多研究論文。 以下是該領域所有研究論文的最新列表: http://www.ml4aad.org/automl/literat-on-neuralarchitecturesearch/。 值得注意的研究論文有:
NASNet-學習可擴展的圖像識別的可轉移的體系結構
The NASNet algorithm
AmoebaNet-基于AmoebaNet正則化演化的圖像分類器體系結構搜索
ENAS-高效的神經結構搜索
自動部署
機器學習社區的很多關注都集中在學習算法的開發上,而不是端到端機器學習流程中最重要的部分,那就是ML模型的部署和產品化。在將機器學習模型部署到生產環境中存在許多固有的挑戰。 有一些公司和開源項目正在嘗試將這個過程自動化,并盡可能減少數據科學家的痛苦,因為他們不一定具備DevOps技能。以下是在這個領域工作的框架和公司的列表:
Seldon-提供了一些方法來包裝用R、Python、Java和NodeJS構建的模型,并將其部署到Kubernetes集群中。它提供與kubeflow、IBM用于深度學習的fabric、NVIDIA TensorRT、DL推理服務器、Tensorflow服務等的集成。
Redis-ML-是Redis(內存中分布式鍵值數據庫)中的一個模塊,它允許將模型部署到生產環境中。它目前只支持以下算法:隨機森林(分類和回歸)、線性回歸和邏輯回歸。
Apache MXNet的模型服務器用于服務從MXNet或Open Neural Network Exchange (ONNX)導出的深度學習模型。
Microsoft機器學習服務允許您將模型作為web服務部署在可伸縮的Kubernetes集群上,并且可以將模型作為web服務調用。
可以使用Amazon SageMaker將模型部署到HTTPS端點,應用程序利用該端點對新數據觀察進行推斷/預測。
谷歌云ML還支持模型部署和通過對托管模型的web服務的HTTP調用進行推斷。默認情況下,它將模型的大小限制為250 MB。
H2O通過利用Java mojo(優化的模型對象)的概念來支持模型的部署。mojo支持自動、深度學習、DRF、GBM、GLM、GLRM、K-Means、堆棧集成、支持向量機、Word2vec和XGBoost模型。它與Java類型環境高度集成。對于非java編程模型(如R或Python),可以將模型保存為序列化對象,并在推斷時加載。
TensorFlow服務用于將TensorFlow模型部署到生產環境中。在幾行代碼中,您就可以將tensorflow模型用作預測的API。
如果您的模型已經被訓練并導出為PMML格式,那么Openscoring可以幫助您將這些PMML模型作為推斷的REST api提供服務。
創建GraphPipe的目的是將ML模型部署與框架特定的模型實現(例如Tensorflow、Caffe2、ONNX)解耦。
責任編輯:haq
-
神經網絡
+關注
關注
42文章
4771瀏覽量
100720 -
計算機
+關注
關注
19文章
7489瀏覽量
87870 -
AI
+關注
關注
87文章
30762瀏覽量
268905 -
機器學習
+關注
關注
66文章
8408瀏覽量
132572
原文標題:前沿技術 | 自動機器學習綜述
文章出處:【微信號:gh_f39db674fbfd,微信公眾號:尖刀視】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論