從 Azure Machine Learning 開始進入機器學習

什麼是機器學習?

Machine Learning(機器學習)不是什麼新技術,至少我在十幾年前(遠目)在大學時修這門課是就已經是發展一段時間的領域,而用最簡單的說法來解釋「機器學習」,就是讓機器擁有學習能力,能夠建立自己的「智慧」,進而在真實世界中進行推論(預測)、分類或是分群等動作,當然,就像我們人類學習一樣,要嘛是讀書破萬卷,要嘛是從師長口中、生活當中得到經驗,然後把這些內容、經驗歸納出自己的智慧,機器要學習也需要大量的資料才能進行學習,而之所以最近會成為一個熱門的話題,自然也是因為資通訊的發達後,人們開始想從大量資料(Big Data)中找出商業智慧或是利用這些資產來建立智慧,於是爭相開始討論機器學習。

具體來說,到底機器學習的是什麼呢?科學家們將學習的模型分成幾種類型,以上圖為例,它是一種學習「分類」(classification) 的問題,透過合適的學習方法(學習演算法)建立起來的模型,就像圖中的虛線一樣,能夠判斷哪些資料是哪一個類別。以現實生活來舉例,郵件伺服器可以透過機器學習來學會判斷一封信是否為垃圾郵件,學習的資料就是過往大量的郵件,以及導師(例如你手動標記哪些信是垃圾信)標記哪些信是垃圾信,讓郵件伺服器愈來愈有能力主動地判斷一封新信件是否為垃圾郵件,這就是機器學習的應用之一。所以我們可以知道,機器學習是讓機器(當然包含軟體)有能力對於未來的事物或情境採取行動的方式。

Azure Machine Learning

Azure machine learning overview from Lin-Chieh Shangkuan

Azure 機器學習(Azure ML)是 Microsoft Azure 平台上其中一個服務,這個服務為想要進行機器學習的開發團隊,提供了處理大數據的基礎建設機器學習的演算法硬體運算資源、以及將模型變成 Web Service 等服務,讓開發團隊可以專注在資料的蒐集、要解決的問題、判斷要「學習」什麼問題,其它運算的工作就讓 Azure 機器學習這個平台來完成。在這個服務下,不管你的資料放在哪裡(放在 Azure 上或不在 Azure 上),都可以拉進 Azure ML 來進行學習的工作,這裡我們以實際的操作來做說明。

Azure Machine Learning Studio

上圖是 Azure Machine Learning Studio 的首頁,可以看到一些影片介紹,如果想要立刻免費體驗 Azure ML(是的,有免費方案),可以點右上角的 Sign In 連結,使用 Microsoft 帳號(也就是之前的 Windows Live ID、MSN 帳號等)登入,就會進入 Azure ML Studio 的操作畫面(或是你要稱它為實驗室也可以):

在這個 Studio 中,Machine Learning 的操作都是稱作「實驗」(experiments),你可以在一個實驗裡訓練一個或多個模型。

進入實驗的操作畫面,你可以看到中間的區域可以讓你排列組織資料流的動線,還有要使用的資料操作、演算法、驗證模型等等,而這些區塊都是從左側的面板拖拉進來的,像是選擇適用的學習演算法:

這樣就可以把 Bayesian Linear Regression 的演算法拉進來,再與其它的資料操作流程來連接。而右邊的面板就是針對不同的區塊進行設定:

在訓練模型之前,你可能會想到先整理一下資料(data cleansing),像是刪掉一些不用的欄位、或是只拿其中幾個欄位來進行學習,這些都可以在 Azure ML Studio 中拖拉操作,如果有必要的話,也可以套入 R script 來自己寫 code 處理:

除了可以處理資料之中,訓練模型也可以使用由微軟研究院研發多年的演算法模組來使用,你只要調整這些演算法的參數即可,如同這個例子想要做「預測」的學習,就可以直接套用 Regression 類的演算法,這裡我選了用 Linear Regression。

而訓練好的模型也不是只有在實驗室裡可以玩而已,可以直接設定 input/output 後,發佈成 Web Service:

看到這裡你也想玩一下 Azure ML 了嗎?如同前面提到的,現在可以免費體驗 Azure ML,而 Azure 官方網站也提供了一些 Lab 讓你感受一下 Machine Learning 以及 Azure ML 提供的模組,可以到這裡試試看!

常見問題

  • Q: Machine Learning 很神嗎?

    A: 機器學習其實跟我們人類學習一樣,你餵給它什麼資料它就學什麼,學習資料夠不夠多、學習方法(學習演算法)好不好、是否有抓到重點(選擇訓練的資料欄位)等等都會影響學習的成果,機器學習只是可以大量、快速學習,不代表它就一定會完全正確喔。

  • Q: 用 Azure ML 需要事先安裝軟體嗎?還是限定作業系統呢?

    A: Azure ML Studio 是一個完全以 HTML 技術開發的平台,只要在瀏覽器中就可以操作。

  • Q: 我的資料一定要放在 Azure 上才能學習嗎?

    A: 在 Azure ML Studio 中的 Data Reader 或 Hive Query 都可以讓您從各個地方將資料透過 HTTP 匯入,並不限制一定得放在 Azure 上。不過 Azure HDInsight、Azure SQL Database 或是 Azure Storage 都很適合處理大數據,也很方便整合。

參考資源