神經網路及反向傳播演算法

2021-10-06 05:43:41 字數 2501 閱讀 7537

神經元是構成神經網路的基本單元,模擬生物神經元的結構和特性,接受輸入訊號並且產生輸出。輸入訊號要進行加權和啟用函式,然後才輸出神經元的活性值。

啟用函式用來增強網路的表示能力和學習能力,需要連續可求導(允許少數點不可導)的非線性函式。可導的啟用函式可以直接利用數值優化的方法來學習網路引數(反向傳播演算法)。並且啟用函式及其導數要盡可能簡單,減少計算複雜度。然後啟用函式的導函式要在乙個合適區間內,保證訓練的效率和穩定性。

下面介紹幾種常見的啟用函式。

sigimod型函式是一類兩端飽和的s型曲線,有logistic函式和tanh函式。logistic啟用函式的神經元輸出結果可以直接看作是概率分布,使得神經元更好的和統計學習模型相結合,另外就是可以看作是乙個軟性門,用來控制其他神經元輸出資訊的數量。然後這個tanh函式的輸出是零中心化的,但logistic函式輸出恆大於0,logistic函式輸出非零中心化,會使後一層的神經元輸入發生偏置偏移,並且使梯度下降的收斂速度變慢。

relu函式是一斜坡函式,相比於之前兩個啟用函式,計算更加高效。sigmoid型啟用函式會導致乙個非稀疏的神經網路,而relu卻具有很好的稀疏性。在優化方面,相比於sigmoid型函式的兩端飽和,relu函式為左飽和函式,在一定程度上緩解了神經網路的梯度消失問題,加速梯度下降的收斂速度。此外,relu神經元在訓練時,如果引數在一次不恰當的更新後,第乙個隱藏層中的某個relu神經元在所有的訓練資料上都不能被啟用,那麼這個神經元自身引數的梯度可能永遠都是0,在以後的訓練中永遠不能啟用,這稱為死亡relu問題。

前饋網路中各個神經元按接受資訊的先後分為不同的組。每乙個組可以看作乙個神經層。每一層的神經元接受前一層神經元的輸出,並且輸出到下一層盛景園,整個神經網路中的資訊是朝著乙個方向傳播,沒有反向的資訊傳播,可以用乙個有向無環路圖表示。前饋網路包括全連線前饋網路和卷積神經網路。前饋網路可看作是由簡單非線性函式的多次復合,實現輸入空間到輸出空間的複雜對映。

記憶網路也稱為反饋網路,網路中的神經元不但可以接收其他神經元的資訊,也可以接收自己的歷史資訊。和前饋網路相比,記憶網路中的神經元具有記憶工會能,在不同時刻具有不同狀態。記憶神經網路中的資訊傳播可以是單項或者雙向傳遞,因此可以用乙個有向迴圈圖或無向圖來表示。記憶網路可以看作是乙個程式,具有更強的計算和記憶能力。

通用近似定理說明了神經網路的計算能力可以去近似乙個給定的連續函式。多層前饋神經網路也可以看成一種特徵轉換方法,其輸出作為分類器的輸入進行分類。

然後前饋神經網路採用的是交叉熵損失函式,加上正則項就是結構化風險函式。正則項用來防止過擬合,超引數越大,正則項越接近於0。之後就可以通過梯度下降法對結構化風險函式求偏導來更新引數。計算偏導數如果用鏈式法則逐一對每個引數求偏導非常麻煩。因此在神經網路的訓練中經常使用反向傳播演算法來計算梯度。

損失函式對每層神經元淨輸出值得偏導數稱為誤差項,這也間接反映了不同神經元對網路能力的貢獻程度,從而較好解決了貢獻度分配問題。反向傳播演算法的含義是:第l層的乙個神經元的誤差項是所有與該神經元相連的第l+1層的盛景園誤差項的權重和。然後再乘上該神經元啟用函式的梯度。

使用我查反向傳播演算法的前饋神經網路訓練過程主要是利用前饋計算每一層的淨輸入值和啟用值,直到最後一層,然後利用反向傳播計算每一層的誤差項,計算每一層引數的偏導數並且更新引數。

反向傳播演算法訓練的過程,輸入訓練集,驗證集,學習率,正則化係數,網路的層數和神經元的數量。然後隨機初始化w和b,然後對訓練集d中的樣本隨即重新排序,遍歷訓練集樣本,使用前饋計算每一層的淨輸入和啟用值,直到最後一層,反向傳播演算法計算每一層的誤差(計算每一引數的導數,然後利用梯度下降法更新引數),不斷迴圈此過程,直到神經網路模型在驗證集v上的錯誤率不再下降。

神經網路的優化問題是乙個非凸優化問題。在用誤差反向傳播的迭代過程中,每一層都要乘以該層的啟用函式的導數。當我們使用sigimod型函式時,他們導數的值域都小於或者等於1。由於sigimod函式的飽和性,飽和區的導數更接近於0。這樣,誤差經過每一層都會衰減,當網路層數很深時,梯度就會不斷衰減,甚至消失,使得整個網路訓練難度加大。這就是梯度消失問題。正是由於這兩個問題,讓神經網路的引數學習比線性模型更加困難。

在深度神經網路中我們可以用relu啟用函式來減輕梯度消失問題。

神經網路就是按照一定規則連線起來的多個神經元。並且神經元按照層來分布,最左面的叫做輸入層,最右面叫做輸出層。駛入層和輸出層之間的層叫做隱藏層。同一層的神經元之間沒有連線。全連線神經網路的這一層和上一層的所有神經元相連。每個連線都有乙個權值。

神經網路其實就是乙個輸入向量到輸出向量的函式。現在,我們需要知道乙個神經網路的每個連線上的權值是如何得到的。我們可以說神經網路是乙個模型,那麼這些權值就是模型的引數,也就是模型要學習的東西。然而,乙個神經網路的連線方式、網路的層數、每層的節點數這些引數,則不是學習出來的,而是人為事先設定的。對於這些人為設定的引數,我們稱之為超引數。

計算乙個節點的誤差項,需要先計算每個與其相連的下一層節點的誤差項。這就要求誤差項的計算順序必須是從輸出層開始,然後反向依次計算每個隱藏層的誤差項,直到與輸入層相連的那個隱藏層。這就是反向傳播演算法的名字的含義。反向傳播演算法其實就是鏈式求導法則的應用。

對於乙個神經元,使用梯度下降優化引數,如果輸入x恆大於0,收斂速度會比零均值化的輸入更慢。因為sigimod型函式在0時導數最大,並且恆大0容易出現梯度消失現象。

神經網路反向傳播理解

訓練神經網路的目標是 優化代價函式,使得代價函式找到乙個 全域性最小值或者區域性最小值。不管使用何種梯度下降演算法 bgd,sgd adam 都需要先算出各個引數的梯度。反向傳播的作用 就是快速算出所有引數的偏導數。求導數通常可以分為兩類,一類是直接用定義,第二類是公式法 包括鏈式法 定義法 定義法...

多層神經網路與反向傳播演算法

本篇文章是 感知機詳解 圖1 多層前饋網路的決策區域 這裡顯示的網路是用來訓練識別10種出現在 h d 例如 had hid 間的母音。這個網 絡的輸入由兩個引數f1和f2組成,它們是通過對聲音的頻譜分析得到的。網路的10個輸出對應於10個可能的母音。這個網路的 是其中有最大值的輸出。右圖畫出了學到...

卷積神經網路反向傳播推導

以tensorflow的卷積神經網路為例 卷積 池 卷積 池 全連線 softmax c1層 卷積神經網路的輸入是28 28的矩陣 a 經過f1 個5 5的卷積核k1 i i 1,2,f1 的卷積生成f1 個24 24大小的feature maps c1 i co nv2 a,k1 i,v alid...