Python深度學習3:深度學習基本介紹

前言

之前寫了一篇「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)是幫助網路學習數據中的增加非線性因素,因為線性模型表達能力不夠無法準確推論結果。激活函數區分為四種,以下描述特點:

  1. Threshold Function:模型修正能力較差,因為輸出不是0就是1,沒有中間值可以參考調整。
  2. Sigmoid Function:一個在生物學中常見的S型函數,常被用作神經網路的閾值函數,將變量映射到0,1之間,但容易發生梯度消失的問題,且中心點不為0。
  3. Tangent Function:和 sigmoid 函數的曲線相對相似,但比Sigmoid函數收斂速度更快,輸出以0為中心,不過容易發生梯度消失的問題。
  4. 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):類似分類器的功能。

小結

透過以上講解,因該已經對於神經網路有初步的了解,當跟朋友討論時能夠大概想像得出基本圖形,本篇博文到這裡,期待下一篇博文吧!

 

參考資料

 人工神經網路

 深度學習領域最常用的10個激活函數,一文詳解數學原理及優缺點 

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論