http://blog.csdn.net/u011239443/article/details/74859614
2.4 反向传播的四个基本方程
(BP1):δL=∇aC⊙σ′(zL)
(BP2):δl=((wl+1)Tδl+1)⊙σ′(zl)
(BP3):∂C∂blj=δlj
(BP4):∂C∂wljk=al−1kδlj
问题一:
另一种反向传播方程的表示方式: 我已经给出了使用 Hadamard 乘积的反向传播的公式(尤其是 (BP1) 和 (BP2))。如果你对这种特殊的乘积不熟悉,可能会有一些困惑。下面还有一种表示方式,那就是基于传统的矩阵乘法,某些读者可能会觉得很有启发。(1)证明(BP1) 可以写成:
δL=Σ′(zL)∇aC
其中Σ′(zL)是一个方阵,其对⻆线的元素是σ′(zLj),其他的元素均是 0。注意,这个矩阵通过一般的矩阵乘法作用在 ∇aC 上。
设:∇aC=⎛⎝⎜⎜⎜⎜c1c2...cn⎞⎠⎟⎟⎟⎟
σ′(zL)=⎛⎝⎜⎜⎜⎜σ1σ2...σn⎞⎠⎟⎟⎟⎟
则:(BP1):δL=∇aC⊙σ′(zL)=⎛⎝⎜⎜⎜⎜c1σ1c2σ2...cnσn⎞⎠⎟⎟⎟⎟
由:Σ′(zL)=⎛⎝⎜⎜⎜⎜⎜σ1σ20…0σn−1σn⎞⎠⎟⎟⎟⎟⎟
得:Σ′(zL)∇aC=⎛⎝⎜⎜⎜⎜⎜σ1σ20…0σn−1σn⎞⎠⎟⎟⎟⎟⎟⎛⎝⎜⎜⎜⎜c1c2...cn⎞⎠⎟⎟⎟⎟=⎛⎝⎜⎜⎜⎜c1σ1c2σ2...cnσn⎞⎠⎟⎟⎟⎟=δL
问题二:
证明 (BP2) 可以写成
δl=Σ′(zl)(wl+1)Tδl+1
设:w=(w1,w2,...,wn)
δ=⎛⎝⎜⎜⎜⎜δ1δ2...δn⎞⎠⎟⎟⎟⎟
则:δl=⎛⎝⎜⎜⎜⎜w1δ1σ1w2δ2σ1...wnδnσn⎞⎠⎟⎟⎟⎟
Σ′(zl)(wl+1)Tδl+1=⎛⎝⎜⎜⎜⎜⎜σ1σ20…0σn−1σn⎞⎠⎟⎟⎟⎟⎟⎛⎝⎜⎜⎜⎜w1w2...wn⎞⎠⎟⎟⎟⎟⎛⎝⎜⎜⎜⎜δ1δ2...δn⎞⎠⎟⎟⎟⎟=⎛⎝⎜⎜⎜⎜w1δ1σ1w2δ2σ1...wnδnσn⎞⎠⎟⎟⎟⎟=δl
问题三
结合(1)和(2)证明
δl=Σ′(zl)(wl+1)T...Σ′(zL−1)(wL)TΣ′(zL)∇aC
δl=Σ′(zl)(wl+1)Tδl+1
=Σ′(zl)(wl+1)TΣ′(zl+1)(wl+2)Tδl+2
=...=Σ′(zl)(wl+1)T...Σ′(zL−1)(wL)TδL
=Σ′(zl)(wl+1)T...Σ′(zL−1)(wL)TΣ′(zL)∇aC
2.5 四个基本方程的证明
问题一
证明方程 (BP3) 和 (BP4)。
δlj=∂C∂blj∂blj∂zlj=∂C∂blj∂(zlj−∑kwljkal−1k)∂zlj=∂C∂blj
∂C∂wljk=al−1kδlj=>∂C∂wljk=al−1k∂C∂zlj=>∂zlj∂wljk=al−1k
由于∂zlj∂wljk=∂(∑jwljkal−1k+blj)∂wljk=al−1k,所以命题成立。
2.6 反向传播算法
问题一
使用单个修正的神经元的反向传播。假设我们改变一个前馈网络中的单个神经元,使得那个神经元的输出是 f(∑jwjxj+b),其中 f 是和 S 型函数不同的某一函数。我们如何调整反向传播算法?
把σ()换成f()
问题二
线性神经元上的反向传播假设我们将非线性神经元的 σ 函数替换为 σ(z) = z。重写反向传播算法。
(2)中 al=zl
(3)中 δL=∇aC
(4)中δl=((wl+1)Tδl+1)
