神經網絡的介紹

日萌社

人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度學習實戰(不定時更新)


 

2 神經網絡的介紹

目標

  1. 知道神經網絡的概念
  2. 知道什麼是神經元
  3. 知道什麼是單層神經網絡
  4. 知道什麼是感知機
  5. 知道什麼是多層神經網絡
  6. 知道激活函數是什麼,有什麼作用
  7. 理解神經網絡的思想

1. 人工神經網絡的概念

人工神經網絡(英語:Artificial Neural Network,ANN),簡稱神經網絡(Neural Network,NN)或類神經網絡,是一種模仿生物神經網絡(動物的中樞神經系統,特別是大腦)的結構和功能的計算模型。

和其他機器學習方法一樣,神經網絡已經被用於解決各種各樣的問題,例如機器視覺和語音識別。這些問題都是很難被傳統基於規則的編程所解決的。

2. 神經元的概念

在生物神經網絡中,每個神經元與其他神經元相連,當它“興奮”時,就會向相連的神經元發送化學物質,從而改變這些神經元內的電位;如果某神經元的電位超過了一個“閾值”,那麼它就會被激活,即“興奮”起來,向其他神經元發送化學物質。

1943 年,McCulloch 和 Pitts 將上述情形抽象爲上圖所示的簡單模型,這就是一直沿用至今的 M-P 神經元模型。把許多這樣的神經元按一定的層次結構連接起來,就得到了神經網絡。

一個簡單的神經元如下圖所示,

可見,一個神經元的功能是求得輸入向量與權向量的內積後,經一個非線性傳遞函數得到一個標量結果

3. 感知機

感知機是最早應用神經元計算模型的一個二分類算法。

感知機的激活函數是符號函數:sign(z) = +1 (if z >=0) else -1

感知機的作用:

把一個n維向量空間用一個超平面分割成兩部分,給定一個輸入向量,超平面可以判斷出這個向量位於超平面的哪一邊,得到輸入時正類或者是反類,對應到2維空間就是一條直線把一個平面分爲兩個部分

4. 單層神經網絡

是最基本的神經元網絡形式,由有限個神經元構成,所有神經元的輸入向量都是同一個向量。由於每一個神經元都會產生一個標量結果,所以單層神經元的輸出是一個向量,向量的維數等於神經元的數目。

示意圖如下:

5. 多層神經網絡

多層神經網絡就是由單層神經網絡進行疊加之後得到的,所以就形成了的概念,常見的多層神經網絡有如下結構:

  • 輸入層(Input layer),衆多神經元(Neuron)接受大量輸入消息。輸入的消息稱爲輸入向量。
  • 輸出層(Output layer),消息在神經元鏈接中傳輸、分析、權衡,形成輸出結果。輸出的消息稱爲輸出向量。
  • 隱藏層(Hidden layer),簡稱“隱層”,是輸入層和輸出層之間衆多神經元和鏈接組成的各個層面。隱層可以有一層或多層。隱層的節點(神經元)數目不定,但數目越多神經網絡的非線性越顯著,從而神經網絡的強健性(robustness)更顯著。

示意圖如下:

概念:全連接層

全連接層:當前一層和前一層每個神經元相互鏈接,我們稱當前這一層爲全連接層。

思考:假設第N-1層有m個神經元,第N層有n個神經元,當第N層是全連接層的時候,則N-1和N層之間有1,這些參數可以如何表示?

從上圖可以看出,所謂的全連接層就是在前一層的輸出的基礎上進行一次的變化(不考慮激活函數的情況下就是一次線性變化,所謂線性變化就是平移(+b)和縮放的組合(*w))

6. 激活函數

在前面的神經元的介紹過程中我們提到了激活函數,那麼他到底是幹什麼的呢?

假設我們有這樣一組數據,三角形和四邊形,需要把他們分爲兩類

通過不帶激活函數的感知機模型我們可以劃出一條線, 把平面分割開

假設我們確定了參數w和b之後,那麼帶入需要預測的數據,如果y>0,我們認爲這個點在直線的右邊,也就是正類(三角形),否則是在左邊(四邊形)

但是可以看出,三角形和四邊形是沒有辦法通過直線分開的,那麼這個時候該怎麼辦?

可以考慮使用多層神經網絡來進行嘗試,比如在前面的感知機模型中再增加一層

對上圖中的等式進行合併,我們可以得到:

上式括號中的都爲w參數,和公式

完全相同,依然只能夠繪製出直線

所以可以發現,即使是多層神經網絡,相比於前面的感知機,沒有任何的改進。

但是如果此時,我們在前面感知機的基礎上加上非線性的激活函數之後,輸出的結果就不在是一條直線

如上圖,右邊是sigmoid函數,對感知機的結果,通過sigmoid函數進行處理

如果給定合適的參數w和b,就可以得到合適的曲線,能夠完成對最開始問題的非線性分割

所以激活函數很重要的一個作用就是增加模型的非線性分割能力

常見的激活函數有:

看圖可知:

  • sigmoid 只會輸出正數,以及靠近0的輸出變化率最大
  • tanh和sigmoid不同的是,tanh輸出可以是負數
  • Relu是輸入只能大於0,如果你輸入含有負數,Relu就不適合,如果你的輸入是圖片格式,Relu就挺常用的,因爲圖片的像素值作爲輸入時取值爲[0,255]。

激活函數的作用除了前面說的增加模型的非線性分割能力外,還有

  • 提高模型魯棒性
  • 緩解梯度消失問題
  • 加速模型收斂等

這些好處,大家後續會慢慢體會到,這裏先知道就行

6. 神經網絡示例

一個男孩想要找一個女朋友,於是實現了一個女友判定機,隨着年齡的增長,他的判定機也一直在變化

14歲的時候:

上述的超級女友判定機其實就是神經網絡,它能夠接受基礎的輸入,通過隱藏層的線性的和非線性的變化最終的到輸出

通過上面例子,希望大家能夠理解深度學習的思想

輸出的最原始、最基本的數據,通過模型來進行特徵工程,進行更加高級特徵的學習,然後通過傳入的數據來確定合適的參數,讓模型去更好的擬合數據。

這個過程可以理解爲盲人摸象,多個人一起摸,把摸到的結果乘上合適的權重,進行合適的變化,讓他和目標值趨近一致。整個過程只需要輸入基礎的數據,程序自動尋找合適的參數。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章