1. 程式人生 > >廣度、深度、易用性,詳解6大機器學習雲

廣度、深度、易用性,詳解6大機器學習雲

我們所謂的“機器學習”可能表現為多種形式。最純粹的機器學習技術為分析師提供了一系列資料探索工具,豐富的機器學習模型,健壯的解決方案演算法,以及通過解決方案進行預測的方法。AmazonMicrosoftDatabricks、Google以及IBM雲平臺都提供了預測API,分析師可將其用於不同領域。HPE Haven OnDemand針對二分類(Binary classification)問題提供了有限的預測API。

然而並非所有機器學習問題都只能從零開始著手解決。一些問題可通過對足夠廣泛的樣本進行訓練以實現廣泛的應用,例如語音到文字、文字到語音、文字分析,以及面部識別,這些問題都可以通過“成品”解決方案完成。當然,很多機器學習雲供應商會通過API提供這些能力,幫助開發者將這些功能融入自己的應用程式中。

這些服務可以識別並記錄口述的美國英語(以及其他幾種語言)。但不同服務對同一個人口語識別能力的高低取決於講話者的語調和口音,以及解決方案訓練時使用的語調和口音樣本。Microsoft Azure、IBM、Google和Haven OnDemand都提供了現成的語音到文字轉換服務。

機器學習方面的問題有很多種。例如,嘗試通過其他觀測結果預測連續變數(例如銷量)可能會遇到迴歸問題(Regression problem),嘗試預測特定的一系列觀測結果可以歸於哪種類別(例如垃圾郵件)可能會遇到分類問題(Classification problem)。Amazon、Microsoft、Databricks、Google、HPE,以及IBM提供瞭解決一系列機器學習問題所需的工具,不過這些工具的完善程度各有不同。

本文將簡要介紹這六大商用機器學習解決方案。Google已於三月公佈了自己的雲端機器學習工具和應用程式,但Google Cloud Machine Learning目前還沒有正式上市。

AI簡史

人工智慧(AI)有著曲折的歷史。早期研究主要專注於玩遊戲(跳棋和國際象棋)和證明各種定理,隨後這個領域開始專注於自然語言處理、反向推理(Backward chaining)、正向推理(Forward chaining)以及神經網路。在二十世紀七十年代“AI的冬天”結束後,八十年代逐漸出現了大量商用的專業AI系統,不過當時從事這一領域的公司並沒有堅持太久。

二十世紀九十年代,第一次海灣戰爭期間部署的排程程式DART讓美國國防部高階研究計劃局(DARPA)30年來在AI方面的投入一次回本,同一時期IBM超級計算機深藍(Deep Blue)戰勝了國際象棋大師Garry Kasparov。二十一世紀初,自主型機器人已經廣泛應用於遠端勘探(Nomad、Spirit以及Opportunity)和家居清潔(Roomba)。2010年前後,我們開始使用基於視覺的遊戲系統(Microsoft Kinect)和無人駕駛汽車(Google),IBM Watson戰勝了電視猜謎節目"Jeopardy"過去兩屆冠軍,最近機器(Google AlphaGo)還戰勝了九段圍棋冠軍。

自然語言處理技術繼續完善,我們已經可以通過手機與Apple Siri、Google Now,以及Microsoft Cortana直接對話(或打字)交流。最終,通過歷史資料對計算學習理論和模式識別與優化演算法持續不斷的完善,終於在機器學習技術中被髮揚光大。

Amazon Machine Learning

Amazon希望讓機器學習成為一種任何人都可以輕鬆使用的技術。該公司特意與瞭解業務問題解決方式的分析師合作,而這些分析師可能並不瞭解資料科學和機器學習演算法。

一般來說,為了使用Amazon Machine Learning,首先需要清理資料並將其以CSV格式上傳至S3;隨後建立、訓練,並評估ML模型;最後建立批處理或實時預測。整個過程以及其中的每個步驟都是互動式的。儘管Amazon有多種演算法可供選擇,但機器學習並不是那種簡單、靜態的神丹妙藥。

Amazon Machine Learning支援三種類型的模型:二分類(Binary classification)、多級分類(Multiclass classification)以及迴歸(Regression),每種型別需要一種演算法。為了進行優化,Amazon Machine Learning使用了隨機坡降法(Stochastic Gradient Descent,SGD),這種方法可以讓多個序列傳遞至訓練資料,併為每個小批量樣本更新要素權重(Feature weight),藉此試圖將損失函式(Loss function)降至最低。損失函式代表著實際值和預測值之間的差異。這種坡降法最適合用於只存在連續可微分損失函式的情況,例如邏輯和平方損失函式。

在二分類方面,Amazon Machine Learning使用了邏輯迴歸(邏輯損失函式外加SGD)。

在多級分類方面,Amazon Machine Learning使用了多項式邏輯迴歸(多項式邏輯損失外加SGD)。

在迴歸方面,Amazon Machine Learning使用了線性迴歸(平方損失函式外加SGD)。

(點選放大影象)

通過在Amazon Machine Learning中訓練並評估二分類模型後,可選擇自己的評分閾值以實現自己需要的錯誤率。上圖中將閾值的值從預設值增加至0.5,這樣便可以為營銷和銷售領域生成更強壯的線索。

Amazon Machine Learning通過目標資料的型別確定要解決的機器學習任務型別。例如,使用數值目標變數預測問題意味著迴歸;使用非數值目標變數預測問題,如果只有兩種目標狀態則意味著二分類,如果有超過兩種目標狀態則意味著多級分類。

Amazon Machine Learning中所用功能的選擇儲存在“配方”中。針對資料來源完成描述性統計(Descriptive statistics)的計算後,Amazon會建立一個預設配方,使用者可以直接使用,或使用自己機器學習模型中的資料將其替代。

準備好滿足評估需求的模型後,即可藉此設定實時Web服務或生成批處理預測(Batch of prediction)。然而要注意,與基本物理常數不同,人們的行為會隨時間產生變化。因此需要定期檢查模型產生的預測精確度指標,並按需再次進行訓練。

Azure Machine Learning

與Amazon不同,Microsoft希望為有經驗的資料科學家提供一整套種類各異的演算法和工具。因此Azure Machine Learning已被包含在更大規模的Microsoft Cortana Analytics Suite套件中。Azure Machine Learning也為模型的訓練和評估用資料流提供了拖拽式介面。

Azure Machine Learning Studio包含了匯入資料集,訓練和釋出實驗性模型,在Jupyter Notebook中處理資料,以及儲存訓練後模型等功能。Machine Learning Studio自帶數十種資料集樣本,五種資料格式轉換器,讀寫資料的多種方法,數十種資料轉換,以及三種特徵選擇選項。通過Azure Machine Learning,您可以使用多種可用於異常檢測、分類、聚類,以及迴歸的模型;四種可用於計分模型的方法;三種用於評估模型的策略;以及六種用於培訓模型的過程。您還可以使用多種OpenCV(開源計算機視覺)模組、統計函式,以及文字分析功能。

其中包含的內容非常多,只要您瞭解業務、資料和模型,理論上已經足夠用任何型別的模型處理任何種類的資料。如果打包式的Azure Machine Learning Studio模組無法滿足需求,還可以使用Python或R模組自行進行開發。

您可以使用Jupyter Notebook開發和測試Python 2與Python 3語言模組,使用Azure Machine Learning Python客戶端庫對其進行擴充套件(以便處理Azure中儲存的現有資料),此外還支援 Scikit-learn、Matplotlib,以及NumPy。Azure Jupyter Notebook最終也將支援R。目前可以在本地使用RStudio,隨後若有必要可改為使用Azure作為輸入和輸出位置,或者也可以在Microsoft Data Science虛擬機器中安裝RStudio。

通過Azure Machine Learning Studio新建實驗時,可以完全從零開始,或選擇使用Microsoft提供的大約70個樣本,其中涵蓋了大部分常用模型。此外Cortana Gallery中還提供了社群建立的更多內容。

(點選放大影象)

Azure Machine Learning Studio可以快速生成用於釋出已訓練模型所需的Web服務。在Azure Machine Learning中,只需要簡單的五步互動式操作即可建立一個簡單的模型。

Cortana Analytics Process(CAP)首先需要完成一些規劃和設定操作,除非您是一位訓練有素的資料科學家,已經熟悉業務問題、資料和Azure Machine Learning,並且已經為專案建立了必要的CAP環境,否則這一步是非常關鍵的。可行的CAP環境需要包含一個Azure儲存帳戶,一個Microsoft Data Science虛擬機器,一個HDInsight(Hadoop)群集,以及一個通過Azure Machine Learning Studio建立的機器學習工作空間。如果對繁多的選擇感到困惑,Microsoft提供了用於介紹選擇每種技術具體原因的文件。CAP依然包含五個處理步驟:資料攝入、探索性資料分析和預處理、功能建立、模型建立,以及模型的部署和使用。

Microsoft最近通過預覽版Azure釋出了一系列源自牛津計劃的認知服務,這些服務已經預先針對語音、文字分析、面部識別、表情檢測,以及類似的其他功能進行過訓練,通過對您自己的模型進行訓練,這些服務可以起到有益的補充作用。

Databricks

Databricks是一種基於Apache Spark的商用雲服務,這種開源群集計算框架包含了一個機器學習庫,一個群集管理器,一個類似Jupyter的互動式“筆記本”,儀表板,以及作業排程功能。Databricks(公司)是由Spark的創造者建立的,通過Databricks(服務),幾乎可以不費吹灰之力組建並擴充套件Spark群集。

該服務提供的MLlib庫以及一系列不同型別的機器學習和統計演算法,均針對基於記憶體的分散式Spark架構進行過優化。MLlib的實施除此之外還提供了概要統計、相關性分析、取樣、假設驗證測試、分配和迴歸、協同過濾、聚類分析、維度縮減、特徵提取和變換函式,以及優化演算法。換句話說,對於有經驗的資料科學家來說,這是一套非常完備的一體式解決方案。

(點選放大影象)

這個正在執行的Databricks筆記本使用Python開發而來,演示了對眾所周知的公共自行車租用資料集進行分析的一種方法。在筆記本的這個部分中,正在通過交叉驗證的方式執行多個Gradient-Boosted Tree迴歸,藉此對管線進行訓練。

Databricks在設計上是一種可擴充套件,相對較為易用的資料科學平臺,適合瞭解統計學,並且至少可以完成少量程式設計工作的人。為了更好地使用該技術,您需要對SQL,或Scala、R、Python三種技術中的一種有所瞭解。如果對打算使用的程式語言非常熟悉,將能獲得更好的使用效果,這樣便可以將精力專注於學習Spark技術本身,通過Databricks筆記本樣本執行免費的Databricks社群版群集掌握這個技術。

Google Cloud Machine Learning

Google最近公佈了一系列與機器學習有關的產品。其中最有趣的可能是依然處於有限預覽階段的Cloud Machine Learning和Cloud Speech API。Google Translate API可以針對超過80種語言及其變體進行語言識別和翻譯,Cloud Vision API可識別圖片中不同型別的特徵,目前這兩項服務也已可用,從Google的演示來看效果還不錯。

Google Prediction API可以訓練、評估,並預測迴歸和分類問題,但目前無法選擇所用的演算法。該服務的歷史可追溯至2013年。

Google目前的機器學習技術Cloud Machine Learning Platform使用Google的開源TensorFlow庫進行訓練和評估。由Google Brain團隊開發的TensorFlow是一種通用庫,可使用資料流圖譜(Data flow graphs)進行數值計算。這個庫能夠與Google Cloud Dataflow、Google BigQuery、Google Cloud Dataproc、Google Cloud Storage,以及Google Cloud Datalab實現整合。

通過檢視GitHub上的TensorFlow程式碼庫以及訪問TensorFlow.org網站並閱讀TensorFlow白皮書可以知道,這個庫使用了一些C、C++,以及Python程式碼。使用者可以藉助TensorFlow將計算功能部署至桌上型電腦、伺服器,甚至移動裝置中方的一個或多個CPU或GPU上,並且包含各種內建的訓練和神經網路演算法。從極客的角度來說,如果滿分是10分,可以給這個技術打出9分的成績。不僅因為該技術的應用範圍已經遠遠超過業務分析領域,甚至可以被很多資料科學家進行更廣泛的運用。

Google Translate API、Cloud Vision API,以及新發布的Google Cloud Speech API都是預先訓練過的ML模型。根據Google的介紹,Cloud Speech API與Google應用中的語音搜尋功能,以及Google Keyboard中的語音輸入功能使用了相同的神經網路技術。

HPE Haven OnDemand

Haven OnDemand是HPE在雲機器學習領域的試水之作。Haven OnDemand的企業搜尋和格式轉換是其中最強大的服務,考慮到這些服務都基於HPE的私有搜尋引擎IDOL,這一點也就不足為奇了。只不過Haven OnDemand更有趣的功能目前還沒完工。

Haven OnDemand目前提供了用於音訊-視訊分析、聯結器、格式轉換、圖形分析、HP Labs沙箱(實驗性API)、影象分析、策略、預測、概要查詢和操控、搜尋、文字分析,以及非結構化文字索引等API。我曾隨便挑選了幾個API來體驗這些API是如何呼叫和使用的。

Haven的語音識別目前只支援6種語言以及相應的變體。使用高質量的美國英語測試檔案進行測試的識別準確率尚可,但並不完美。

Haven OnDemand Connectors可用於從外部系統獲取資訊,並通過Haven OnDemand API更新外部資訊,這些技術已經相當成熟,但主要是因為這些實際上就是IDOL聯結器。文字提取API可以使用HPE KeyView從您提供的檔案中提取元資料和文字內容,該API利用了業已成熟的KeyView,可處理超過500種不同檔案格式。

圖形分析等一系列預覽服務目前只能用於針對英文維基百科進行過訓練的索引內容,目前無法使用自己的資料對其進行訓練。

影象分析方面,我測試過條碼識別,該功能可以正常使用,而面孔識別方面,HPE樣本資料的識別效果好於我自己的測試圖片效果。影象識別功能目前僅限識別有限的企業徽標,實用性不怎麼強。

(點選放大影象)

Haven OnDemand條碼識別API可以區分出圖片中的條碼(上圖紅框)並將其轉換為數字,就算條碼位於曲面上,以大約20度俯角拍攝,或者圖片較為模糊,也能順利識別。該API並不會執行查詢條碼對應的數字或識別對應的產品等額外的工作。

最後我很失望地發現,HPE的預測分析只能處理二分類問題,不支援多級分類和迴歸,當然還無法對學習過程進行引導。這一點嚴重限制了改技術的適用性。

從好的方面來看,Train Prediction API可以自動驗證、探索、分離、籌備CSV或JSON資料,並使用多種引數訓練決策樹、邏輯迴歸、樸素貝葉斯,以及支援向量機(Support vector machine,SVM)二分類模型。隨後可以通過資料的評價分離(Evaluation split)對分類程式進行測試,並將最佳模型以服務的方式釋出出來。

Haven OnDemand Search可使用IDOL引擎針對公共和私有文字索引執行高階搜尋。文字分析API的支援範圍涵蓋從簡單的自動補全和術語擴充套件到語言識別、概念提取,以及情緒分析等方方面面。

IBM Watson和Predictive Analytics

IBM提供的機器學習服務基於曾在電視猜謎節目Jeopardy中獲得冠軍的Watson技術以及IBM SPSS Modeler。該公司目前已經針對開發者、資料科學家,以及業務使用者等不同使用者群提供了一系列雲機器學習服務。

SPSS Modeler是一款Windows應用程式,最近剛剛作為一種雲服務釋出。Modeler Personal Edition包含資料訪問和匯出,自動資料製備、清洗(Wrangling)和ETL,超過30種機器學習演算法和自動建模,R擴充套件能力,以及Python指令碼功能。更昂貴的版本可以通過IBM SPSS Analytic Server for Hadoop/Spark訪問大資料,並獲得冠軍/挑戰者功能、A/B測試、文字和實體分析,以及社交網路分析功能。

SPSS Modeler中的機器學習演算法與Azure Machine Learning和Databricks的Spark.ml所用演算法不相上下,特徵選擇方法和可支援的格式選擇方面也在伯仲之間。儘管自動建模(訓練、測試一批模型並擇優選擇)功能也有一定可比性,不過在SPSS Modeler中使用這些功能的方法比其他產品更為直觀。

IBM Bluemix託管的Predictive Analytics Web服務可以通過應用SPSS模型暴露評分API,並供使用者在自己的應用中呼叫。除了Web服務,Predictive Analytics還可以支援通過批處理作業使用其他資料對模型進行再次訓練和再次評估。

除Predictive Analytics之外,Watson目前提供了18種Bluemix服務。AlchemyAPI提供了一套三種服務(AlchemyLanguage、AlchemyVision,以及AlchemyData),可以幫助企業和開發者圍繞文字和影象領域的內容和上下文構建認知應用程式。

Concept Expansion可分析文字並學習同義詞,或根據上下文進行解析。Concept Insights可根據維基百科的話題將使用者提供的文件連結至預先建立的概念圖譜。

Dialog Service可用於設計應用程式通過對話介面,通過自然語言和使用者概要資訊與使用者進行互動的方式。Document Conversion服務可以將單個HTML、PDF,或Microsoft Word文件轉換為統一規格的HTML、純文字,或一系列JSON格式的應答單位(Answer unit),並結合其他Watson服務使用。

(點選放大影象)

使用Watson分析上文提到過的自行車租用資料集。Watson提供了一個決策樹模型,可實現48%的預測強度。這個工作表並不區分工作日和非工作日的租用情況。

Language Translation可支援多個知識領域和語言對。在新聞和對話領域中,可支援英語和巴西葡萄牙語、法語、現代標準阿拉伯語,以及西班牙語之間的互譯。在專利領域,可支援英語和巴西葡萄牙語、中文、韓文,以及西班牙語之間的互譯。這個翻譯服務還可以識別使用62種語言書寫的純文字。

通過使用自己提供的類和短語進行訓練後,Natural Language Classifier服務可通過認知計算技術為語句、問題,或短語返回最匹配的類。Personality Insights可從事務型和社交媒體資料(包含一個人所撰寫的至少1000個詞)中獲得洞察力,藉此瞭解此人的心理特質,該服務可返回JSON格式的特徵樹。Relationship Extraction可將語句解析為組成部分,並通過上下文分析檢測出不同部分(的話語內容和作用)之間的關係。

此外還可通過其他Bluemix服務改善搜尋結果的相關性,對6種語言進行文字和語音之間的雙向轉換,識別文字中蘊含的情緒,以及分析視覺化的場景和物件。

Watson Analytics使用了IBM自有的自然語言處理技術對機器學習進行簡化,使其可以被業務分析師和其他非資料科學家的業務角色所順利使用。

機器學習曲線

具體需要評估哪些機器學習技術,這取決於您本人與團隊成員所具備的技能。對於資料科學家以及包含資料科學家的團隊來說,可選的範圍相當廣泛。善於程式設計的資料科學家甚至可以獲得更多選擇:Google、Azure以及Databricks對於程式設計的需求比Amazon和SPSS Modeler更高,但同時也更靈活。

Bluemix上執行的Watson Services為開發者的雲應用程式提供了更多預訓練的能力,Azure的多個服務,三個Google cloud API,以及Haven OnDemand的一些API還提供了相關文件。

新發布的Google TensorFlow庫適合精通Python、C++或C的高階機器學習程式設計師。Google Cloud Machine Learning Platform似乎更適合瞭解Python和雲資料管線的高階資料科學家。

雖然Amazon Machine Learning和Watson Analytics宣稱目標物件主要是業務分析師或“任何業務角色”(不管這個稱呼是什麼意思),我依然懷疑這樣的說法在很大程度上是真實的。如果需要開發機器學習應用程式,但是隻有很少或全無統計學、數學,或者程式設計方面的知識背景,那麼我只能認為您已經準備好召集了解這些知識的人組建團隊了。

InfoWorld 評分 模型的多樣化(25%) 開發難易度(25%) 整合能力(15%) 效能(15%) 相關服務(10%) 價值(10%) 總分(100%)

Amazon Machine Learning

8

9

9

9

8

9

8.7

Azure Machine Learning

9

8

9

9

8

9

8.7

Databricks with Spark 1.6

10

9

9

9

8

9

9.2

HPE Haven OnDemand

7

8

8

8

7

8

7.5

IBM Watson和Predictive Analytics

10

9

9

9

9

8

9.2

總結

Amazon Machine Learning / Amazon

資料分析和建模費用:每小時42分;批處理預測:每1000次預測10分,向上舍入到下個1000次;實時預測:每次預測0.01分,向上舍入到最接近的“便士數”,外加使用的每10MB記憶體每小時0.1分

優勢

劣勢

Amazon Machine Learning服務可代替使用者完成模型的選擇 探索式資料分析超出機器學習服務範圍
為模型提供了實時和批處理預測 機器學習服務不允許分析師對演算法進行修改
服務可隨時隨地按需為模型提供相應的圖表和診斷 無法匯入或匯出模型
可處理來自S3、RDS MySQL以及Redshift的訓練資料 -
服務可自動完成某些文字處理任務 -
API可通過Linux、Windows或Mac OS X使用 -

Azure Machine Learning / Microsoft

免費的ML Studio開發工具,但存在一些侷限,缺乏生產用Web API;標準層ML成本為每月每席位9.99美元,每小時實驗時間1美元,生產用API計算每小時2美元,每1000筆生產用API事務0.50美元,儲存費用另計。Data Science虛擬機器價格範圍介於每小時0.02美元到9美元之間,具體取決於所用記憶體數、CPU、儲存、網路,以及SQL Server的版本

優勢

劣勢

豐富的模型,並可通過R或Python編寫其他模型 挑選適宜的功能以及確定最佳模型需要具備資料科學家的經驗
可使用拖拽式介面輕鬆設計並訓練模型 探索式資料分析需要一定的Python或R程式設計經驗
可對Azure雲中的實時資料進行探索式資料分析 將R的結果傳遞至工作流的過程很繁瑣
可免費上手使用 -
可通過任何網頁瀏覽器訪問 -

Databricks with Spark 1.6 / Databricks

Spark和Hadoop是免費的。Databricks社群版也是免費的。Databricks根據可用容量,支援的模型以及可提供的功能對服務劃分了不同計劃。Databricks Starter(3使用者)成本為每月99美元,外加每節點每小時40分

優勢

劣勢

不費吹灰之力便可組建並擴充套件Spark群集 不像BI產品那麼易用,不過可與多種BI產品整合
為資料科學家提供了種類豐富的ML方法 假定使用者已經熟悉程式設計、統計,以及ML方法
使用R、Python或Scala和SQL提供了協作式筆記本介面 -
免費上手,使用價格低廉 -
可為生產環境輕鬆安排作業排程 -

Haven OnDemand / Hewlett Packard Enterprise

Free版:1個資源單位(RU),每月10K個API單位;Explorer版:1個RU,20K個API單位,每月10美元;Innovator版:10個RU,50K個API單位,每月85美元;Entrepreneur版:35個RU,120K個API單位,每月315美元

優勢

劣勢

強大的文件格式轉換功能 一些服務尚未完工
強大的企業搜尋功能 一些服務由於存在侷限而導致實用性受限
價格合理 -

IBM Watson和Predictive Analytics / IBM

Bluemix Predictive Analytics:Free計劃(2個模型);付費的服務例項(每例項20個模型)每月10美元,外加每1000次實時預測0.50美元,每1000次批處理預測0.50美元,以及分析和建模所用計算時間每小時0.45美元。Windows版IBM SPSS Modeler:每使用者每年4350-11300美元。Watson Analytics:免費(500MB儲存);付費版每月每使用者30美元(2GB儲存)起

優勢

劣勢

SPSS Modeler通過即點即用式應用程式提供了豐富的模型 SPSS Modeler按目前標準來說很貴
Bluemix Predictive Analytics Web服務價格合理功能完善 Bluemix Predictive Analytics Web服務需要具備SPSS模型
Watson Bluemix服務以合理價格為開發者提供了良好的功能 IBM Watson Analytics的易用性依然有待改善
IBM Watson Analytics可使用自然語言建模,適合相對沒有接受過太多培訓的人 -

作者:Martin Heller。