文章目錄
- 補充知識:? 和 ⊙ 運算符詳解
- ? (nabla) 運算符
- ⊙ (圓圈點) 運算符
- 反向傳播基本公式
- 計算圖和基本定義
- BP1:輸出層誤差推導
- BP1公式的重要性
- 實際例子
- BP2第 l l l層誤差推導
- BP3 :損失函數關于偏置(b)偏導的推導
- BP4: 損失函數關于權值(w)偏導推導
補充知識:? 和 ⊙ 運算符詳解
- 在神經網絡的反向傳播算法中,我們經常會遇到像 δ L = ? a L ⊙ f ′ ( z L ) δ? = ??L ⊙ f'(z?) δL=?a?L⊙f′(zL) 這樣的表達式。讓我們來深入探討其中的 ? (nabla) 和 ⊙ (圓圈點) 運算符。
? (nabla) 運算符
-
? 符號在數學中被稱為 “nabla” 或 “del” 運算符,它表示梯度(gradient)。在神經網絡中:
-
??L 表示損失函數 L 相對于網絡最后一層激活輸出 a? 的梯度
-
這是一個向量,其中每個元素是損失函數對相應激活值的偏導數
-
數學表達式為: ? a L = [ ? L / ? a 1 , ? L / ? a 2 , . . . , ? L / ? a n ] T ??L = [?L/?a?, ?L/?a?, ..., ?L/?a?]? ?a?L=[?L/?a1?,?L/?a2?,...,?L/?an?]T
-
在反向傳播中, ? a L ??L ?a?L 告訴我們如果稍微改變輸出層的激活值,損失函數會如何變化。這是誤差從損失函數向后傳播的第一步。
⊙ (圓圈點) 運算符
-
⊙ 符號表示逐元素乘法(也稱為 Hadamard 乘積):
-
它作用于兩個相同維度的向量或矩陣。不是矩陣乘法,而是簡單地對相應位置的元素相乘
-
數學表達式為: ( A ⊙ B ) i j = A i j × B i j (A ⊙ B)?? = A?? × B?? (A⊙B)ij?=Aij?×Bij?
反向傳播基本公式
方程 | 含義 |
---|---|
δ L = ? a L ⊙ f ′ ( z L ) \delta^{L} = \nabla_{a} L \odot f^{\prime}(z^{L}) δL=?a?L⊙f′(zL) | BP1 輸出層誤差 |
δ l = ( ( w l ) T δ l + 1 ) ⊙ f ′ ( z l ) \delta^{l} = ((w^{l})^{T} \delta^{l+1}) \odot f^{\prime}(z^{l}) δl=((wl)Tδl+1)⊙f′(zl) | BP2 第 l l l 層誤差 |
? L ? b i l = δ i l \frac{\partial L}{\partial b_{i}^{l}} = \delta_{i}^{l} ?bil??L?=δil? | BP3 損失函數關于偏置(b)的偏導 |
? L ? w i , j l = a j l ? 1 δ i l \frac{\partial L}{\partial w_{i,j}^{l}} = a_{j}^{l-1} \delta_{i}^{l} ?wi,jl??L?=ajl?1?δil? | BP4 損失函數關于權值(w)的偏導 |
計算圖和基本定義
- 損失函數: L = 1 2 ( y ? a l ) 2 L=\frac{1}{2}(y-a^l)^2 L=21?(y?al)2
- 通項: a l = δ ( z l ) = δ ( w l a l ? 1 + b l ) a^l=\delta(z^l)=\delta(w^la^{l-1}+b^l) al=δ(zl)=δ(wlal?1+bl)
- 定義第 l l l層的第 i i i個神經元的誤差為 δ i l \delta_i^l δil?
δ i l = ? L ? z i l \delta_i^l=\frac{\partial L}{\partial z_i^l} δil?=?zil??L?
BP1:輸出層誤差推導
- 前置公式
- 損失函數: L = 1 2 ( y ? a l ) 2 L=\frac{1}{2}(y-a^l)^2 L=21?(y?al)2
- 第 l l l層神經元關系 a l = δ ( z l ) a^l = \delta(z^l) al=δ(zl)
-
采用上圖中 l ? 1 l-1 l?1層 z 1 z_1 z1?節點為例
δ = ? L ? z 1 l = ? L ? a 1 l × ? a 1 l ? z 1 l = ? [ 1 2 ( y 1 ? a 1 l ) 2 ] ? a 1 l × ? a 1 l ? z 1 l = 2 × 1 2 ( a 1 l ? y 1 ) × ? a 1 l ? z 1 l = ( a 1 l ? y 1 ) δ ′ ( z 1 l ) = ? a L ⊙ f ′ ( z 1 L ) \begin{align*} \delta &=\frac{\partial L}{\partial z_1^l} \\ &=\frac{\partial L}{\partial a_1^l} \times \frac{\partial a_1^l}{\partial z_1^l} \\ &=\frac{\partial [\frac{1}{2}(y_1-a_1^l)^2]}{\partial a_1^l}\times \frac{\partial a_1^l}{\partial z_1^l} \\ &=2\times \frac{1}{2} (a_1^l-y_1) \times \frac{\partial a_1^l}{\partial z_1^l} \\ &=(a_1^l-y_1) \delta^{'}(z_1^l) \\ &= \nabla_{a} L \odot f^{\prime}(z_1^{L}) \\ \end{align*} δ?=?z1l??L?=?a1l??L?×?z1l??a1l??=?a1l??[21?(y1??a1l?)2]?×?z1l??a1l??=2×21?(a1l??y1?)×?z1l??a1l??=(a1l??y1?)δ′(z1l?)=?a?L⊙f′(z1L?)? -
總結:輸出層誤差通用公式為: δ L = ? a L ⊙ f ′ ( z L ) \delta^{L} = \nabla_{a} L \odot f^{\prime}(z^{L}) δL=?a?L⊙f′(zL)
-
f ′ ( z L ) f'(z?) f′(zL) 是激活函數的導數在 z L z? zL 處的值
-
這個逐元素乘法將梯度信息與激活函數的局部變化率結合起來
BP1公式的重要性
- 這個 δ? 公式是輸出層的誤差項,它是反向傳播的起點。通過它,誤差可以繼續向網絡的前層傳播:
- ? a L ??L ?a?L告訴我們損失函數對輸出的敏感度
- f ′ ( z L ) f'(z?) f′(zL)告訴我們激活函數在當前輸入下的變化率
- 它們的逐元素乘積給出了完整的誤差信號 δ L δ? δL
實際例子
- 假設我們有一個簡單的輸出層,使用 sigmoid 激活函數:
- 設 a L = [ 0.8 , 0.3 ] , y = [ 1 , 0 ] a? = [0.8, 0.3], y = [1, 0] aL=[0.8,0.3],y=[1,0] (真實標簽)
- 使用平方誤差損失: L = ? ∣ ∣ y ? a L ∣ ∣ 2 L = ?||y - a?||2 L=?∣∣y?aL∣∣2
- 則 ? a L = a L ? y = [ ? 0.2 , 0.3 ] ??L = a? - y = [-0.2, 0.3] ?a?L=aL?y=[?0.2,0.3]
- sigmoid 的導數 f ′ ( z ) = a ( 1 ? a ) f'(z) = a(1-a) f′(z)=a(1?a),設 f ′ ( z L ) = [ 0.16 , 0.21 ] f'(z?) = [0.16, 0.21] f′(zL)=[0.16,0.21]
- 那么 δ L = [ ? 0.2 , 0.3 ] ⊙ [ 0.16 , 0.21 ] = [ ? 0.032 , 0.063 ] δ? = [-0.2, 0.3] ⊙ [0.16, 0.21] = [-0.032, 0.063] δL=[?0.2,0.3]⊙[0.16,0.21]=[?0.032,0.063]
BP2第 l l l層誤差推導
- 前置公式:
- z l + 1 = w l + 1 a l + b l + 1 z^{l+1}=w^{l+1}a^{l}+b^{l+1} zl+1=wl+1al+bl+1
- a l + 1 = δ ( z l ) a^{l+1}=\delta(z^l) al+1=δ(zl)
δ l = ? L ? z l = ? L ? z i l + 1 × ? z i l + 1 ? z i l = δ i l + 1 × ? z i l + 1 a l × ? a l ? z l = δ i l + 1 × ( w l ) T × δ ′ ( z l ) = ( ( w l ) T δ i l + 1 ) ⊙ δ ′ ( z l ) \begin{align*} \delta^{l} &= \frac{\partial L}{\partial z^{l}}\\ &=\frac{\partial L}{\partial z_i^{l+1}} \times \frac{\partial z_i^{l+1}}{\partial z_i^{l}} \\ &=\delta_i^{l+1} \times \frac{\partial z_i^{l+1}}{a^l} \times \frac{\partial a^l}{\partial z^{l}}\\ &=\delta_i^{l+1} \times (w^l)^T \times \delta^{'}(z^l)\\ &=((w^l)^T \delta_i^{l+1}) \odot \delta^{'}(z^l) \end{align*} δl?=?zl?L?=?zil+1??L?×?zil??zil+1??=δil+1?×al?zil+1??×?zl?al?=δil+1?×(wl)T×δ′(zl)=((wl)Tδil+1?)⊙δ′(zl)?
- 總結:BP2第 l l l層誤差公式為: δ l = ( ( w l ) T δ l + 1 ) ⊙ f ′ ( z l ) \delta^{l} = ((w^{l})^{T} \delta^{l+1}) \odot f^{\prime}(z^{l}) δl=((wl)Tδl+1)⊙f′(zl)
BP3 :損失函數關于偏置(b)偏導的推導
-
前置公式
- a 1 l = δ ( z 1 l ) a_1^l=\delta(z_1^l) a1l?=δ(z1l?)和 a 2 l = δ ( z 2 l ) a_2^l=\delta(z_2^l) a2l?=δ(z2l?)
- z l = w l a l ? 1 + b l z^l=w^la^{l-1}+b^l zl=wlal?1+bl
-
求上圖中 b 1 b_1 b1?的偏導
? L ? b 1 = ? L ? z 1 l × ? z 1 l ? b 1 l = δ 1 l × 1 = δ 1 l \begin{align*} \frac{\partial L}{\partial b_1} &=\frac{\partial L}{\partial z_1^l} \times \frac{\partial z_1^l}{\partial b_1^l} \\ &= \delta_1^l \times 1 \\ &= \delta_1^l \end{align*} ?b1??L??=?z1l??L?×?b1l??z1l??=δ1l?×1=δ1l?? -
求上圖中 b 2 b_2 b2?的偏導
? L ? b 2 = ? L ? z 2 l × ? z 2 l ? b 2 l = δ 2 l × 1 = δ 2 l \begin{align*} \frac{\partial L}{\partial b_2} &=\frac{\partial L}{\partial z_2^l} \times \frac{\partial z_2^l}{\partial b_2^l} \\ &= \delta_2^l \times 1 \\ &= \delta_2^l \end{align*} ?b2??L??=?z2l??L?×?b2l??z2l??=δ2l?×1=δ2l?? -
總結:BP3 損失函數關于偏置(b)偏導為: ? L ? b i l = δ i l \frac{\partial L}{\partial b_{i}^{l}} = \delta_{i}^{l} ?bil??L?=δil?
BP4: 損失函數關于權值(w)偏導推導
- 前置公式
- z l = w l a l ? 1 + b l z^l=w^la^{l-1}+b^l zl=wlal?1+bl
- δ i l = ? L ? z i l \delta_i^l=\frac{\partial L}{\partial z_i^l} δil?=?zil??L?
- 詳細推導過程:
? L ? w i , j l = ? L ? z i l × ? z i l ? w i , j l = ? L ? z i l × a j l ? 1 = δ i l × a j l ? 1 = a j l ? 1 × δ i l \begin{align*} \frac{\partial L}{\partial w_{i,j}^l} &=\frac{\partial L}{\partial z_i^l} \times \frac{\partial z_i^l}{\partial w_{i,j}^l} \\ &=\frac{\partial L}{\partial z_i^l} \times a_j^{l-1} \\ &= \delta_i^l \times a_j^{l-1} \\ &= a_j^{l-1} \times \delta_i^l \end{align*} ?wi,jl??L??=?zil??L?×?wi,jl??zil??=?zil??L?×ajl?1?=δil?×ajl?1?=ajl?1?×δil?? - 總結:BP4: 損失函數關于權值(w)偏導為: ? L ? w i , j l = a j l ? 1 δ i l \frac{\partial L}{\partial w_{i,j}^{l}} = a_{j}^{l-1} \delta_{i}^{l} ?wi,jl??L?=ajl?1?δil?