► 前言
之前寫了一篇「Python深度學習2:Python基礎語法介紹」介紹基本語法,看完大概了解一些程式碼,而接下來本篇為大家介紹一下深度學習。
► 何謂深度學習
深度學習是機器學習的分支,以人工神經網路(Artificial Neural Network,ANN)為架構,對資料進行特徵學習的演算法,模型根據非結構化、未標記的資料及已標記的資料來學習和做出決策,讓CPU或MCU向人類一樣,可進行複雜的運算,展現擬人的判斷及行為。
► 何謂神經網路
神經網路(Neural Network,NN)是一種模仿生物神經網路的結構和功能的數學模型或計算模型,類似於充滿數位神經的大腦,可以處理大量非線性資料,幫助人解決複雜的問題。
神經網路由神經元(節點)組成,區分為輸入層(Input Layers)、(Hidden Layers)及輸出層 (Output Layers):
輸入層:接收非線性輸入向量,例如眼睛、鼻子、嘴巴。
輸出層:神經元鏈結中傳輸、分析、權衡,最終形成結果。
隱藏層:為輸入層和輸出層之間眾多神經元和鏈結組成的各個層面,可以有一層或多層。
圖片來源:Regional Mapping of the Geoid Using GNSS (GPS) Measurements and an Artificial Neural Network
► 激活函數
激活函數(Activation functions)是幫助網路學習數據中的增加非線性因素,因為線性模型表達能力不夠無法準確推論結果。激活函數區分為四種,以下描述特點:
- Threshold Function:模型修正能力較差,因為輸出不是0就是1,沒有中間值可以參考調整。
- Sigmoid Function:一個在生物學中常見的S型函數,常被用作神經網路的閾值函數,將變量映射到0,1之間,但容易發生梯度消失的問題,且中心點不為0。
- Tangent Function:和 sigmoid 函數的曲線相對相似,但比Sigmoid函數收斂速度更快,輸出以0為中心,不過容易發生梯度消失的問題。
- ReLU Function:深度學習中較爲流行的一種激活函數,快速收斂,解決梯度消失問題,但會發生神經元會死亡的問題。
► 偏移值(Bias)
不增加Bias推論出的分類線就會通過原點,無法靈活使用,因此增加Bias就可以上下左右移動分類線。當然Bias可以充當閥值調整激活難度,但是Bias對最終結果沒有顯著的影響,因為Bias可以看作Weight的一部分,大致算式如下圖:
► 卷積神經網路
卷積神經網路(Convolutional Neural Network, CNN ),為目前深度學習領域的發展主力之一,在圖片辨識上能做到堪比人類的準確度。CNN 模仿人類大腦的認知方式,判斷一樣圖,看出物體的顏色及特徵,例如:樹葉、樹幹和樹枝...等等,這種抽象化的過程就是CNN演算法建立模型的方式。透過一塊塊的特徵研判,逐步堆疊綜合比對結果,就可以得到較好的辨識結果。
圖片來源:CS231n Convolutional Neural Networks for Visual Recognition
- 卷積層(Convolution layer):卷積網絡的核心構建塊,使用Filter遮罩進行提取特徵。
- ReLu:激活函數,快速收斂,且不會造成梯度消失。
- 池化層(Pooling layer):取得遮罩內的最大值,以減少資料特徵維度,保留重要特徵,減少模型參數,防止過度擬合。
- 攤平(Flatten):銜接CNN層與全連接層,將多維輸入,攤平為一維輸出。
- 全連接層(Fully connected layer):類似分類器的功能。
►小結
透過以上講解,因該已經對於神經網路有初步的了解,當跟朋友討論時能夠大概想像得出基本圖形,本篇博文到這裡,期待下一篇博文吧!
► 參考資料
評論