Stanford UFLDL教程 用反向传导思想求导
用反向傳導思想求導
Contents[hide]
|
簡介
在 反向傳導算法一節中,我們介紹了在稀疏自編碼器中用反向傳導算法來求梯度的方法。事實證明,反向傳導算法與矩陣運算相結合的方法,對于計算復雜矩陣函數(從矩陣到實數的函數,或用符號表示為:從 )的梯度是十分強大和直觀的。
首先,我們回顧一下反向傳導的思想,為了更適合我們的目的,將其稍作修改呈現于下:
符號扼要重述:
- 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 做輸入的神經網絡的實例,通過四步進行計算,文字以及圖形描述如下:
該網絡的權重和激勵函數如下表所示:
| 1 | A | f(zi) = zi (單位函數) |
| 2 | I (單位向量) | f(zi) = zi ?xi |
| 3 | N/A |
為了使 J(z(3)) = F(x) ,我們可令 。
一旦我們將 F 看成神經網絡,梯度 就很容易求了——使用反向傳導得到:
| 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 是特征矩陣,ε 是一個常數。
我們希望求得 。像上面那樣,我們把這一項看做一個神經網絡的實例:
該網絡的權重和激勵函數如下表所示:
| 1 | I | |
| 2 | V | f(zi) = zi |
| 3 | I | f(zi) = zi + ε |
| 4 | N/A |
為使 J(z(4)) = F(x) ,我們可令 。
一旦我們把 F 看做一個神經網絡,梯度 變得很容易計算——使用反向傳導得到:
| 4 | (VssT + ε) | ||
| 3 | f'(zi) = 1 | VssT | |
| 2 | f'(zi) = 1 | ssT | |
| 1 | f'(zi) = 2zi | s |
因此
示例3:ICA重建代價
回顧 獨立成分分析(ICA) 一節重建代價一項: ,其中W 是權重矩陣, x 是輸入。
我們希望計算 ——對于權重矩陣的導數,而不是像前兩例中對于輸入的導數。不過我們仍然用類似的方法處理,把該項看做一個神經網絡的實例:
該網絡的權重和激勵函數如下表所示:
| 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:
| 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 的梯度(原諒我在這里稍稍濫用了符號):
中英文對照
總結
以上是生活随笔為你收集整理的Stanford UFLDL教程 用反向传导思想求导的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Stanford UFLDL教程 数据预
- 下一篇: Stanford UFLDL教程 稀疏编