網絡訓練
這一節主要是訓練網絡來獲得網絡中的權重。把神經網絡當作輸入變量x到輸出變量y的參數化非線性函數。使用與1.1節的方法對多項式拟合的問題,是以需要最小化平方和誤差。現在給定一個由輸入向量{xn}組成的訓練集,和對應的目标tn,最小化誤差函數:
回歸問題
假定t服從高斯分布,均值與x相關,神經網絡的輸出為:
p(t|x,w)=N(t|y(x,w),β−1) p ( t | x , w ) = N ( t | y ( x , w ) , β − 1 )
将輸出單元激活函數取成恒等函數,這樣的話可以近似任何從想到y的連續函數。給定N個獨立同分布的觀測資料集X={x1,x2,,,}以及對應的目标變量t={t1,t2,,,tn},構成似然函數:
p(t|X,w,β)=∏p(tn|xn,w,β) p ( t | X , w , β ) = ∏ p ( t n | x n , w , β )
然後再取負對數,就得到誤差函數:
β2∑[y(x,w)−tn]2−N2lnβ+N2ln2π β 2 ∑ [ y ( x , w ) − t n ] 2 − N 2 ln β + N 2 ln 2 π
首先考慮w。把最大似然函數等價于最小平方和誤差函數:
E(w)=12∑[y(xn,w)−tn]2 E ( w ) = 1 2 ∑ [ y ( x n , w ) − t n ] 2
通過最小化得到的w被記作wML。
注意一點的是,在實際中神經網絡函數y(xn,w)的非線性性質導緻誤差函數E(w)不是凸函數,在應用中尋找的是似然函數的局部最大值,對英語的誤差的局部最小值。
現在使用已經找到的wML來尋找β:
1β=1N∑[y(xn,wML)−tn]2 1 β = 1 N ∑ [ y ( x n , w M L ) − t n ] 2
現在考慮多個目标變量,假定w和x條件下,目标變量是互相獨立的,那麼目标變量的條件分布:
p(t|x,w)=N(t|y(x,w),ββ−1I) p ( t | x , w ) = N ( t | y ( x , w ) , β β − 1 I )
這種情況下噪聲的精度為:
1βML=1NK∑(y(xn,wML)−tn)2 1 β M L = 1 N K ∑ ( y ( x n , w M L ) − t n ) 2
二分類
一個單一目标變量t,且t=1為C1、t=0為C2。現在隻考慮單一輸出,激活函數:
y=σ(a)=11+exp(−a) y = σ ( a ) = 1 1 + e x p ( − a )
現在給定輸入,目标變量的條件機率分布是一個伯努利分布:
p(t|x,w)=y(x,w)t[1−y(x,w)]1−t p ( t | x , w ) = y ( x , w ) t [ 1 − y ( x , w ) ] 1 − t
如果是考慮一個由獨立的觀測組成的訓練集,由負對數似然函數就是由一個交叉熵誤差函數:
E(w)=−∑[tnlnyn+(1−tn)ln(1−yn)] E ( w ) = − ∑ [ t n ln y n + ( 1 − t n ) ln ( 1 − y n ) ]
有人提出在分類問題上,使用交叉熵誤差函數會使訓練速度更快,同時提高泛化能力。
現在有k個二進制分類問題,則目标向量的條件機率:
p(t|x,w)=∏(yk(x,w)tk[1−yk(x,w)]1−tk) p ( t | x , w ) = ∏ ( y k ( x , w ) t k [ 1 − y k ( x , w ) ] 1 − t k )
就可以推出誤差函數:
E(w)=−∑∑[tnklnynk+(1−tnk)ln(1−ynk)] E ( w ) = − ∑ ∑ [ t n k ln y n k + ( 1 − t n k ) ln ( 1 − y n k ) ]
假設使用标準的兩層神經網絡,第一層的權向量由各個輸出共享,而線上性模型中每個分類問題都是獨立解決。第一層被看成進行非線性的特征提取,不同的輸出之間共享特征可以節省計算量。
前面這些都是說明了對于不同問題,要選取不同的誤差函數,可以有效地進行計算提高計算能力和泛化能力。
參數最優化
我們把E(w)看作位于權空間的一個曲面。咋權空間中走一小步,從w到w+δw,誤差函數變為:δE=δw.T▽E(w)。由于E(w)是w光滑連續函數,則最小值位于權空間中誤差函數梯度等于零的位置上:
∇E(w)=0 ∇ E ( w ) = 0
如果最小值不在這個位置上,就沿着 −∇E(w) − ∇ E ( w )
方向走,進一步減小誤差。
但是在誤差函數上可能存在很多個駐點,梯度為零的那個駐點就是最小值,是以又提出了通過疊代的數值方法來計算最小值:
wτ+1=wτ+Δwτ w τ + 1 = w τ + Δ w τ
局部二次近似
這個是為了判斷所找的駐點就是最小值。
現在把誤差函數E(w’)在w出泰勒展開:
E(w)=E(w′)+(w−w′)Tb+12(w−w′)TH(w−w′) E ( w ) = E ( w ′ ) + ( w − w ′ ) T b + 1 2 ( w − w ′ ) T H ( w − w ′ )
其中b的定義:
b≡∇Ew=w′ b ≡ ∇ E w = w ′
海森矩陣H為:
(H)ij=∂E∂wi∂wj|w=w′ ( H ) i j = ∂ E ∂ w i ∂ w j | w = w ′
則梯度的局部近似為:
∇E=b+H(w−w′) ∇ E = b + H ( w − w ′ )
考慮一個特殊情況,在誤差函數最小值點w‘附近的二次近似。因為誤差函數在那點處為零,所示公式變成了:
E(w)=E(w∗)+12(w−w∗)TH(w−w∗) E ( w ) = E ( w ∗ ) + 1 2 ( w − w ∗ ) T H ( w − w ∗ )
其中H的特征值方程:
Hui=λiui H u i = λ i u i
uTiuj=δij u i T u j = δ i j
w−w∗=∑αiμi w − w ∗ = ∑ α i μ i
這樣誤差公式可以得到:
E(w)=E(w∗)+12∑λiα2i E ( w ) = E ( w ∗ ) + 1 2 ∑ λ i α i 2
其中H是正定矩陣。
這樣得到一個驗證方法:當求出一個駐點,可以通過海森矩陣是否是正定矩陣來判斷是否是最小值點。
使用梯度資訊
文中提到使用梯度資訊可以大幅度加快找到極小值點的速度。
在上面給出的誤差函數的二次近似中,誤差函數由w和b确定,包含w(w+3)/2個元素,W是w的次元。這個二次近似的極小值點的位置是以依賴于O(W2)個參數。如果不使用梯度資訊,必須進行O(w2)次函數求值,每次求值都需要O(w)個步驟。是以需要O(W3)的計算複雜度。
而使用梯度資訊,由于每次計算E的梯度都有W條資訊,預計找到極小值需要O(w)次梯度。通過反向誤差傳播,這樣的計算需要O(W)步驟,可以在O(W2)步驟内找到極小值。
梯度下降最優化
這一節講的是梯度下降的優化,主要介紹了梯度下降,批梯度下降、随機梯度下降。
最開始提出使用疊代數值的方式求得w的值,公式為:
wτ+1=wτ+Δwτ w τ + 1 = w τ + Δ w τ
現在更改更新的方式,每一次權值更新都是在負梯度方向上進行移動:
wτ+1=wτ−η∇E(wτ) w τ + 1 = w τ − η ∇ E ( w τ )
這種方法被稱為梯度下降,權值向量沿着誤差函數下降速度最快的方向移動。
也還有批量梯度法和共轭梯度法、拟牛頓法,這些算法都有:誤差函數在每次疊代時總是減小,除非權向量達到了局部或者全局的最小值。
現在講解線上梯度下降。
基于一組獨立觀測的最大似然函數的誤差函數由一個求和式構成,求和式每一項對應着一個資料點:
E(w)=∑En(w) E ( w ) = ∑ E n ( w )
,線上梯度也被稱作順序梯度下降或者随機梯度下降,使得權向量的更新每次隻依賴于一個資料點:
wτ+1=wτ−η∇E(wτ) w τ + 1 = w τ − η ∇ E ( w τ )