本篇文章是
感知機詳解
圖1 多層前饋網路的決策區域
這裡顯示的網路是用來訓練識別10種出現在「h_d」(例如「had」,「hid」)間的母音。這個網
絡的輸入由兩個引數f1和f2組成,它們是通過對聲音的頻譜分析得到的。網路的10個輸出對應於10個可能的母音。這個網路的**是其中有最大值的輸出。右圖畫出了學到的網路所代表的高度非線性決策面。圖中的點表示測試樣例,它們與用來訓練這個網路的樣例是完全不同的。
如感知機詳解中所論述的那樣,單個感知器僅能表示線性決策面。相反,反向傳播演算法所學習的多層網路能夠表示種類繁多的非線性曲面。如圖1所示,該圖描述了乙個典型的多層網路和它的決策曲面。這個語音識別任務要區分出現在「h_d」上下文中的10種母音(例如,「hid」,「had」,「head」,「hood」等)。輸入的語音頻號用兩個引數表示,它們是通過對聲音的頻譜分析得到的,這樣我們可以方便地在二維例項空間中顯示出決策面。如圖可見,多層網路能夠表示高度非線性的決策面,它比單個單元的線性決策面表徵能力更強。
1,可微閾值單元
應該使用什麼型別的單元來作為構建多層網路的基礎?起初嘗試選擇前面討論的線性單元,因為我們已經為這種單元匯出了乙個梯度下降學習法則。然而,多個線性單元的連線仍舊產生線性函式,而我們更希望選擇能夠表徵非線性函式的網路。感知器單元是另一種選擇,但它的不連續閾值使它不可微,所以不適合梯度下降演算法。我們所需要的是這樣的單元,它的輸出是輸入的非線性函式,並且輸出是輸入的可微函式。一種答案是sigmoid單元(sigmoid unit),這是一種非常類似於感知器的單元,但它基於乙個平滑的可微閾值函式。
圖2 sigmoid閾值單元
圖2畫出了sigmoid單元。與感知器相似,sigmoid單元先計算它的輸入的線性組合,然後應用乙個閾值到此結果。然而,對於sigmoid單元,閾值輸出是輸入的連續函式。更精確地講,sigmoid單元這樣計算它的輸出:
σ 經常被稱為sigmoid函式或者也可以稱為logistic函式(logistic function)。注意它的輸出範圍為0到1,隨輸入單調遞增。因為這個函式把非常大的輸入值域對映到乙個小範圍的輸出,它經常被稱為sigmoid單元的擠壓函式(squashing function)。sigmoid函式有乙個有用的特徵,它的導數很容易以它的輸出表示,如下。
2,反向傳播演算法
對於由一系列確定的單元互連形成的多層網路,反向傳播演算法可用來學習這個網路的權值。它採用梯度下降方法試圖最小化網路輸出值和目標值之間的誤差平方。這兒給出反向傳播演算法,然後推導出反向傳播演算法使用的梯度下降權值更新法則。
因為要考慮多個輸出單元的網路,而不是象以前只考慮單個單元,所以先重新定義誤差e,以便對所有網路輸出的誤差求和。
其中,outputs是網路輸出單元的集合,tkd和okd是與訓練樣例d和第k個輸出單元相關的輸出值。
反向傳播演算法面臨的學習問題是搜尋乙個巨大的假設空間,這個空間由網路中所有單元的所有可能的權值定義。這種情況可以用乙個誤差曲面來形象表示。和訓練單個單元的情況一樣,梯度下降可被用來嘗試尋找乙個假設使e最小化。
多層網路的乙個主要不同是它的誤差曲面可能有多個區域性極小值。不幸的是,這意味著梯度下降僅能保證收斂到區域性極小值,而未必得到全域性最小的誤差。儘管有這個障礙,已經發現對於實踐中很多應用反向傳播演算法都產生了出色的結果。
表1 包含兩層sigmoid單元的前饋網路的反向傳播演算法(隨機梯度下降版本)
表1給出了反向傳播演算法。這裡描述的演算法適用於包含兩層sigmoid單元的分層前饋網路,並且每一層的單元與前一層的所有單元相連。這是反向傳播演算法的增量梯度下降(或隨機梯度下降)版本。這裡使用的符號與前面使用的一樣,並進行了如下的擴充套件:
• 網路中每個結點被賦予乙個序號(例如乙個整數),這裡的結點要麼是網路的輸入,要麼是網路中某個單元的輸出。
• xji表示結點i到單元j的輸入,並且wji表示對應的權值。
• δn表示與單元n相關聯的誤差項。它的角色與前面討論的delta訓練法則中的(t-o)相似。後面我們可以看到:
在表1的演算法的開始,建立乙個具有期望數量的隱單元和輸出單元的網路,並初始化所有網路的權值為小的隨機數。給定了這個固定的網路結構,演算法的主迴圈就對訓練樣例進行反覆的迭代。對於每乙個訓練樣例,它應用目前的網路到這個樣例,計算對於這個樣例網路輸出的誤差,然後更新網路中所有的權值。對這樣的梯度下降步驟進行迭代,直到網路的效能達到可接受的精度(經常是上千次,多次使用同樣的訓練樣例)。
3,學習任意的無環網路
表1給出的反向傳播演算法的定義僅適用於兩層的網路。然而那裡給出的演算法可以簡單地推廣到任意深度的前饋網路。公式(t4.5)的權值更新法則保持不變,惟一的變化是計算δ值的過程。概括地說,第m層的單元r的δr值是由更深的m+1層的δ值根據下式計算的:
注意這個公式與表1演算法的第3步相同,這裡要說明的是對於網路中的任意數量的隱藏單元,該步驟要被重複很多遍。
如果推廣到任何有向無環結構也一樣的簡單,而不論網路中的單元是否象我們至此為止假定的那樣被統一地排列在層上。對於網路單元沒有按此排列的情況,計算任意內部單元(也就是所有非輸出單元)的δ的法則是:
其中downstream(r)是在網路中單元r的立即下游(immediately downstream)單元的集合,或者說輸入中包括r的輸出的所有單元。
4,反向傳播法則推導
這裡我們要解決的問題是推導出表1演算法使用的隨機梯度下降法則。隨機的梯度下降演算法迭代處理訓練樣例,每次處理乙個。對於每個訓練樣例d,利用關於這個樣例的誤差ed的梯度修改權值。換句話說,對於每乙個訓練樣例d,每個權wji被增加δwji。
其中,ed是訓練樣例d的誤差,通過對網路中所有輸出單元的求和得到
這裡outputs是網路中輸出單元的集合,tk是單元k對於訓練樣例d的目標值,ok是給定訓練樣例d時單元k的輸出值。
將遵循圖1中所畫出的符號,增加乙個下標j用來表示網路中的第j個單元,具體如下:
首先,注意權值wji僅能通過netj影響網路的其他部分。所以,我們可以使用鏈式規則(chain rule)得到
已知上式,接下來為
匯出乙個方便的表示。我們依次考慮兩種情況:一種情況是單元j是網路的乙個輸出單元,另一種情況是j是乙個內部單元。
輸出單元的權值訓練法則。就象wji僅能通過netj影響其餘的網路一樣,netj僅能通過oj影響其餘的網路。所以我們可以再次使用鏈式規則得出
首先僅考慮第一項
接下來考慮第二項
綜合上述,我們可以得到
便推導出了輸出單元的隨機梯度下降法則:
參考文獻:《機器學習》,《machine learning》等
神經網路及反向傳播演算法
神經元是構成神經網路的基本單元,模擬生物神經元的結構和特性,接受輸入訊號並且產生輸出。輸入訊號要進行加權和啟用函式,然後才輸出神經元的活性值。啟用函式用來增強網路的表示能力和學習能力,需要連續可求導 允許少數點不可導 的非線性函式。可導的啟用函式可以直接利用數值優化的方法來學習網路引數 反向傳播演算...
利用反向傳播訓練多層神經網路的原理
每個神經元都是由兩個部分組成。第乙個部分是權重係數與所有輸入訊號的乘積。ps.這裡的輸入訊號不僅僅是指輸入層,而是所有第 l?1 層對第l層來說都叫做輸入訊號 第二部是實現非線性函式的神經元啟用函式。訊號e表示加法輸出訊號 也就是權重係數和 而y f e 表示f作用在e上之後的輸出訊號。為了訓練神經...
神經網路前向傳播與反向傳播
神經網路 神經網路可以理解為乙個輸入x到輸出y的對映函式,即f x y,其中這個對映f就是我們所要訓練的網路引數w,我們只要訓練出來了引數w,那麼對於任何輸入x,我們就能得到乙個與之對應的輸出y。只要f不同,那麼同乙個x就會產生不同的y,我們當然是想要獲得最符合真實資料的y,那麼我們就要訓練出乙個最...