1. 程式人生 > 實用技巧 >人工智慧-人工神經網路(2)

人工智慧-人工神經網路(2)

啟用功能

在神經元完成輸入和權重之間的點積運算後,它還會對該結果施加非線性。該非線性函式稱為啟用函式。
過去,啟用功能的流行選擇是S型和tanh。最近發現,由於稱為消失梯度的問題,ReLU層對深度神經網路具有更好的響應。

在這裡插入圖片描述

簡單網路的例子
考慮具有1個隱藏層,3個輸入神經元,3個隱藏神經元和1個輸出神經元的神經網路。

在這裡插入圖片描述

人工神經網搭建

在這裡插入圖片描述

在上圖中,輸入層有至四個節點,隱層有兩個節點,輸出層僅有一個節點,節點與節點之間有著各自對應的連線權重,經過層層遞進,得到最終的輸出結果。

加法器

加法器非常好理解,假設節點接受的輸入用向量表示,節點輸出的結果用0表示,節點與上層連線的連線權重用表示,且節點的偏差用表示。在第j個節點上的加法器[公式]則定義為:在這裡插入圖片描述

啟用函式這塊比較容易理解,主要有兩大類:

  • [0,1]階躍函式
  • (0,1)型Sigmoid函式

啟用函式的作用就是將之前加法器輸出的函式值進行相應轉換,或轉為[公式]型,或對映到[公式]取值範圍內。

建立神經網路的一般步驟

  1. List item

資料的標準化處理
在人工神經網路中,無論是分類問題還是迴歸問題,輸入變數的取值一般要求在0~1之間,否則輸入變數的不同數量級別將會對連線權重的確定、加法器的計算和最終的預測產生較大的干擾。為此,需要對原始資料集進行標準化處理,消除量綱帶來的影響。

  1. 網路結構的確定

在神經網路中,隱層的層數與節點個數決定了整個模型的複雜度,這裡涉及到一個預測準確度與複雜度的權衡,層數節點數較少時模型結構簡單,但預測準確度較低;層數節點數較多時儘管預測準確度會較高,但模型可能會過於複雜,並影響計算效率(特別是在大資料集下)。

理論上,雖然多層網路能夠獲得更精準的分析結果,但若非實際需要的話,使用兩個以上的隱層會使問題的解決變得更為複雜。所以,如果直觀上資料集本身與要解決的問題不是很複雜的話,我們可以優先設定一個隱層,並從當前模型的預測結果出發來考慮是否需要更多的隱層。

在隱節點的個數設定上,目前暫時沒有權威的確定準則。通常情況下,問題越複雜,需要的隱節點也就越多,但隱節點過多又會導致過擬合問題。因此,節點個數不可能在模型建立之前就確定下來,我們可以先給出一個粗略的網路結構,然後在模型訓練過程中逐步進行調整。

  1. 連線權重的確定

神經網路建立的過程,也就是採用合適的網路結構,探索輸入輸出變數間複雜關係的過程,並在此基礎上應用於對新樣本的預測。那麼在這個過程中,神經網路就需要對已有的資料進行反覆分析與學習,掌握輸入輸出變數間的數量關係規律,並將其體現在連線權重上。因此,當我們確定好第二步中的網路結構後,構建模型的核心任務就是確定連線權重[公式],步驟如下:

第一:初始化連線權重向量W
一般連線權重向量W的初始值預設為一組隨機數,且需要服從均值為0,取值在-0.5~0.5之間的均勻分佈。

第二:計算各處理單元的加法器與啟用函式值,得到樣本的預測值

第三:比較預測值與實際值,計算預測誤差,根據預測誤差重新調整各連線權重

上述的過程是一個不斷向樣本學習的過程,我們的目的自然是為了獲得較高的預測準確度和較小的預測誤差,當一輪的學習無法滿足高準確度的要求時,就需要進行新一輪的學習,如此迴圈往復,直到滿足最終迭代終止的條件為止。

最終,我們得到一組相對合理的連線權重值,超平面(或迴歸平面)與神經網路模型也就得以確定。
關於權重初始化需要服從均值為0的安排,這個與開始時神經網路會退化為近似線性的模型有關。