天天看點

PRML5.2--網絡訓練網絡訓練

網絡訓練

這一節主要是訓練網絡來獲得網絡中的權重。把神經網絡當作輸入變量x到輸出變量y的參數化非線性函數。使用與1.1節的方法對多項式拟合的問題,是以需要最小化平方和誤差。現在給定一個由輸入向量{xn}組成的訓練集,和對應的目标tn,最小化誤差函數:

PRML5.2--網絡訓練網絡訓練

回歸問題

假定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 τ )

繼續閱讀