深度学习-BP算法

BP算法

多层感知器的训练使用误差反向传播算法(Error Back Propagation),即BP算法。BP算法最早有沃博斯于1974年提出,鲁梅尔哈特等人进一步发展了该理论。

BP算法的基本过程

  • 前向传播计算:由输入层经过隐含层向输出层的计算网络输出
  • 误差反向逐层传递:网络的期望输出与实际输出之差的误差信号由输出层经过隐含层逐层向输入层传递
  • 由“前向传播计算”与“误差反向逐层传递”的反复进行的网络训练 过程

BP算法就是通过比较实际输出和期望输出得到误差信号,把误差信 号从输出层逐层向前传播得到各层的误差信号,再通过调整各层的连接权重以减小误差。权重的调整主要使用梯度下降法:
Δ w = − α ∂ E ∂ w \Delta w = -\alpha \frac{\partial E}{\partial w} Δw=αwE

激活函数

通过误差反向传播算法调整多层感知器的连接权重时,一个瓶颈问题就是激活函数

  • M-P 模型中使用阶跃函数作为激活函数,只能输出 0或 1,不连续所以 不可导
  • 为了使误差能够传播,鲁梅尔哈特等人提出使用可导函数Sigmoid作为激活函数

深度学习-BP算法_第1张图片

Sigmoid函数的导数: d f ( u ) d u = f ( u ) ( 1 − f ( u ) ) \frac{df(u)}{du} = f(u)(1-f(u)) dudf(u)=f(u)(1f(u))

深度学习-BP算法_第2张图片

其他常见的激活函数:ReLU (Rectified Linear Unit,修正线性单元)和tanh等

深度学习-BP算法_第3张图片

BP算法示例

以包含一个中间层和一个输出单元 y y y 的多层感知器为例: w 1 i j w_{1ij} w1ij 表示输 入层与中间层之间的连接权重, w 2 j 1 w_{2j1} w2j1 表示中间层与输出层之间的连接权重, i i i 表示输入层单元, j j j 表示中间层单元。

深度学习-BP算法_第4张图片

  • 首先调整中间层与输出层之间的连接权重,其中 y = f ( u ) y=f(u) y=f(u) f f f 是激活函数, u 21 = ∑ j = 1 m w 2 j 1 z j u_{21} = \sum_{j = 1}^{m}w_{2j1}z_j u21=j=1mw2j1zj,把误差函数 E 对连接权重 w 2 j 1 w_{2j1} w2j1 的求导展开成复合函数求导:

∂ E ∂ w 2 j 1 = ∂ E ∂ y ∂ y ∂ u 21 ∂ u 21 ∂ w 2 j 1 = − ( r − y ) y ( 1 − y ) z j \begin{array}{c}\frac{\partial E}{\partial w_{2 j 1}} =\frac{\partial E}{\partial y} \frac{\partial y}{\partial u_{21}} \frac{\partial u_{21}}{\partial w_{2 j 1}} \\ =-(r-y) y(1-y) z_{j}\end{array} w2j1E=yEu21yw2j1u21=(ry)y(1y)zj

这里 z j z_j zj 表示的是中间层的值。

  • 第二,中间层到输出层的连接权重调整值如下所示:

Δ w 2 j 1 = α ( r − y ) y ( 1 − y ) z j \Delta w_{2 j 1}=\alpha(r-y) y(1-y) z_{j} Δw2j1=α(ry)y(1y)zj

  • 第三,调整输入层与中间层之间的连接权重

∂ E ∂ w 1 i j = ∂ E ∂ y ∂ y ∂ u 21 ∂ u 21 ∂ w 1 i j = − ( r − y ) y ( 1 − y ) ∂ u 21 ∂ w 1 i j \begin{aligned} \frac{\partial E}{\partial w_{1 i j}} &=\frac{\partial E}{\partial y} \frac{\partial y}{\partial u_{21}} \frac{\partial u_{21}}{\partial w_{1 i j}} \\ &=-(r-y) y(1-y) \frac{\partial u_{21}}{\partial w_{1 i j}} \end{aligned} w1ijE=yEu21yw1iju21=(ry)y(1y)w1iju21

中间层到输出层

深度学习-BP算法_第5张图片

输入层到中间层

深度学习-BP算法_第6张图片

你可能感兴趣的:(深度学习,python,人工智能,神经网络,深度学习)