想快速部署機器學習項目?來看看幾大主流機器學習服務平台對比吧

..

雷鋒網 AI 研習社按,日前,kdnuggets 上的一篇文章對比了三大公司(谷歌、微軟和亞馬遜)提供的機器學習服務平台,對於想要啟動機器學習項目的公司或是數據科學新手來說,提供了非常多的指導和建議。雷鋒網 AI 研習社將原文編譯整理如下:

對於大多數企業來說,機器學習就像航空航天一樣遙遠,聽起來既昂貴,還需要高科技人才。從某種角度來說,如果你想建立一個像 Netflix 一樣好的推薦系統,那確實是昂貴且困難。但是,目前這個複雜的領域有一個趨勢:一切皆服務(everything-as-a-service)——無需太多投資,即可快速啟動機器學習計劃。如果你是數據科學的新手,想要抓住當下的機會,這將是一種正確的選擇。

機器學習里最令人鼓舞的故事之一就是,一個日本農民,為了減輕他父母的工作負擔,決定設計一個自動分揀黃瓜的系統。不像其他的大型公司,這個人並沒有機器學習的專業知識,也沒有很多預算,但是他努力學會了 TensorFlow,並使用深度學習來識別不同種類的黃瓜。

通過使用機器學習雲服務,你可以開始構建第一個工作的模型,只要一小個團隊,就可以從機器學習的預測中獲得有價值的信息。許多人已經討論過不同的機器學習的策略。現在讓我們來看看市場上最好的機器學習平台都有哪些服務。

什麼是機器學習服務

機器學習服務(Machine learning as a service, MLaaS)包含機器學習大多數基礎問題(比如數據預處理,模型訓練,模型評估,以及預測)的全自動或者半自動雲平台的總體定義。預測結果可以通過 REST API 與內部的 IT 基礎架構橋接。

Amazon 機器學習服務,Azure 機器學習和 Google Cloud AI 是最領先的三個雲 MLaaS 服務,允許在很少甚至沒有數據科學專業知識的情況下進行快速模型訓練和部署。如果你還沒有數據科學團隊,可以參看我們的另一篇文章,看看團隊都需要擁有哪些技能的人才。

在本文中,我們將首先概述 Amazon,Google 和 Microsoft 的主要機器學習服務平台,並比較這些供應商所支持的機器學習 API。這並不是如何使用這些平台的說明,而是在開始閱讀平台的文檔之前所需要做的功能調研。

針對定製化的預測分析任務的機器學習服務

使用 Amazon ML 進行預測分析

亞馬遜的機器學習服務有兩個層面:用於預測分析的 Amazon ML 和針對數據科學家設計的 SageMaker。

Amazon Machine Learning 是市場上最自動化的解決方案之一,最適合對處理效率敏感的操作。該服務可以加載來自多個來源的數據,包括 Amazon RDS,Amazon Redshift,CSV 文件等。所有數據的預處理操作都是自動執行的:包括確認哪些字段是分類標籤,哪些是數字,而且不需要用戶選擇進一步的數據預處理方法(降維還是白化)。

Amazon ML 的預測能力限於三種:二分類,多分類,以及回歸任務。也就是說,Amazon ML 服務不支持無監督的學習方法,用戶必須在訓練集中選擇標記好的目標變量。而且,用戶不需要知道任何機器學習方法,Amazon 會在分析提供的數據之後自動選擇機器學習方法。

這種高自動化的水平既是 Amazon ML 的優勢,也是劣勢。如果您需要一個完全自動化,但是功能有限的解決方案,那麼這個服務非常適合你。但是如果不是這樣的話,你可以選擇 SageMaker。

Amazon SageMaker 以及基於框架的服務

SageMaker 是一個機器學習環境,通過提供快速建模和部署工具來簡化數據科學家的工作。例如,它提供 Jupyter 來簡化數據瀏覽和分析。Amazon 也提供了內置的算法,針對分佈式系統中的大型數據集和計算進行了優化。這些算法包括:

  • 線性學習器,一種用於分類和回歸的監督方法。

  • 用於稀疏數據集的分類和回歸的分解機(Factorization Machine)。

  • XGBoost 是一個有監督的提升樹算法,通過結合簡單算法的預測來提高分類,回歸以及排序的預測精度。

  • 基於 ResNet 的圖像分類,也可以應用於遷移學習。

  • Seq2seq 是用於預測序列的監督算法,可用於翻譯句子,將句子總結為更短的詞彙等。

  • K-means 是一種用於聚類任務的無監督學習方法。

  • 主成分分析(PCA),可以用於數據降維。

  • 隱含狄利克雷分佈(Latent Dirichlet allocation)是用於文檔歸類的無監督方法。

  • 神經主題模型(Neural topic model, NTM)是一種無監督方法,它可以遍歷文檔,找出高頻詞彙,並根據內容定義文檔的主題(用戶不能預先定義主題的名稱,但是可以設置話題的數量)。

SageMaker 中內置的方法與 Amazon 推薦的 ML API 在很大程度上有交集,但在這裡它允許數據科學家定製使用,並使用自己的數據集。

如果你不想使用這些功能,你也可以添加自己的方法,並通過 SageMaker 利用它的部署功能運行模型。或者也可以將 SageMaker 與 TensorFlow 或 MXNet 等深度學習庫集成在一起。

一般來說,亞馬遜的機器學習服務為經驗豐富的數據科學家和只需要完成工作而不需深入準備數據集和建模的人都提供了足夠的自由。對於那些已經使用亞馬遜環境並且不打算轉移到其他雲供應商的公司來說,這是一個可靠的選擇。

Microsoft Azure 機器學習工作室(Machine Learning Studio)

Azure Machine Learning 意在為新手和經驗豐富的數據科學家建立一個強大的工作空間。微軟的機器學習產品功能與亞馬遜的類似,但就目前而言,Azure 的現成算法更加靈活。

Azure 提供的服務可以分為兩大類:Azure Machine Learning Studio 和 Bot 服務。讓我們首先了解一下 Azure ML Studio,在之後介紹特定 API 和工具的部分時,回到 Bot 服務。

ML Studio 是微軟 MLaaS 的主要部分,幾乎所有的 Azure ML Studio 中的操作都必須手動完成:包括瀏覽數據,預處理,選擇方法,以及驗證模型結果。

使用 Azure 進行機器學習的學習曲線可能比較陡,但是這也能使得用戶對該領域的主要技術有更深入的了解。另一方面,Azure ML 支持圖形界面,可以可視化工作流程中的每一個步驟。使用 Azure 的主要好處是可以使用各種算法。ML Studio 支持大約 100 種解決分類(包括二分類和多分類),異常檢測,回歸,推薦和文本分析方法。值得一提的是,該平台也支持一種聚類算法(K-means)。

Azure ML 的另一大部分是 Cortana Intelligence Gallery。它是由社區提供的機器學習解決方案的集合,供數據科學家開發和利用。Azure 對於從事機器學習的人來說是一個強大的工具。

Google 預測 API

Google 在兩個層面上提供 AI 服務:針對高級數據科學家的機器學習引擎,和高度自動化的 Google 預測 API。不過,谷歌將在2018 年 4 月 30 日停用預測 API 服務。

即將停用的預測 API 類似於 Amazon ML,只有兩個很精簡的方法,主要用於解決兩個問題:分類(二類和多類)和回歸。訓練好的模型可以通過 REST API 接口進行部署。

Google 並沒有公開預測中使用了哪些算法,也不能讓工程師自定義模型。Google 的環境最適合在緊迫的期限內進行機器學習,並推出初始版本的 ML 模型。然而這個產品並沒有像谷歌所期望的那麼受歡迎。

那麼接替 Google 預測 API 的是什麼呢?

Google 雲端機器學習引擎

預測 API 的高度自動化是以犧牲靈活性為代價的。Google ML Engine 正好相反。它適用於經驗豐富的數據科學家,非常的靈活,建議大家使用 TensorFlow 的雲基礎設施作為機器學習的驅動。Google ML Engine 大體上與 SageMaker 相似。

TensorFlow 是 Google 的另一個產品,它是一個開源機器學習庫,包含各種數據科學工具,它並不是 ML-as-a-service。它沒有可視化界面,TensorFlow 的學習曲線非常陡峭。但是,這個庫也面向想要轉向數據科學的軟件工程師。TensorFlow 非常強大,主要針對深度神經網絡的任務。

基本上,TensorFlow 和 Google 雲服務結合,構成了三層服務模型,包括了基礎架構服務和平台服務解決方案。

用一句話來總結機器學習服務平台:Azure 是目前 MLaaS 市場上擁有功能最多的工具集,它涵蓋了大多數與 ML 相關的任務,為構建自定義模型提供了一個可視化的界面,並且為那些不想深入了解數據科學的人提供了一套可靠的 API。但是相較於亞馬遜,它仍然缺乏自動化的能力。

Amazon,Microsoft,Google 機器學習 API 的比較

除了成熟的平台之外,還可以使用高級的 API。這些都是使用訓練好的模型的服務,只需要將數據輸入,就可以得到結果。API 不需要機器學習的專業知識。目前,這三家廠商的 API 大致可以分為三類:

  1.  文本識別,翻譯和文本分析

  2.  圖像+視頻識別和相關分析

  3.  其他,包括某些未分類服務

語音和文本處理 API:Amazon

Amazon 提供了多個針對文本分析中常見任務的 API。這些 API 是高度自動化的,只需適當的整合就可以工作。

Amazon Lex

Lex API 是為了能將聊天機械人嵌入到應用中而設計的,它包含了自動語音識別(ASR)和自然語言處理(NLP)的能力。這些都基於深度學習模型。API 可以識別書面文本和語音,Lex 接口允許將識別出的結果連接到各種後端解決方案。很顯然,亞馬遜鼓勵使用自家的 Lambda 雲環境。所以在訂閱 Lex 服務之前,最好熟悉一下 Lambda 雲環境。除了獨立的應用程序之外,Lex 目前也支持在 Facebook Messenger,slack 和 Twilio 部署聊天機械人。

Amazon Transcribe

Lex 是一個複雜的以聊天機械人為導向的工具,而 Transcribe 僅應用於語音識別。該工具可以識別多個說話人,同時也能很好的識別低質量的音頻,比如電話音頻。這些功能使得這個 API 成為音頻歸檔分類的一個很好的解決方案, 也可以進一步為電話呼叫中心的數據文本分析提供支持。

Amazon Polly

Polly 服務與 Lex 相反,它是將文本轉換為語音, 這能夠使聊天機械人通過語音的方式回復,這個 API 並不會生成文本,只是讓文本的發音更接近與人類。如果你曾經使用過 Alexa,你就會知道這種聲音是什麼樣的。目前,它支持 25 種語言的男性和女性的聲音,主要是英語和西歐語言。一些語言有多種男性和女性的聲音,所以甚至可以有多種選擇。與 Lex 一樣,建議將 Polly 與 Lambda 一起使用。

Amazon Comprehend

Comprehend 是另一個 NLP API 集。與 Lex 和 Transcribe 不同,它針對不同的文本分析任務而設計。目前,Comprehend 支持:

  • 實體提取(識別名字,日期,組織等等)

  • 關鍵短語檢測

  • 語音識別

  • 情感分析(文本是積極,中立,還是消極)

  • 主題建模(通過分析關鍵字定義文本主題)

該服務可以幫助分析社交媒體的回復,評論,以及不適合手動分析的其他大型文本數據,比如 Comprehend 和 Transcribe 的組合將有助於分析客服的電話服務。

Amazon Translate

就像名稱所表達的一樣,Translate 服務是用來翻譯文本的。Amazon 聲稱,該服務使用的神經網絡,與基於規則的翻譯方法相比,能夠提供更高的翻譯質量。然而,目前版本只支持阿拉伯文、中文、法文、德文、葡萄牙文和西班牙文這六種語言與英文的互譯。

語音和文本處理 API:Microsoft Azure Congnitive Services

與亞馬遜一樣,微軟也提供高級API:Congnitive Services,可以與你的基礎平台集成到一起來完成任務,並不需要任何數據科學的專業知識。

Speech

Speech 集包含四個 API,針對自然語言識別和一些其他任務使用了不同類型的自然語言處理(NLP)技術:

  • 語音翻譯 API

  • Bing Speech API:文本和語音之間的互相轉換

  • 說話人識別:可用於語音驗證任務

  • 定製化的語音服務,可使用 Azure 的自然語言處理方法處理自己的數據和模型

Language

微軟的 Language API 與 Amazon Comprehend 類似,側重於文本分析:

  • Language Understanding Intelligent Service 是一個分析文本意圖,並將之轉換為命令的 API(例如「運行 YouTube」,或者「打開客廳燈」等)

  • 用於情感分析和定義主題的文本分析 API

  • Bing 拼寫檢查

  • 文本翻譯 API

  • Web 語言模型 API,用於估計單詞組合的概率,並實現單詞的自動智能補全

  • 語言分析 API,用於分句,標註詞類,並將文本分成標記的短語

語音和本文處理 API:Google 雲服務

雖然這套 API 與亞馬遜、微軟 Azure 的 API 相似,但也擁有一些獨特和有趣的東西。

Dialogflow

現今各種聊天機械人已經成為趨勢,Google 也提供了一些服務。Dialogflow 採用了 NLP 技術,旨在發現文本中表達的意圖,並解釋人想要什麼。可以使用 java,Node.js 和 Python 為 API 調整和定製功能。

雲端自然語言 API

這其中的核心功能幾乎與 Amazon comprehend 和微軟的 Languate 完全相同。

  • 在文本中識別實體

  • 識別情緒

  • 分析語法結構

  • 分類主題(比如食物, 新聞,電子等等)

雲端語音 API

這項服務用於識別自然語音,與其他公司類似的 API 相比,其主要優勢在於 Google 支持更豐富的語言。目前,它支持全球 110 多種語言。額外功能如下:

  • Word hints,允許定製識別到特定的上下文或者默寫單詞(例如,可以更好的理解當地的或者行業內的術語)

  • 過濾不當內容

  • 處理嘈雜的音頻

雲翻譯API

基本上,你可以使用該 API 將 Google 翻譯集成到產品中,包含 100 多種語言的自動檢測和翻譯。

除了文本和語音,Aamzon,Microsoft 和 Google 還提供了用於圖像和視頻分析的常用 API。

儘管圖像分析和視頻 API 密切相關,但是許多視頻分析工具仍處於開發或測試階段。例如,Google 對許多圖像處理任務提供了豐富的支持,但是缺乏一些微軟和亞馬遜已經支持的視頻分析功能。 

圖像和視頻處理API:Amazon Rekognition

Rekognition 並不沒有拼錯。Rekognition API 用於圖像以及最近的視頻識別任務。包括:

  • 目標檢測和分類(查找和檢測圖象中的不同目標,並定義他們的類別)

  • 在視頻中,可以檢測「跳舞」等活動或者「撲滅火」這種複雜的動作

  • 人臉識別(用於檢測人臉,並找到匹配的人臉)和臉部分析(這個分析非常有趣,可以檢測到笑臉,分析眼睛,甚至在視頻中識別出情感情緒)

  • 檢測不當視頻

  • 識別圖片和視頻中的名人

圖像和視頻處理 API:Microsoft Azure Congnitive Service

軟件包結合了六個 API,分別專註於不同類型的圖像,視頻和文本分析。

  • Computer Vision:用於識別目標、動作、圖像中主體顏色

  • Content Moderator:在圖像、文字和視頻中檢測不適當的內容

  • Face API:用來檢測人臉並分組,識別年齡、情緒、性別、姿勢、笑容和面部毛髮

  • Emotion API:用來識別面部表情的工具

  • Custom Vision Service:支持使用自己的數據構建自定義的圖像識別模型

  • Video indexer:是一種在視頻中查找任務的工具,可以定義語音情感並標記關鍵字

圖像和視頻處理 API:Google Cloud Services

Cloud Vision API

該工具為圖像識別任務而建立,對於查找特定的圖像屬性非常有用:

  • 標記對象

  • 檢測人臉並分析表情

  • 尋找標誌性事件並描述現場(例如假期、婚禮等)

  • 在圖像中查找文本並識別語言

  • 圖像中的主色調

Cloud Video Intelligence

Google 的視頻識別 API 在開發初期就缺乏 Amazon Rekognition 和 Microsoft Congnitive Services 提供的許多功能。目前,該 API 提供以下工具集:

  • 標記對象並識別動作

  • 識別明確的內容

  • 轉錄語音 

雖然在功能級別上,Google AI 服務可能缺乏一些功能,但是 Google API 可以使用 Google 提供的大量數據集。

特定的 API 和工具

這一部分,我們將討論微軟和谷歌的特定 API 產品和工具。這裡沒有亞馬遜,因為其 API 跟上面提到的文本分析和圖像視頻分析是一樣的。但是,一些其他公司提供的特定 API 的一些功能也集成於 Amazon 的產品中。

Azure  Service Bot 框架

微軟為了給用戶提供更靈活的開發工具集付出了很多努力。該服務包含通過不同編程語言構建、測試和部署 bot 的完整環境。

有趣的是,bot 服務並不一定需要機器學習方法。微軟為 bot 工具提供了五種模板(基礎模板、形式模板、語言理解模板、主動模板和問答模板),只有語言理解模板需要高級的人工智能技術。

目前,你可以使用 .NET 和 Node.js 技術,利用 Azure 構建機械人,並將其部署到平台和服務上:

  • Bing

  • Cortana

  • Skype

  • Web Chat

  • Office 365 email

  • GroupMe

  • Facebook Messenger

  • Slack

  • Kik

  • Telegram

  • Twilio

Bing 搜索引擎

微軟提供了連接 Bing 核心引擎的七個 API,包括自動推薦、新聞、圖像和視頻搜索。

Kownledge

該 API 將文本分析與各種任務相結合:

  • Knowledge Exploration Service 允許您輸入自然語言的查詢以從數據庫中檢索數據,可視化數據和自動完成查詢。

  • Entity Linking Intelligence API旨在突出表示適當實體的名稱,和短語(例如年齡),並確保消除歧義。

  • Academic Knowledge API可以完成單詞的自動補全,從單詞或者概念的角度,發現文檔之間的相似性, 並在文檔中搜索圖模式。

  • QnA Maker API可用於各種問題與答案的匹配,以構建客戶所關心的聊天機械人和應用程序。

  • Custom Decision Service是一種強化學習工具,可根據用戶的喜好對不同類型的內容(如鏈接, 廣告等) 進行個性化和排名。

Google Cloud Job Discovery

該 API 仍處於開發早期,但可能在不久的將來重新定義我們當前的職位搜索能力。與傳統的依賴精確的關鍵詞匹配的傳統求職引擎不同,Google 採用機器學習來找出高度不同的職位描述之間的相關聯繫,並避免模稜兩可。例如,盡量減少不相關或者太廣泛的搜索結果,例如在你搜索「sales assistant」時,並不會返回所有含有「assistant」單詞的職位結果。這個 API 的主要特點:

  • 修正工作搜索查詢中的拼寫錯誤

  • 匹配所需的資歷水平

  • 查找和區分可能具有不同表現形式和行業術語的相關工作(例如,查詢「server」(服務員)會返回「barista」(咖啡師)」,而不是「network specialist(網絡專家)」; 或者在查詢「biz dev「時,返回「engagement specialist」

  • 處理首字母縮略詞,例如查詢「HR」返回人力資源助理

  • 匹配不同的位置描述

IBM Watson 及其他

之前描述的所有三種平台都提供了相當詳盡的文檔,可以從頭開始啟動機器學習項目的實驗,並在企業基礎架構中部署了訓練好的模型。還有一些其他的 ML-as-a-service 解決方案來自初創公司,並受到 PredicSis 和 BigML 等數據科學家的推崇。

那麼 IBM Watson Analytics 怎麼樣?

IBM Watson Analytics 還不是一個用於商業預測的完整機器學習平台。目前,Watson 的優勢是可視化數據,以及描述不同數據之間的相互作用。它還有類似於 Google 提供的視覺識別服務和一些其他的認知服務(API)。Watson 目前的問題是,該系統只能執行很少的一些相對簡單的非專業的任務,涉及到定製機器學習方法或者預測任務時,IBM Watson 就無能為力了。

數據存儲

如果團隊中的數據科學家有足夠的知識來操作流行的存儲解決方案,那麼尋找合適的存儲方式來收集數據,並通過機器學習進一步處理數據現在已經不再是一個很大的挑戰。

在大多數情況下,機器學習需要將 SQL 和 NoSQL 兩種數據庫方案相結合,Hadoop 分佈式文件系統, Cassandra, Amazon S3 和 Redshift 等許多可靠的解決方案已經支持這種存儲方案。因此,當開始機器學習項目時,數據存儲並不是一個難以解決的障礙。如果你打算使用 ML-as-a-service 系統,最直接的方法就是,選擇一個能同時提供機器學習算法和存儲任務的供應商,這樣能夠減少很多花在配置數據庫上的時間。  

但是,有些平台也可以輕鬆與其他存儲供應商集成。例如,雖然 Azure ML 主要與微軟產品 Azure SQL, Azure Table,Azure Blob 集成,但是它也支持 Hadoop 和一些其他的數據源選項。這包括從桌面或者內部服務器直接上傳數據。如果你的機器學習工作流程很多樣化,並且數據來自多個來源,如何集成多個數據源可能是一個挑戰。

建模和計算

我們已經討論了主要提供計算能力的 ML-as-a-service 解決方案。但是如果模型學習的過程需要在公司內部執行,計算能力的挑戰遲早會出現。機器學習在大多數情況下需要很多計算能力。即使大數據時代已經來臨,數據採樣(收集數據集)仍然是一個重要的問題。

雖然使用一個筆記本電腦就可以完成模型的構建,但是要用大型數據集來訓練模型,複雜模型需要更強大的硬件。數據預處理也是如此,在常規的辦公機器上可能需要幾天的時間。在截止日期緊張的情況下,(有些模型需要每周或者每天更換,或者需要重新訓練),這根本是不可能的。有三種可行的方法來解決這個問題:

  • 加速硬件。如果執行相對簡單的任務,並且不使用大數據訓練模型,請使用固態硬盤(SSD)執行數據準備或分析等任務。可以使用一個或多個圖形處理單元(GPU)解決計算密集型操作。許多編程庫支持使用高級語言(例如 Python)控制 GPU 處理模型。

  • 考慮分佈式計算。分佈式計算意味着有多台機器分別處理任務。但是這種方法並不適用於所有的機器學習技術。

  • 使用雲計算實現可擴展化。如果你的模型需要處理高峰值客戶相關數據,使用雲計算可以快速實現可擴展化。對於需要內部處理數據的公司,私有雲的基礎架構是值得考慮的。

下一步

在如此多的選擇下,很容易迷失在各種可用的解決方案中。它們在算法上有所不同,所需的技能也不同,所以最終處理任務的結果也會不同。

對於這個年輕的市場,這種情況是非常常見的。即使是我們前面談到的三個領先解決方案,也不是完全處於相互競爭狀態。更重要的是,服務變化的速度常常出人意料。很可能當你堅持使用一個供應商的解決方案時,另一個供應商突然推出一些符合你業務需求的服務。

正確的做法是儘可能早的想清楚你打算用機器學習實現什麼。這其實並不容易。如果你缺乏數據科學或者專業領域指示,那麼在數據科學和商業價值之間的橋接就非常棘手。這通常是將一般化問題簡化為單一屬性的問題。無論是價格預測還是其他的數值,確定對象的類別還是將對象分組,一旦找到需要解決的屬性,決定供應商並選擇其所提供的服務就變得簡單起來了。

DCVC 創始合伙人 Bradford Cross 認為,ML-as-a-Services 不是一個可行的商業模型。根據他的說法,這個模式定位在了使用開源產品的數據科學家和想要購買全套服務的商業高管之間的空白處。然而,目前業界似乎正在克服該模式長期存在的問題,最終我們會看到更多公司轉向使用 ML-as-a-service 這種商業模式,以避免招聘工資高昂的數據科學家,並仍然能夠使用足夠多功能的數據工具。

Via kdnuggets

雷鋒網 AI 研習社編譯整理


想在手機閱讀更多Google資訊?下載【香港矽谷】Android應用
分享到Facebook
技術平台: Nasthon Systems