反向传播算法(BP神经网络)

是谁在耳边,说“信号正向传播,误差反向传播” ?梦回遥远大三的计算智能课,三年前我可想不到居然有朝一日会重新"预习"它......每一堂课、一本书,当时只道是寻常,如今不经意想起,忽怀念这些瞬间。所谓成长,正是这些乏味却又鲜活的琐碎;所谓时光,正是这些不经意却弥足深刻的只言片语吧。目录一. 相关概念​二. 神经网络通用表示1. 一个神经元模型2. 全连接神经网络三....
摘要由CSDN通过智能技术生成

是谁在耳边,说“信号正向传播,误差反向传播” ?

梦回遥远大三的计算智能课,三年前我可想不到居然有朝一日会重新"预习"它......

每一堂课、一本书,当时只道是寻常,如今不经意想起,忽怀念这些瞬间。所谓成长,正是这些乏味却又鲜活的琐碎;所谓时光,正是这些不经意却弥足深刻的只言片语吧。


目录

一. 相关概念

​二. 神经网络通用表示

1. 一个神经元模型

2. 全连接神经网络

三. 前向传播算法

四. 反向传播算法

1. 采用批量梯度下降法获得参数w和b的更新公式

2. 通过链式法则和残差δ的定义求解代价函数的偏导

(1)对于输出层(L层)的权重参数w的偏导

(2)对于隐藏层(l层)的权重参数w的偏导

(3)对输出层和隐藏层的偏置参数b的偏导

(4)公式总结

3.对N个训练样本集用BP算法更新参数的步骤


一. 相关概念

后向传播学习的前馈型神经网络(Back Propagation Feed-forward Neural Network)简称BPNN,不严谨地说BP一般就是BPNN。后向传播是一种学习方法、规则,体现网络的训练过程;前馈型网络是一种结构,体现网络架构。

后向传播\neq反馈型网络。常见学习规则除了后向传播还有梯度下降等。

  • 前(正)向传播网络
  • 后(反)向传播网络:反向传播是指通过比较输出层的实际输出和预期的结果,得到误差,然后通过相关的误差方程式调整最后一个隐含层到输出层之间的网络权重,之后从最后一个隐含层向倒数第二隐含层进行误差反馈,调整它们之间的网络权重,以此类推,直到输人层与第一隐含层之间的网络权重调整为止。
  • 前馈型网络:各神经元从输入层开始单向传播,只接收前一级输入,并输出到下一级,直至输出层。整个网络中无反馈,可用一个有向无环图表示。

  • 反馈型网络:输出层中存在着一个反馈回路到输入层作为输入层的一个输入,也可以自己到自己,可以理解为自控系统方框图中的反馈回路,可用有向循环图或者无向图表示。

​二. 神经网络通用表示

1. 一个神经元模型

上图x1,x2,⋯,xi,⋯,xn​表示神经元的n个输入,w1,w2,⋯,wi,⋯,wn​表示对应输入的权重参数(链接权重),神经元对输入x权重w进行加权求和得到加权输入z,也就是神经元的状态。随后将z传递给激活函数f(⋅),得到激活值,对于单个神经元,也就是其输出值y。其中激活函数f(⋅)可以为多种激活函数,且激活函数均为非线性函数。

2. 全连接神经网络

  • 在第 l 层神经元,用 n_{l} 表示这层神经元的个数,i\in \{1,2,...,n_{l}\}
  • x_{1}...x_{n_{l}}为输入,即\tiny (x_{1}^{(1)},x_{2}^{(1)},...,x_{i}^{(1)},...,x_{n_{l}}^{(1)})^{T}x_{i}表示第 i 个输入。
  • y_{1}...y_{n_{l}}为期望输出,即\tiny (y_{1}^{(l)},y_{2}^{(l)},...,y_{i}^{(l)},...,y_{n_{l}}^{(l)})^{T}y_{i}表示第 i 个期望输出。
  • \tiny z^{(l)}=\left( z_{1}^{(l)}, z_{2}^{(l)}, \cdots,z{_{i}}^{(l)},\cdots, z_{n_{l}}^{(l)}\right) ^{T}表示第 l 层的加权输出或神经元状态,z{_{i}}^{(l)}表示第 l 层的第 i 个神经元的加权输出。
  • a^{(l)}=\left( a_{1}^{(l)}, a_{2}^{(l)}, \cdots,a{_{i}}^{(l)},\cdots, a_{n_{l}}^{(l)}\right) ^{T}表示第 l 层的激活输出(实际输出),a{_{i}}^{(l)}表示第 l 层的第 i 个神经元的激活输出(实际输出)。
  • w{_{ij}}^{(l)}是权重矩阵W^{(l)}中的元素,表示前一层 l-1 层第j个神经元的第i个加权
  • b{^{(l)}=\left( b_{1}^{(l)}, b_{2}^{(l)}, \cdots,b{_{i}}^{(l)},\cdots, b_{n_{l}}^{(l)}\right) ^{T}表示从上一层到当前层 l 层的偏置。b{_{i}}^{(l)}表示当前层第 l 层第i个神经元的偏置。

三. 前向传播算法

第2层第1个加权输出 z{_{1}}^{(2)}=\omega {_{11}}^{(2)}x_{1}+\omega {_{12}}^{(2)}x_{2}+\omega {_{13}}^{(2)}x_{3}+b{_{1}}^{(2)}

第2层第1个激活值    a{_{1}}^{(2)}=f(z{_{1}}^{(2)})

⋯⋯

可总结出,第 l 层神经元的状态及激活值为(z,a,b都是向量形式):

\begin{aligned} \boldsymbol{z}^{(l)} &=W^{(l)} \boldsymbol{a}^{(l-1)}+\boldsymbol{b}^{(l)} \\ \boldsymbol{a}^{(l)} &=f\left(\boldsymbol{z}^{(l)}\right) \end{aligned}

对于 L 层网络,正向传播的前馈型神经网络传递过程如下:

\tiny [\boldsymbol{x}=\boldsymbol{a}^{(1)} ]\rightarrow [\boldsymbol{a}^{(2)}=f(\boldsymbol{z}^{(2)}) ]\rightarrow \cdots \rightarrow [\boldsymbol{a}^{(l)}=f(\boldsymbol{z}^{(l)}) ]\rightarrow \cdots \rightarrow [\boldsymbol{a}^{(L)}=f(\boldsymbol{z}^{(L)})=\boldsymbol{y}]

前向传播算法用于计算模型最终的输出结果;后向传播算法用于减小模型输出结果与实际结果之前的误差,通过调整参数权重来优化模型。因此,神经网络,就是通过前向传播与后向传播算法的循环迭代来训练模型,进而进行预测或者分类。

四. 反向传播算法

1. 采用批量梯度下降法获得参数\tiny w{_{ij}}^{(l)}\tiny b{_{i}}^{(l)}的更新公式

训练方式为梯度下降法,目的是求使代价函数最小的参数值。具体方法为,一步步地循环重复将参数值更新为:上一次参数 - 代价函数对上一次参数值的导数。每一步更新都用到所有的训练样本叫做批量梯度下降。

    • 7
      点赞
    • 20
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值