机器学习Python 学习

[整理] BP神经网络讲解——最好的版本

2017-02-28  本文已影响43257人  东皇Amrzs

David Rumelhart 和 J.McClelland 于1985年提出了BP网络的误差反向后传BP(Back propagation)学习算法

BP算法基本原理

利用输出后的误差来估计输出层的直接前导层的误差,再用这个误差估计更前一层的误差,如此一层一层的反传下去,就获得了所有其他各层的误差估计。

一个三层BP网络

激活函数

使用S型激活函数时,BP网络输入与输出关系

输入:


输出:


输出的导数:


使用S型激活函数时,BP网络的输出及其导数图形:


根据S激活函数的图形:

对神经网络进行训练,我们应该尽量将net的值尽量控制在收敛比较快的范围内。

BP网络的标准学习算法

学习的过程:

学习的本质:

学习规则:

BP网络的标准学习算法-算法思想

  1. 学习的类型: 有导师学习

  2. 核心思想将输出误差以某种形式通过隐层向输入层逐层反传(即,将误差分摊给各层的所有单元——各层单元的误差信号,以此来修正各单元权值)
    个人理解 : ** 就如同之前的梯度下降函数每次更新Θ值一样,每次来一个样本,就更新Θ值,使得代价函数变得越来越小。这个类似,先给他们的权值赋个随机初值,然后计算到最后一层(输出层),若输出结果与实际值有误差(这个正常情况下是肯定有的),那么就进行误差的反向传播算法,来优化各层的Θ值(权重值)**

  3. 学习的过程: 信号的正向传播——》误差的反向传播

BP网络的标准学习算法-学习过程

BP网络的标准学习算法

第一步,网络初始化

给各连接权值分别赋一个区间(-1,1)内的随机数,设定误差函数e,给定计算精度值ε和最大学习次数M

第二步,随机选取第k个输入样本以及对应的期望输出

第三步,计算隐含层各神经元的输入和输出

第四步,利用网络期望输出和实际输出,计算误差函数对输出层的各神经元的偏导数


可以列出如下等式:

第五步,利用隐含层到输出层的连接权值、输出层的 和隐含层的输出计算误差函数对隐含层各神经元的偏导数


可以列出如下等式:

  1. 最下面那个方框是’=‘号

第六步,利用输出层各神经元的 和隐含层各神经元的输出来修正连接权值

第七步,利用隐含层各神经元的 和输入层各神经元的输入参数修正连接权值。

第八步,计算全局误差

第九步,判断网络误差是否满足要求,判断网络误差是否满足要求。当误差达到预设精度或学习次数大于设定的最大次数,则结束算法。否则,选取下一个学习样本及对应的期望输出,返回到第三步,进入下一轮学习。

BP算法直观解释

当误差对权值的偏导数大于零时,权值调整量为负,实际输出大于期望输出,权值向减少方向调整,使得实际输出与期望输出的差减少。


情况1直观表达

当误差对权值的偏导数小于零时,权值调整量为正,实际输出少于期望输出,权值向增大方向调整,使得实际输出与期望输出的差减少。

情况二直观表达
上一篇 下一篇

猜你喜欢

热点阅读