網路城邦
上一篇 回創作列表 下一篇   字體:
Python機器學器筆記(十二):多層類神經網路
2020/08/21 21:44:25瀏覽4403|回應0|推薦7

Python機器學器筆記(十二):多層類神經網路

先前提過,早在1940年代,科學家即試圖藉由對生物大腦工作的了解,來設計人工智慧演算法模型。圖一是個簡單的神經元示意圖,圖形左端的「樹狀突」(denrites)接收輸入訊號,在細胞體內整合這些輸入訊號後,「細胞核」(cell nucleus)再透過「軸突」(axon)輸出訊號發送下去。先前介紹過的感知器(Perceptron)演算法,即是此思維下提出的類神經元演算法模型。但感知器演算法只是一個單一神經元模型,訊號輸入後,即輸出最終結果,與大腦中神經元是相互連結運作的實際情形差異甚遠,故後有「多層感知器」(Multi-player Perceptron, MLP)這類多層神經網路演算法模型提出。

多層神經網路模型簡單說,就是將多個「單一神經元」連結成多層架構,每一層「單一神經元」的輸入訊號來源,是其連結的上一層「單一神經元」的輸出訊號,而其本身處理完後的輸出訊號,會轉為其連結的下一層的「單一神經元」的輸入訊號。這種每一層的輸出會被當作下一層的輸入的類神經連結方式有個專有名詞,叫「前饋式類神經網路」(feedforward neural network)。

我們可將多層神層網路所連結的各層「單一神經元」,區分為以下三種類型:

•輸入層(input layer):該層神經元可視為整個神經網路的第一層。輸入層的輸入訊號並非來自其他神經元的輸出訊號,而是由神經網路之外匯入。而輸入層處理後產生的輸出訊號,會成為其所連結下一層神經元的輸入訊號。

•輸出層(output layer):該層神經元可視為整個神經網路的最後一層。該層的輸入訊號,接收來自其所連結上一層神經元的輸出訊號。而輸出層的輸出訊號,即是整個神經網路的運算結果 。

•隱藏層(hidden layer):即是位在輸入層與輸出層之間的神經元,一個神經網路可以有一個以上的隱藏層,每個隱藏層的神經元,其輸入訊號,是接收來自其所連結上一層神經元的輸出訊號,而其輸出訊號,則會成為其所連結下一層神經元的輸入訊號。

圖二是個簡單的三層類神經網路示意圖,在這個例子中只有一個隱藏層,但實際上我們可視需要設定二個以上隱藏層。在圖形最左邊,我們將外部資料X匯入輸入層,再將產出結果傳遞至中間的隱藏層,作為該層的輸入訊號,接著再把隱藏層的輸出訊號,作為輸入訊號匯入最右邊的輸出層,最後由輸出層產出的輸出訊號,即是整個多層類神經網路運算預測結果y。

當然,當我們拿訓練數據集訓練多層類神經網路時,產出的預測結果,不會剛好等於訓練數據集的目標值(target),這時需對模型進行調整,其步驟為:

1.多層類神經網路依初始或更新後加權參數算出輸出結果,而輸出結果與訓練數據集目標值之間的差異,則在模型設定的「成本函數」條件下,求算出我們希望的「最小化誤差」。

2.接著「反傳遞(backpropagation)誤差訊息」,由輸出層傳遞至前一層的隱藏層,再依序傳至最前面的輸入層,由此找出網路中相對於每個加權的導數,並更新模型加權參數。圖三為反傳遞誤差的示意圖及加權導數的處理過程。

接著我們重覆前述1、2步驟,直到模型輸出結果與數據集目標值二者間的差異收斂為此;或二者差異雖未收斂,但步驟重覆次數已達事先指定次數,此時的輸出結果,即是模型學習後的最終結果。

( 知識學習其他 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=gwogo&aid=149314545