以下是公式一推導出公式二的過程。
-
表達式一
? E ? w j k = ? 2 ( t k ? o k ) ? sigmoid ( ∑ j w j k ? o j ) ? ( 1 ? sigmoid ( ∑ j w j k ? o j ) ) ? ? ? w j k ( ∑ j w j k ? o j ) \frac{\partial E}{\partial w_{jk}} = -2(t_k - o_k) \cdot \text{sigmoid}\left(\sum_j w_{jk} \cdot o_j\right) \cdot (1 - \text{sigmoid}\left(\sum_j w_{jk} \cdot o_j\right)) \cdot \frac{\partial}{\partial w_{jk}} \left(\sum_j w_{jk} \cdot o_j\right) ?wjk??E?=?2(tk??ok?)?sigmoid(j∑?wjk??oj?)?(1?sigmoid(j∑?wjk??oj?))??wjk???(j∑?wjk??oj?) -
表達式二
? E ? w j k = ? 2 ( t k ? o k ) ? sigmoid ( ∑ j w j k ? o j ) ? ( 1 ? sigmoid ( ∑ j w j k ? o j ) ) ? o j \frac{\partial E}{\partial w_{jk}} = -2(t_k - o_k) \cdot \text{sigmoid}\left(\sum_j w_{jk} \cdot o_j\right) \cdot (1 - \text{sigmoid}\left(\sum_j w_{jk} \cdot o_j\right)) \cdot o_j ?wjk??E?=?2(tk??ok?)?sigmoid(j∑?wjk??oj?)?(1?sigmoid(j∑?wjk??oj?))?oj?
這是一個關于神經網絡中梯度計算的推導問題,主要運用了鏈式法則來進行求導推導,以下是詳細過程:
已知條件
已知要對 ? E ? w j , k \frac{\partial E}{\partial w_{j,k}} ?wj,k??E? 進行求導,表達式最初形式為:
? E ? w j , k = ? 2 ( t k ? o k ) ? sigmoid ( ∑ j w j , k ? o j ) ( 1 ? sigmoid ( ∑ j w j , k ? o j ) ) ? ? ( ∑ j w j , k ? o j ) ? w j , k \frac{\partial E}{\partial w_{j,k}} = -2(t_{k} - o_{k}) \cdot \text{sigmoid}(\sum_{j} w_{j,k} \cdot o_{j})(1 - \text{sigmoid}(\sum_{j} w_{j,k} \cdot o_{j})) \cdot \frac{\partial (\sum_{j} w_{j,k} \cdot o_{j})}{\partial w_{j,k}} ?wj,k??E?=?2(tk??ok?)?sigmoid(j∑?wj,k??oj?)(1?sigmoid(j∑?wj,k??oj?))??wj,k??(∑j?wj,k??oj?)?
這里 E E E 通常表示誤差, t k t_{k} tk? 是目標值, o k o_{k} ok? 是輸出值, w j , k w_{j,k} wj,k? 是權重, o j o_{j} oj? 是前一層神經元的輸出, sigmoid \text{sigmoid} sigmoid 是激活函數。
推導過程
- 重點關注 ? ( ∑ j w j , k ? o j ) ? w j , k \frac{\partial (\sum_{j} w_{j,k} \cdot o_{j})}{\partial w_{j,k}} ?wj,k??(∑j?wj,k??oj?)? 這一項。
- 根據求和求導的性質,對于 ∑ j w j , k ? o j \sum_{j} w_{j,k} \cdot o_{j} ∑j?wj,k??oj?,因為只有當 j j j 取特定值時, w j , k w_{j,k} wj,k? 才是變量(其他項的 w i , k w_{i,k} wi,k? 中 i ≠ j i \neq j i=j 對于當前求導來說是常量)。
- 那么 ∑ j w j , k ? o j \sum_{j} w_{j,k} \cdot o_{j} ∑j?wj,k??oj? 展開后,對 w j , k w_{j,k} wj,k? 求導時,除了包含 w j , k w_{j,k} wj,k? 的這一項,其他項都為 0(因為它們相對于 w j , k w_{j,k} wj,k? 是常數)。
- 而包含 w j , k w_{j,k} wj,k? 的這一項為 w j , k ? o j w_{j,k} \cdot o_{j} wj,k??oj?,根據求導公式 ( a x ) ′ = a (ax)^\prime = a (ax)′=a( a a a 為常數, x x x 為變量),對 w j , k ? o j w_{j,k} \cdot o_{j} wj,k??oj? 關于 w j , k w_{j,k} wj,k? 求導,結果就是 o j o_{j} oj?。
- 將 ? ( ∑ j w j , k ? o j ) ? w j , k = o j \frac{\partial (\sum_{j} w_{j,k} \cdot o_{j})}{\partial w_{j,k}} = o_{j} ?wj,k??(∑j?wj,k??oj?)?=oj? 代入原式,就得到了第二個表達式:
? E ? w j , k = ? 2 ( t k ? o k ) ? sigmoid ( ∑ j w j , k ? o j ) ( 1 ? sigmoid ( ∑ j w j , k ? o j ) ) ? o j \frac{\partial E}{\partial w_{j,k}} = -2(t_{k} - o_{k}) \cdot \text{sigmoid}(\sum_{j} w_{j,k} \cdot o_{j})(1 - \text{sigmoid}(\sum_{j} w_{j,k} \cdot o_{j})) \cdot o_{j} ?wj,k??E?=?2(tk??ok?)?sigmoid(j∑?wj,k??oj?)(1?sigmoid(j∑?wj,k??oj?))?oj?
綜上,通過對 ? ( ∑ j w j , k ? o j ) ? w j , k \frac{\partial (\sum_{j} w_{j,k} \cdot o_{j})}{\partial w_{j,k}} ?wj,k??(∑j?wj,k??oj?)? 進行求導并代入原式,就從第一個表達式推導出了第二個表達式。