Partager via


Azure 「機器學習」: 初探類神經網路 (Neural Network)

「類神經網路」這個聽起來很利害的東西,要怎麼被應用到 Azure 的「機器學習」工具中呢? 本文的目的,即是希望讓即便沒修過人工智慧、類神經網路這些聽起來很利害的課的你,也能藉此入門,讓你能知道如何作出一個類神經網路預測模型。

那我們就開始吧!

為什麼叫「類神經網路 (Neural Network)」?

故名思義,類神經網路即是希望能模仿人類腦袋神經網路的學習過程。如下圖,大腦裡的一堆神經細胞,透過像樹枝狀的突起,以可強可弱的電脈沖的形式互相傳遞:

Back-Propagation (倒傳遞類神經網路,以下簡稱 BP)

類神經網路演算法有很多種,如 Back-Propagation (BP) 神經網路, Hopfield 神經網路, Kohonen 神經網路及 Adaptive Resonance Theory (or ART) 神經網路等;其中最常見的即是 BP 演算法,亦常被稱為 Multilayered Perceptron 多層感知器,如下圖這樣的三層結構:

image

三層式 BP 神經網路 (圖片來源: “Predictive Analytics with Microsoft Azure Machine Learning: Build and Deploy Actionable Solutions in Minutes”)

在這結構中有一個輸入層,一個隱藏層,和一個輸出層。

其中輸入層的節點數目即等於你要輸入的資料變數;而輸出層的節點數目即等於你要預測的輸出變數。相對而言,隱藏層的節點數目就非常彈性,可以自行決定,之後我們會談到要設定多少會比較適當。

舉個例子吧!

Azure 「機器學習」初體驗一文中,我們想要以 BP 演算法,依據客人已婚與否、性別、年收入等資料 (輸入) 來預測會不會買腳踏車 (輸出: BikeBuyer):

image

那麼輸入層的節點數就是 11 個,輸出層的節點數就是 1 個,如下圖所示:

image

類神經網路的參數

茲舉幾個在 Azure ML 中可設定的重要參數解釋如下:

image

“Hidden layer specification”: 也就是隱藏層的配置。預設是僅 1 層隱藏層,同時層與層之間所有的節點是相互連接的;若需要 1 個以上的隱藏層、或實作如 Deep Learning, Convolution Neural Network (CNN) 的類神經學習方式,則可以使用 Net# script 來自行定義,

image

“Number of hidden nodes”: 也就是隱藏層的節點數。這個數字該設多少呢? 有個常見的作法是以輸入層的節點數目開根號後的值開始作測試 (如: 輸入層節點數 = 11,開根號後的整數 = 3);另一個常見法則,是隱藏層的節點數目通常介於輸入層節點及輸出層節點數之間 (如: 11> 隱藏層節點數 > 1)。以上的法則皆是要避免「過度訓練」(over fitting) 的狀況發生。

image

“Learning rate”: 也就是決定模型學習過程的收斂速度。若設太低,會需要較多的 “Learning iterations” (以及較多的時間) 來找到最佳解;但若設太高,也可能讓演算法在最佳解旁邊跳來跳去,最後找到的解的錯誤率會增加。

其他參數的設定及說明可見: Azure ML Studio Help

image

如何將類神經網路應用至機器學習之中?

Azure 「機器學習」:我該用哪種演算法 (algorithms)? 文中提到,類神經網路演算法已被整合至 Azure Machine Learning,透過瀏覽器及簡單的操作,即能實作出 Classification (分類) 及 Regression (迴歸分析) 的預測模型,進而發佈為 Web Service 讓其他人使用:

image

延伸閱讀:

1. 想入門實作自己的 Machine Learning 嗎? 請見 Azure 「機器學習」初體驗

2. 還不甚了解什麼是 Machne Learning? 請見 Azure 「機器學習」FAQ,以及實際應用模型

3. Azure ML 中的演算法種類: 請見 Azure 「機器學習」:我該用哪種演算法 (algorithms)?

4. Net# 簡介:透過 Azure ML 實作多層網路及卷積神經網路 (Convolution Neural Network)

5. Microsoft Azure 機器學習官方學習網站 (含教學影片及文件): https://azure.microsoft.com/zh-tw/documentation/services/machine-learning/