---
# System prepended metadata

title: 機器學習 三大家 AI 比較
tags: [CHT_practice]

---

## 一、 Google vs Amazon vs Microsoft AI 機器學習比較大全
### 機器學習即服務
**機器學習即服務（MLaaS)** 是自動化和半自動化雲平台的總括性定義，它涵蓋大多數基礎設施議題（如數據預處理、模型訓練和模型評估以及預測）。預測結果可以通過 REST APIs 與您的內部 IT 基礎架構連接。

### Amazon ML 預測分析
Amazon Machine Learning services 有兩個層面：Amazon ML 預測分析、為數據科學家而設的 SageMaker。

Amazon Machine Learning 預測分析是市場上其一個最具自動化的解決方案，適合用於交付時限非常緊迫的工作。該服務可以載入多種數據來源，包括 Amazon RDS、Amazon Redshift、CSV 等，並且所有數據預處理操作都是自動執行的。

Amazon ML 的預測能力只限於三種選擇：二元分類、多類分類、迴歸分析。 也就是說，Amazon ML 服務不支持任何無監督的學習方法，用戶必須選擇一個目標變量來標記訓練集。

### Amazon SageMaker 和 frameworks-based services
SageMaker 是一個機器學習環境，透過提供快速建模和部署工具來簡化數據科學家的工作。Amazon 也有內建演算法，針對分佈式系統中的大型數據集和計算進行最佳化。其中包括：
* Linear learner，是一種具監督性，用於分類和迴歸分析的方法
* 具有分類和迴歸分析的分解機器，用於稀疏數據集
* XGBoost是一個具有監督性的增強樹算法，通過結合簡單演算法來提高分類、迴歸分析和排序的預測準確性
* 基於ResNet的圖像分類，它也可以應用於轉移學習
* Seq2seq是用於預測序列的監督式算法（例如：翻譯句子或將字符串轉換成更短的詞彙等）
* K-means是一種用於聚類分析的無監督學習方法
* 用於降維的主成分分析(PCA)
* Latent Dirichlet分配是用於文件尋找分類的無監督式方法
* 神經主題模型（NTM）是一種無監督的方法，用於探索文件並展示排名靠前的詞語，並定義主題（用戶不能預先定義主題，但可以設置主題的預期數量）

## 二、 Google vs Amazon vs Microsoft AI 機器學習比較大全
### Google Prediction API
Google 在兩個部份提供 AI 服務：給資料科學家使用的機器學習引擎、高度自動化的 Google預測 API。

Predicion API 功能上有點像 Amazon ML，其簡化的演算法可以把問題縮小到只需解決兩個主要問題：分類（二元和多類）、回歸。訓練好的模型可以通過 REST API 接口來進行部署。

### Google Cloud Machine Learning Engine
Google ML Engine 結合了資料科學家建議，靈活使用了 TensorFlow 的雲端基礎架構作為機器學習的驅動程序，所以 ML Engine 原則上和 SageMaker 非常相似。

TensorFlow 是另一個 Google 產品，它是一個開源的機器學習庫，包含各種資料科學工具，而不是 ML-as-a-service。它並沒有視覺化界面，而且 TensorFlow 的學習曲線會非常陡峭，這個 library 也針對那些計劃轉到資料科學領域的軟體工程師。TensorFlow 的功能非常強大，主要針對深度神經網絡的訓練。

基本上，TensorFlow和Google雲端服務的結合，意味著實現了三層雲端服務模式，基礎架構即服務 (IaaS) 和 平台即服務 (PaaS) 的解決方案。 

### Microsoft Azure Machine Learning Studio
Azure 提供的服務可以分為兩大類：Azure 機器學習工作室和 Bot 服務。

ML Studio 是主要的 MLaaS 包。幾乎 Azure ML Studio 中的所有操作都必須手動完成。這包括數據探索、資料預處理、選擇不同訓練方法跟驗證建模結果。

Azure ML 以視覺化圖像界面來呈現工作流程中的每個步驟。使用 Azure 的優點是可以使用各種演算法，Studio 支援大約 100 種處理不同分類 (二元+多分類)、異常檢測、回歸、推薦和文本分析的演算法。值得一提的是，該平台有一個聚群演算法（K-means）。

Azure ML 的另一大部分是 Cortana Intelligence Gallery。 它集合了社區提供的各種機器學習解決方案，供數據科學家探索和應用。

## 三、Google, Microsoft 和 Amazon 機器學習文字分析/翻譯 API 的比較
### Amazon – Speech and text processing APIs
Amazon提供了多種針對文本分析常見的API。在機器學習上高度的自動化，且只需做整合的工作。

Amazon Lex，Amazon Lex API 包含了自動語音識別 (ASR) 和自然語言處理 (NLP) 能力，所以建構 Amazon Lex API 將聊天機器人應用到您的產業中。基於深度學習模組，API 可以辨識書面文字和口頭文字，Lex 介面讓您能夠將已識別的資料輸入至不同的後端解決。Amazon 鼓勵使用者使用 Lambda 環境，所以在使用 Lex 之前，必須先熟悉 Lambda 。除了獨立應用程式外，Lex 也支援 Facebook Messenger, Slack, 和 Twilio 的 chatbot 。

Amazon Transcribe，相較於 Lex 是一個複雜的聊天機器人導向工具，Transcribe 被創造為針對聲音產生文字。這個工具可以識別多種語言和辨識較難以辨識的聲音。這個 API 提供了另一種音訊檔案儲存的方案，也為文字數據分析提供了良好的數據。

Amazon Polly，Polly 服務種類和 Lex 相反。他能夠將文字轉換成真人發音，這能夠使您的聊天機器人用語音的方式回應客戶。雖然不會構成文字，但會將合成的聲音聽起來跟真人發音一樣。如果您曾經使用過 Alexa，您就能夠了解。目前為止，這項產品提供男性發音和女性發音並多達 25 種語言，有多種選擇。和 Lex 的使用方法相同，建議將 Polly 和 Lambda 一起使用。

Amazon Comprehend，可以理解成是另一種 NLP 和 API 服務，與 Lex 和 Transcribe 不同，會針對不同的文本做分析。目前 Comprehend 支援：
1. 識別文字主題（識別名稱、日期、單位等等）
2. 關鍵字搜尋
3. 語言辨識
4. 情緒分析（正面、中立或負面的詞語等等）

這項服務能夠幫助您分析社交媒體的回應、評論以及其他不適合人工分析的大量文字資料。例如，將 Comprehend 和 Transcribe 組合一起使用，能夠分析電話客服中客戶回應的情感狀態。

### Microsoft Azure 語言/文字辨識 API
和 Amazon 一樣，Microsoft 建議使用 high-level API 和語音辨識服務。Cognitive Services 可以和你的基礎設施相互結合並完成工作，不需要相關的專業知識。

* 語音，語音集合包含四種 API，應用於自然語音識別 (NLP) 以及不同種類和不同操作方式的 NLP：
1. 語音翻譯 API
2. Bing Speech API 將文字和語音相互轉換
3. Speaker Recognition API 聲音識別服務
4. 將公司的模型和數據放入 Azure NLP 中並應用在客服服務中
* 語言，語言組 API 針對類似 Amazon Comprehend 的文字分析：
1. 智慧語言理解服務是能夠針對指令並分析指令內容的 API（例如，執行 YouTube app 或是打開客廳的燈）
2. 用於分析情感和定義主題的文意分析 API
3. 單字拼音檢查
4. 文字翻譯 API
5. 網路語言模組 API 用於分析單字組合的機率和自動組合單字
6. 語言分析 API 用於切割句子，標記詞語和區分文字標記的短句

### Google Cloud 語音和文字處理 API
聊天機器人（Dialogflow）不斷的日新月異，Google 也參與其中。Dialogflow 採用 NLP 技術，目標在於了解文字的內容，和解讀人類的指令。這個 API 可以使用 Java、Node.js 和 Python 去做客製化的需求調整。

* Cloud natural language API，它的核心功能和Amazon、Microsoft 相同。
1. 定義文本內容
2. 辨識情感
3. 分析語法結構
4. 主題分類（例如，食物、新聞、電子等等）
* Cloud speech API，這項服務辨識音訊，與相似的 API 相比，它的優勢主要在於Goolge 提供多國語言。目前為止，他的翻譯範疇超過世界上 110 種語言和不同地區性的口音。它來具有一些附加功能：
1. 能夠對特定情境的詞彙提示並進行辨識（例如，為了更瞭解當地或各行業的專業術語）
2. 不當內容篩選
3. 過濾雜訊

## 四、Google, Microsoft 和 Amazon 機器學習圖片/影片辨識 API 的比較
### 圖像與影像處理 APIs: Amazon Rekognition
Rekognition API 用於圖像以及最近的影像識別任務。 這其中包括了：
* 物件偵測和分類（查找和偵測圖像中的不同物件並定義它們是什麼）
* 可以增測出影像中像是“跳舞”或是“撲滅火”等複雜動作
* 臉部識別（用於偵測人臉並找到匹配的面孔）和情緒分析（這個分析相當有趣，因為它可以偵測到笑臉，分析眼睛，甚至在影像中定義情感情緒）
* 檢測不適當的影像
* 辨識出圖片和影像中的名人（無論目標是什麼）

### 圖像與影像處理 APIs：Microsoft Azure 認知服務
* 來自 Microsoft 的 Vision 套件結合了六個 APIs，主要在於分析不同類型的圖像，影像和文本。
* 電腦視覺，識別物件、動作（如行走），並在圖像中定義主色
* 內容過濾，在圖片、文字和視頻中偵測不適當的內容
* 臉部 API 偵測臉部，將其分組，並定義年齡，情緒，性別，姿勢，笑容和鬍子
* 情緒 API 是另一種用來描述臉部表情的識別工具
* Custom Vision Service 支持您使用自己的數據構建來定義圖像識別模型
* 影像索引器是一種在影像中查找人物的工具，定義語音情感並標記關鍵字

### 圖像與影像處理 APIs：Google Cloud Services
Cloud vision API – 該工具是為了圖像的識別而建立的，對於找尋特定的圖像屬性非常有用：
* 標記物件
* 偵測人臉並分析表情
* 尋找地標和描述現場（例如假期，婚禮等）
* 在圖像中找尋文字並識別語言
* 主色調

Cloud Video Intelligence – Google 的影像識別 API 在開發初期就比 Amazon Rekognition 和 Microsoft Cognitive Services 提供的功能較為缺乏。 目前的 API 提供了以下工具集：
* 標記並定義動作
* 識別明確的內容
* 錄製語音

### 特定的 API 和工具
我們將在這裡討論來自 Microsoft 和 Google 的特定 API 產品和工具，並沒有包括 Amazon 是因為它們的 APIs 僅僅與文字分析和圖像 + 影像分析的上述類別相匹配。 但是，這些特定的 APIs 的一些功能也存在於 Amazon 的產品中。

Azure Service Bot framework – 微軟已經致力於為用戶提供靈活的機器人開發工具集。 基本上，該服務包含用於使用不同編程語言構建，測試和部署機器人的完整環境。
值得一提的是 Bot Service 並不一定需要使用機器學習的方式，由於微軟提供了五個模板（基本，形式，語言理解，主動和問答），其中只有語言理解類型需要高級的 AI 技術。

Bing Search from Microsoft 微軟提出了七個與核心 Bing 搜索功能連接的 API，包括自動建議，新聞，圖片和影片搜索。
Knowledge from Microsoft 這個 APIs 將文本分析與廣泛的獨特任務相結合：
1. Recommendations API 允許構建購買個性化的推薦系統
1. Knowledge Exploration Service 允許您輸入自然查詢以從數據庫檢索數據，視覺化數據和自動完成查詢
1. Entity Linking Intelligence API 被設計為突顯適當實體的名稱和詞組（例如年代搜索），並確保消除歧義
1. Academic Knowledge API 會自動完成詞彙，在文字與構思上找到文件中的相似性，並搜索圖形模式
1. QnA Maker API 可用於將問題的變化與答案進行匹配，以構建服務客戶的聊天機器人和應用程序
1. Custom Decision Service 是一種強化學習工具，可根據用戶的喜好對不同類型的內容（例如連結、廣告等）進行個性化和排名

Google Cloud Job Discovery API 是 Google 採用機器學習的方式來找出高度變異性的職位描述之間的相關聯繫，以避免模棱兩可。例如，它努力減少不相關或太廣泛的回報，例如查詢“銷售助理”將關鍵字 “assistant” 回傳。API 的主要特點是什麼？
* 修正在工作搜索查詢中的拼寫錯誤
* 配對所需的資歷水準
* 查找可能具有不同表現形式和行業術語的相關工作
* 處理縮略詞
* 配對不同的崗位的描述

## 五、IBM 及其他 AI 服務 – Google, Microsoft 和 Amazon 機器學習比較
有一些其他來自新創公司的 ML-as-a-service 解決方案，並受到 PredicSis 和 BigML 等數據科學家的認可。比如: 知名的 IBM Watson Analytics

對於商業預測，IBM Watson Analytics 還不是一個完整的機器學習平台。目前， Watson 的優勢是可視化數據並描述不同的數值如何相互作用。它也具有類似於 Google提供 的 視覺識別服務 以及 一系列其他認知服務 (APIs)。

### 資料儲存 (Data storage)
在大多數情況下，機器學習需要 SQL 和 NoSQL 資料庫，這些資料庫受到許多已發布和可信的解決方案支持，像 Hadoop 分佈式文件系統 (HDFS)、Cassandra、Amazon S3 和 Redshift 等。讓在開始機器學習之前已使用強大儲存系統的組織，更為容易。

如果打算使用一個 ML-as-a-service 系統，最直接的方法是選擇同一個供應商提供的儲存資料庫和機器學習服務，這將減少需多繁瑣設定所花費的時間成本，或是選擇其中一些平台可以輕鬆整合其他資料庫。例如，Azure ML 主要可整合 Microsoft 產品 ，也支持 Hadoop 和其他資料來源。


### 建模及運算 (Modeling and computing)
前面已經討論了主要提供計算能力的 ML-as-a-service 解決方案。但是如果學習工作流程是在內部完成的，計算方面的挑戰遲早會出現。機器學習在大多數情況下需要大量的計算能力，不論大數據時代是否到來，數據抽樣 (製作子集) 仍是一個相關的實踐。雖然模型的原型可以在筆記型電腦上完成，但使用大型數據集來訓練複雜模型需要投入更強大的硬體設備。數據預處理也是如此，若在一般的辦公室電腦上運算可能需要幾天的時間。在截止日期敏感的環境中 – 有時模型會每週或每天進行修改及再訓練，這顯然不合適。下面有三種可行的方法來處理這些運算程序，同時保持高效能：

1. 硬體加速：如果您執行相對簡單的任務，並且不將模型應用於大數據，則可以使用固態硬碟 (SSD) 執行資料準備或使用分析軟體等任務。可以用一個或多個圖形處理單元 (GPU) 來解決計算密集型操作時的成本。許多參考套件可以讓 GPU 處理運算，甚至可使用於 Python 等高級語言編寫的模型。
2. 考慮分散式運算：分散式運算意味著多台機器的任務分配。但是，這種方法不適用於所有的機器學習技術。
3. 使用雲端運算實現可擴充性：如果您的模型需處理具有尖峰時段的高密度客戶相關數據，雲端運算服務允許快速的擴充來分散系統負擔。對於只需要內部部署數據的公司而言，可以考慮使用私有雲基礎架構。

## Rerference
1. https://ikala.cloud/gcp-aws-azure-ai-ml-comparison-1/
2. https://ikala.cloud/gcp-aws-azure-ai-ml-comparison-2/
3. https://ikala.cloud/gcp-aws-azure-ai-ml-comparison-3/
4. https://ikala.cloud/gcp-aws-azure-ai-ml-comparison-4/
5. https://ikala.cloud/gcp-aws-azure-ai-ml-comparison-5/
