用反向傳導思想求導 Contents [hide] 1簡介 2樣本 2.1樣本1:稀疏編碼中權重矩陣的目標函數 2.2樣本2:稀疏編碼中的平滑地形L1稀疏罰函數 2.3樣本3:ICA重建代價 3中英文對照 4中文譯者 簡介
在 反向傳導演算法一節中,我們介紹了在稀疏自編碼器中用反向傳導演算法來求梯度的方法。事實證明,反向傳導演算法與矩陣運算相結合的方法,對於計算複雜矩陣函數(從矩陣到實數的函數,或用符號表示為:從 )的梯度是十分強大和直觀的。
首先,我們回顧一下反向傳導的思想,為了更適合我們的目的,將其稍作修改呈現於下: 對第 nl 層(最後一層)中的每一個輸出單元i ,令 其中 J(z) 是我們的“目標函數”(稍後解釋)。 對 , 對第 l 層中的每個節點 i , 令 計算我們要的偏導數
符號扼要重述: l 是神經網路的層數 nl 第l層神經元的個數 是l 層第 i 個節點到第(l + 1) 層第 j 個節點的權重 是第l 層第 i 個單元的輸入 是第l 層第 i 個節點的激勵 是矩陣的Hadamard積或逐個元素乘積,對 矩陣A 和 B ,它們的乘積是 矩陣 ,即 f(l) 是第 l 層中各單元的激勵函數
假設我們有一個函數 F , F 以矩陣X 為參數產生一個實數。我們希望用反向傳導思想計算 F 關於 X 的梯度,即 。大致思路是將函數F 看成一個多層神經網路,並使用反向傳導思想求梯度。
為了實現這個想法,我們取目標函數為 J(z) ,當計算最後一層神經元的輸出時,會產生值F(X) 。對於中介層,我們將選擇激勵函數 f(l) 。
稍後我們會看到,使用這種方法,我們可以很容易計算出對於輸入 X 以及網路中任意一個權重的導數。
樣本
為了闡述如何使用反向傳導思想計算關於輸入的導數,我們要在樣本1,樣本2中用 稀疏編碼 章節中的兩個函數。在樣本3中,我們使用 獨立成分分析一節中的一個函數來說明使用此思想計算關於權重的偏導的方法,以及在這種特殊情況下,如何處理相互捆綁或重複的權重。
樣本1:稀疏編碼中權重矩陣的目標函數
回顧一下 稀疏編碼,當給定特徵矩陣 s 時,權重矩陣 A 的目標函數為:
我們希望求 F 對於 A 的梯度,即 。因為目標函數是兩個含A 的式子之和,所以它的梯度是每個式子的梯度之和。第二項的梯度很容易求,因此我們只考慮第一項的梯度。
第一項, ,可以看成一個用s 做輸入的神經網路的執行個體,通過四步進行計算,文字以及圖形描述如下: 把 A 作為第一層到第二層的權重。 將第二層的激勵減 x ,第二層使用了單位激勵函數。 通過單位權重將結果不變地傳到第三層。在第三層使用平方函數作為激勵函數。 將第三層的所有激勵相加。
該網路的權重和激勵函數如下表所示: 層 權重 激勵函數 f 1 A f(zi) = zi (單位函數) 2 I (單位向量) f(zi) = zi −xi 3 N/A
為了使 J(z(3)) = F(x) ,我們可令 。
一旦我們將 F 看成神經網路,梯度 就很容易求了——使用反向傳導得到: 層 激勵函數的導數f' Delta 該層輸入z 3 f'(zi) = 2zi f'(zi) = 2zi As − x 2 f'(zi) = 1 As 1 f'(zi) = 1 s
因此
樣本2:稀疏編碼中的平滑地形L1稀疏罰函數
回顧 稀疏編碼一節中對 s 的平滑地形L1稀疏罰函數:
其中 V 是分組矩陣, s 是特徵矩陣,ε 是一個常數。
我們希望求得 。像上面那樣,我們把這一項看做一個神經網路的執行個體:
該網路的權重和激勵函數如下表所示: 層 權重 激勵函數 f 1 I 2 V f(zi) = zi 3 I f(zi) = zi + ε 4 N/A
為使 J(z(4)) = F(x) ,我們可令 。
一旦我們把 F 看做一個神經網路,梯度 變得很容易計算——使用反向傳導得到: 層 激勵函數的導數 f' Delta 該層輸入z 4 (VssT + ε) 3 f'(zi) = 1 VssT 2 f'(zi) = 1 ssT 1 f'(zi) = 2zi s
因此
樣本3:ICA重建代價
回顧 獨立成分分析(ICA) 一節重建代價一項: ,其中W 是權重矩陣, x 是輸入。
我們希望計算 ——對於權重矩陣的導數,而不是像前兩例中對於輸入的導數。不過我們仍然用類似的方法處理,把該項看做一個神經網路的執行個體:
該網路的權重和激勵函數如下表所示: 層 權重 激勵函數 f 1 W f(zi) = zi 2 WT f(zi) = zi 3 I f(zi) = zi −xi 4 N/A
為使 J(z(4)) = F(x) ,我們可令 。
既然我們可將 F 看做神經網路,我們就能計算出梯度 。然而,我們現在面臨的難題是W 在網路中出現了兩次。幸運的是,可以證明如果 W 在網路中出現多次,那麼對於 W 的梯度是對網路中每個W 執行個體的梯度的簡單相加(你需要自己給出對這一事實的嚴格證明來說服自己)。知道這一點後,我們將首先計算delta: 層 激勵函數的導數 f' Delta 該層輸入z 4 f'(zi) = 2zi f'(zi) = 2zi (WTWx − x) 3 f'(zi) = 1 WTWx 2 f'(zi) = 1 Wx 1 f'(zi) = 1 x
為計算對於 W 的梯度,首先計算對網路中每個 W 執行個體的梯度。
對於 WT :
對於 W :
最後進行求和,得到對於 W 的最終梯度,注意我們需要對 WT 梯度進行轉置,來得到關於 W 的梯度(原諒我在這裡稍稍濫用了符號):
中英文對照 反向傳導 backpropagation 稀疏編碼 sparse coding 權重矩陣 weight matrix 目標函數 objective 平滑地形L1稀疏罰函數 Smoothed topographic L1 sparsity penalty 重建代價 reconstruction cost 稀疏自編碼器 sparse autoencoder 梯度 gradient 神經網路 neural network 神經元 neuron 激勵 activation 激勵函數 activation function 獨立成分分析 independent component analysis 單位激勵函數 identity activation function 平方函數 square function 分組矩陣 grouping matrix 特徵矩陣 feature matrix