BP算法的原理解释和推导
Posted Spuer_Tiger
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BP算法的原理解释和推导相关的知识,希望对你有一定的参考价值。
BP算法的原理解释和推导
已知的神经网络结构:
且已知的条件:
- a ( j ) = f ( z ( j ) ) \\mathbf{a}^{\\left( \\mathbf{j} \\right)}=\\mathbf{f}\\left( \\mathbf{z}^{\\left( \\mathbf{j} \\right)} \\right) a(j)=f(z(j))
- z ( j ) = W ( j ) a ( j − 1 ) + b ( j ) ,而 θ ( j ) = { W ( j ) , b ( j ) } \\mathbf{z}^{\\left( \\mathbf{j} \\right)}=\\mathbf{W}^{\\left( \\mathbf{j} \\right)}\\mathbf{a}^{\\left( \\mathbf{j}-1 \\right)}+\\mathbf{b}^{\\left( \\mathbf{j} \\right)}\\text{,而}\\mathbf{\\theta }^{\\left( \\mathbf{j} \\right)}=\\left\\{ \\mathbf{W}^{\\left( \\mathbf{j} \\right)},\\mathbf{b}^{\\left( \\mathbf{j} \\right)} \\right\\} z(j)=W(j)a(j−1)+b(j),而θ(j)={W(j),b(j)}
对于上图,如果我们想得到 ∂ l ∂ θ ( j ) \\frac{\\partial \\mathbf{l}}{\\partial \\mathbf{\\theta }^{\\left( \\mathbf{j} \\right)}} ∂θ(j)∂l,可以通过 z ( j ) \\mathbf{z}^{\\left( \\mathbf{j} \\right)} z(j)建立l和θ(j)之间的联系,即 ∂ l ∂ θ ( j ) = ∂ l ∂ z ( j ) ∗ ∂ z ( j ) ∂ θ ( j ) \\frac{\\partial \\mathbf{l}}{\\partial \\mathbf{\\theta }^{\\left( \\mathbf{j} \\right)}}=\\frac{\\partial \\mathbf{l}}{\\partial \\mathbf{z}^{\\left( \\mathbf{j} \\right)}}*\\frac{\\partial \\mathbf{z}^{\\left( \\mathbf{j} \\right)}}{\\partial \\mathbf{\\theta }^{\\left( \\mathbf{j} \\right)}} ∂θ(j)∂l=∂z(j)∂l∗∂θ(j)∂z(j),而l和z(j)之间的联系则可以通过z(j+1)进行建立 ∂ l ∂ z ( j ) = ∂ l ∂ z ( j + 1 ) ∗ ∂ z ( j + 1 ) ∂ z ( j ) = ∂ l ∂ z ( j + 1 ) ∗ ∂ z ( j + 1 ) ∂ a ( j ) ∗ ∂ a ( j ) ∂ z ( j ) \\frac{\\partial \\mathbf{l}}{\\partial \\mathbf{z}^{\\left( \\mathbf{j} \\right)}}=\\frac{\\partial \\mathbf{l}}{\\partial \\mathbf{z}^{\\left( \\mathbf{j}+1 \\right)}}*\\frac{\\partial \\mathbf{z}^{\\left( \\mathbf{j}+1 \\right)}}{\\partial \\mathbf{z}^{\\left( \\mathbf{j} \\right)}}=\\frac{\\partial \\mathbf{l}}{\\partial \\mathbf{z}^{\\left( \\mathbf{j}+1 \\right)}}*\\frac{\\partial \\mathbf{z}^{\\left( \\mathbf{j}+1 \\right)}}{\\partial \\mathbf{a}^{\\left( \\mathbf{j} \\right)}}*\\frac{\\partial \\mathbf{a}^{\\left( \\mathbf{j} \\right)}}{\\partial \\mathbf{z}^{\\left( \\mathbf{j} \\right)}} ∂z(j)∂l=∂z(j+1)∂l∗∂z(j)∂z(j+1)=∂z(j+1)∂l∗∂a(j)∂z(j+1)∗∂z(j)∂a(j),由此,我们得到 ∂ l ∂ θ ( j ) = ∂ l ∂ z ( j + 1 ) ∗ ∂ z ( j + 1 ) ∂ a ( j ) ∗ ∂ a ( j ) ∂ z ( j ) ∗ ∂ z ( j ) ∂ θ ( j ) \\frac{\\partial \\mathbf{l}}{\\partial \\mathbf{\\theta }^{\\left( \\mathbf{j} \\right)}}=\\frac{\\partial \\mathbf{l}}{\\partial \\mathbf{z}^{\\left( \\mathbf{j}+1 \\right)}}*\\frac{\\partial \\mathbf{z}^{\\left( \\mathbf{j}+1 \\right)}}{\\partial \\mathbf{a}^{\\left( \\mathbf{j} \\right)}}*\\frac{\\partial \\mathbf{a}^{\\left( \\mathbf{j} \\right)}}{\\partial \\mathbf{z}^{\\left( \\mathbf{j} \\right)}}*\\frac{\\partial \\mathbf{z}^{\\left( \\mathbf{j} \\right)}}{\\partial \\mathbf{\\theta }^{\\left( \\mathbf{j} \\right)}} ∂θ(j)∂l=∂z(j+1)∂l∗∂a(j)∂z(j+1)∗∂z(j)∂a(j)∗∂θ(j)∂z(j)(链式求导法则),然后不断的迭代求导下去。
这里我们细心观察下式:
其中,
∂
z
(
j
+
1
)
∂
a
(
j
)
=
w
(
j
+
1
)
\\frac{\\partial \\mathbf{z}^{\\left( \\mathbf{j}+1 \\right)}}{\\partial \\mathbf{a}^{\\left( \\mathbf{j} \\right)}}=\\mathbf{w}^{\\left( \\mathbf{j}+1 \\right)}
∂a(j)∂z(j+1)=w