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(j1)+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)lz(j)z(j+1)=z(j+1)la(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)la(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以上是关于BP算法的原理解释和推导的主要内容,如果未能解决你的问题,请参考以下文章

一文彻底搞懂BP算法:原理推导+数据演示+项目实战(上篇)

BP算法基本原理推导----《机器学习》笔记

BP算法完整推导 2.0 (下)

bp神经网络算法介绍 bp神经网络算法简介

神经网络——BP算法

用Matlab算BP神经网络的具体算法?