【AI60問】Q36深度學習中的類神經網路是什麼?

by 提拔我園丁
緯育TibaMe AI小教室-Q36深度學習的類神經網路是什麼?

「深度學習是讓機器模擬人腦的運作方式,進而和人類一樣具備學習的能力。」,會這麼解釋是因為深度學習中,人類提供的函數集是由類神經網絡(artificial neural network)的結構所定義。

簡單說,深度學習就是一個函數集,如此而已。」 類神經網絡和人腦確實有幾分相似之處,我們都知道人腦是由神經元(neuron)所構成,類神經網絡也是由「神經元」連接而成。

類神經網路是指一堆函數的集合,我們丟進一堆數值,整個網路就輸出一堆數值,從其中找出最好的結果,也就是機器運算出來的最佳解。

類神經網絡中的神經元構造及其運作方式如圖 36-1。每個神經元都是一個簡單的函數,這些函數的輸入是一組數值(也就是一個向量),輸出是一個數值。該神經元的輸入為左側橘色框內的2、-1、1三個數值,輸出爲右側藍色框內的數值4。

圖36-1類神經網絡中單一神經元及其運作方式。

那麼,神經元是如何運作的呢?

每個輸入都有一個對應的權重(weight),圖 36-1中每個輸入對應的權重,分別為灰色框內的1、-2、-1 三個數值。先將每個輸入數值和其對應權重相乘後加總,再加上綠色框內的閾值(bias)後,其總和便成為神經元中啟動函數(activation function)的輸入。圖 36-1中啟動函數的輸入是4,也就是2×1+(−1)×(−2)+1×(−1)+1= 4。

啟動函數是由人類事先定義好的非線性函數,其輸入和輸出都是一個數值,而其輸出就是神經元的輸出。圖 36-1中的啟動函數, 其輸入和輸出的關係如藍色圓域所示(橫軸代表輸入、縱軸代表輸出),其中當輸入小於0 時,輸出爲0;當輸入大於0 時,輸出等於輸入。這種啟動函數稱為整流線性單元(rectified linear unit,ReLU),是目前常用的一種啟動函數。圖 36-1中的啟動函數輸入為4,因為大於0,故神經元的輸出就是4。神經元中的權重和閾值都稱為參數(parameter),它們決定了神經元的運作方式。

步驟一:類神經網絡就是函數集

瞭解神經元後,接著來看類神經網絡。類神經網絡由很多神經元連接而成,人類只需要決定類神經網絡的連結方式,機器可以自己根據訓練資料找出每個神經元的參數。

圖 36-2是一個類神經網絡的例子,上方的類神經網絡共有六個神經元,分別排成三排,橘色方塊代表外界的輸入,外界的輸入可以是圖片、聲音訊號或棋盤上棋子的位置等等,只要能以向量(一組數字)表示即可。

以圖片為例,一張28×28 大小的黑白圖片,可以視為一個784(=28×28)維的向量,每一分量對應到圖片中的一個圖元,該分量的值表示圖元顔色的深淺,接近黑色其值就接近1,反之就接近0。

來自外界的資訊被輸入給第一排的藍色神經元,藍色神經元的輸出是第二排黃色神經元的輸入,黃色神經元的輸出則是下一排綠色神經元的輸入,因爲綠色神經元的輸出沒有再轉給其他神經元,故其輸出就是整個類神經網絡的輸出。

圖 36-2圖上方為一完全連接前饋式網絡結構,下方爲兩組不同的參數示例,分別代表兩個不同的函數。輸入同樣的數值,左下和右下的神經網絡會有不同的輸出。

圖 36-2這種類神經網絡結構,稱為完全連接前饋式網絡(fully connected feed forward network)。

在這種架構中,神經元排成一排一排,每排稱為一「層」(layer),每層神經元的輸出爲下一層各神經元的輸入,最後一層稱爲「輸出層」(output layer),其他層則稱之為「隱藏層」(hidden layer)。所謂深度學習的「深」,意味著有很多的隱藏層。

當類神經網絡中每個神經元參數都確定時,該類神經網絡就是一個非常複雜的函數。同樣的網絡結構,若參數不同將形成不同的函數。

例如:圖 36-2左下圖和右下圖分別具備兩組不同的參數,當參數如左下圖,若輸入1 和-1,這個類神經網絡所定義的函數輸出爲0 和9;同理,以右下圖的參數可得到另一個函數,如果輸入一樣的1 和-1,這個函數的輸出則爲4 和6。因為一組參數等於一個函數,如果先把神經元連接確定,再讓機器根據訓練資料自己找出參數時,就相當於先提供一個函數集,再讓機器從函數集自行選出有用的函數。

類神經網絡的結構,目前仍需要人類在機器學習前事先決定。如果結構設定不當,由此結構所定義的函數集根本找不到好的函數,接下來再怎麼努力都是徒勞。這就好比想要在大海撈針,結果針根本不在海裡。

步驟二:定義函數的優劣

有了類神經網絡結構作爲函數集後,接下來就要定義函數的優劣,以便在下一步驟讓機器挑選出最佳函數,但什麽叫作好的函數呢?讓我們舉個具體的例子來說明。

假設任務是手寫數字辨識,也就是讓機器檢視圖片,每張圖中有手寫數字,機器必須辨認出這個數字。執行手寫數字辨識的類神經網絡,其輸出層有10 個神經元分別對應到從0 到9 的數碼,而每個神經元的輸出值則分別表示對應數碼的信心分數,機器會把信心分數最高的數碼當作最終的輸出。

在手寫數字辨識中,訓練資料是一堆圖片和每張圖片中的數碼(數碼需由人工標註)。這些訓練資料告訴機器,當訓練資料中某張圖片輸入時,要辨識出哪個數碼才正確。如果將訓練資料中的圖片一張一張輸入到某些函數來辨識,越能夠正確辨識結果(亦即在輸出層中圖片數碼的信心分數最高)的函數,可能就越優秀。

步驟三:找出最佳函數

根據訓練資料可以決定一個函數的優劣,接下來就要從類神經網絡所定義的函數集中,找到最佳的函數,也就是最佳的參數組合。我們可以把找出最佳函數的過程,想像成是機器在「學習」。

如何找出最佳的類神經網絡參數呢?目前最常採用的「學習」方法稱為「梯度下降法」(gradient descent)。

在此法中,機器先隨機指定第一組參數, 再稍微調整第一組參數,找出比第一組參數略佳的第二組參數,接下來再稍微調整第二組參數,找出比第二組參數略佳的第三組參數,以此類推,讓這個步驟反覆進行,直到找不出更佳的參數時就停止。參數的調整次數可能多達上萬次,這就是經常聽說「深度學習需要耗用大量運算資源」的原因。因爲類神經網絡中有大量參數,所以還會使用名爲「反向傳遞法」(backpropagation)的演算法,來提高參數調整的效率。

例如:AlphaGo就是用梯度下降法訓練出厲害的機器, 但它無法保證一定能從函數集中挑出最佳函數,而僅能從類神經網絡定義的函數集中,找出局部最好的函數。 這個演算法是隨機方式,每次找出來的函數都可能不相同,因此找出多好的函數要靠點運氣。也因此,在深度學習的領域裡,可以幫助梯度下降法找到較佳函數的「撇步」,但至今尚未保證能找到最佳函數。

而回到 AlphaGo 案例, 它的架構只為了圍棋而設計的,若今天要讓它運用在開車、做其他事情就需要重新設計。

深度學習並非萬能的人工智慧,它其實只能針對特定的需求來設計,現在各種酷炫應用與假設都還在原始階段,尚有許多需要人類去定義、設計,我們一起期待未來深度學習的表現吧!

【相關課程】提升 AI 實作能力必備,深度學習 TensorFlow 基礎與應用

想成為爬蟲工程師 、資料分析師 、資料工程師 、資料分析領域專家 、人工智慧產品經理嗎?還是你的公司正需要培養此領域人才呢?

點我了解 AI資料科學家-三階段全方位學程班 👉 https://www.tibame.com/eventpage/ai_datascientist 

每日5分鐘, 提拔我園丁陪你快速添補AI/資料科學知識與技能。

若想了解更多AI/資料科學的小知識、及各產業的相關應用,歡迎訂閱TibaMe FB及部落格,或有其他想了解的主題歡迎在下方留言讓我們知道唷!

參考資料

分享這篇文章:
0 留言
2

您也許會喜歡

發佈留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料