相信每位刚接触神经网络的时候都会先碰到BP算法的问题,如何形象快速地理解BP神经网络就是我们学习的高级乐趣了(画外音:乐趣?你在跟我谈乐趣?)

本篇博文就是要简单粗暴地帮助各位童鞋快速入门采取BP算法的神经网络。

BP神经网络是怎样的一种定义?看这句话:一种按“误差逆传播算法训练”的多层前馈网络。

BP的思想就是:利用输出后的误差来估计输出层前一层的误差,再用这层误差来估计更前一层误差,如此获取所有各层误差估计。这里的误差估计可以理解为某种偏导数,我们就是根据这种偏导数来调整各层的连接权值,再用调整后的连接权值重新计算输出误差。直到输出的误差达到符合的要求或者迭代次数溢出设定值。

说来说去,“误差”这个词说的很多嘛,说明这个算法是不是跟误差有很大的关系?

没错,BP的传播对象就是“误差”,传播目的就是得到所有层的估计误差。

它的学习规则是:使用最速下降法,通过反向传播(就是一层一层往前传)不断调整网络的权值和阈值,最后使全局误差系数最小。

它的学习本质就是:对各连接权值的动态调整。

拓扑结构如上图:输入层(input),隐藏层(hide layer),输出层(output)

BP网络的优势就是能学习和储存大量的输入输出的关系,而不用事先指出这种数学关系。那么它是如何学习的?

BP利用处处可导的激活函数来描述该层输入与该层输出的关系,常用S型函数δ来当作激活函数。

我们现在开始有监督的BP神经网络学习算法:

1、正向传播得到输出层误差e

=>输入层输入样本=>各隐藏层=>输出层

2、判断是否反向传播

=>若输出层误差与期望不符=>反向传播

3、误差反向传播

=>误差在各层显示=>修正各层单元的权值,直到误差减少到可接受程度。

算法阐述起来比较简单,接下来通过数学公式来认识BP的真实面目。

假设我们的网络结构是一个含有N个神经元的输入层,含有P个神经元的隐层,含有Q个神经元的输出层。

这些变量分别如下:

认识好以上变量后,开始计算:

一、用(-1,1)内的随机数初始化误差函数,并设定精度ε,最多迭代次数M

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

重复以下步骤至误差达到要求:

三、计算隐含层各神经元的输入和输出

四、计算误差函数e对输出层各神经元的偏导数,根据输出层期望输出和实际输出以及输出层输入等参数计算。

五、计算误差函数对隐藏层各神经元的偏导数,根据后一层(这里即输出层)的灵敏度(稍后介绍灵敏度)δo(k),后一层连接权值w,以及该层的输入值等参数计算

六、利用第四步中的偏导数来修正输出层连接权值

七、利用第五步中的偏导数来修正隐藏层连接权值

八、计算全局误差(m个样本,q个类别)

比较具体的计算方法介绍好了,接下来用比较简洁的数学公式来大致地概括这个过程,相信看完上述的详细步骤都会有些了解和领悟。

假设我们的神经网络是这样的,此时有两个隐藏层。

我们先来理解灵敏度是什么?

看下面一个公式:

这个公式是误差对b的一个偏导数,这个b是怎么?它是一个基,灵敏度δ就是误差对基的变化率,也就是导数。

因为∂u/∂b=1,所以∂E/∂b=∂E/∂u=δ,也就是说bias基的灵敏度∂E/∂b=δ等于误差E对一个节点全部输入u的导数∂E/∂u。

也可以认为这里的灵敏度等于误差E对该层输入的导数,注意了,这里的输入是上图U级别的输入,即已经完成层与层权值计算后的输入。

每一个隐藏层第l层的灵敏度为:

这里的“◦”表示每个元素相乘,不懂的可与上面详细公式对比理解

而输出层的灵敏度计算方法不同,为:

而最后的修正权值为灵敏度乘以该层的输入值,注意了,这里的输入可是未曾乘以权值的输入,即上图的Xi级别。

对于每一个权值(W)ij都有一个特定的学习率ηIj,由算法学习完成。

参考文献1

参考文献2

深度学习算法原理——神经网络的基本原理相关推荐

  1. 深度学习算法原理_用于对象检测的深度学习算法的基本原理

    深度学习算法原理 You just got a new drone and you want it to be super smart! Maybe it should detect whether ...

  2. Python大数据综合应用 :零基础入门机器学习、深度学习算法原理与案例

    机器学习.深度学习算法原理与案例实现暨Python大数据综合应用高级研修班 一.课程简介 课程强调动手操作:内容以代码落地为主,以理论讲解为根,以公式推导为辅.共4天8节,讲解机器学习和深度学习的模型 ...

  3. TensorFlow深度学习算法原理与编程实战 人工智能机器学习技术丛书

    作者:蒋子阳 著 出版社:中国水利水电出版社 品牌:智博尚书 出版时间:2019-01-01 TensorFlow深度学习算法原理与编程实战 人工智能机器学习技术丛书 ISBN:97875170682 ...

  4. 深度学习算法原理——LSTM

    1. 概述 在循环神经网络RNN一文中提及到了循环神经网络RNN存在长距离依赖的问题,长短期记忆(Long Short-Term Memory,LSTM)网络便是为了解决RNN中存在的梯度爆炸的问题而 ...

  5. ZAO 背后的深度学习算法原理浅析

    ZAO最近火爆,成为现象级产品之一,引起大家的广泛关注,ATA上面已经有同学做了一些说明分析,链接如下: https://www.atatech.org/articles/148375?spm=ata ...

  6. 深度学习算法和机器学习算法_63种机器学习算法介绍

    深度学习算法和机器学习算法 Data Science and analytics are transforming businesses. It has penetrated into all dep ...

  7. 人工智能:深度学习算法及应用——简单理解CNN卷积神经网络并python实现(带源码)

    深度学习算法及应用 一. 实验目的 二. 实验要求 三. 实验的硬件.软件平台 四. 实验原理 1.1. 深度学习概述 1.2. 深度学习的常见结构 1.3. 卷积神经网络(CNN) **卷积** * ...

  8. 华南理工深度学习与神经网络期末考试_深度学习算法地图

    原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不能用于商业目的. 其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明 ...

  9. 医学图像处理医学图像处理-卷积神经网络卷积神经网络_典型的深度学习算法(一):卷积神经网络(CNN)...

    通过上一篇文章,相信大家对深度学习的概念.原理已经有了大致了解,近期企通查将会对深度学习中的几种典型算法进行介绍. 在深度学习领域中,已经验证的典型成熟算法有卷积神经网络(CNN).循环神经网络(RN ...

  10. 大话卷积神经网络CNN,小白也能看懂的深度学习算法教程,全程干货建议收藏!...

    来源 | 程序员管小亮 本文创作的主要目的,是对时下最火最流行的深度学习算法的基础知识做一个简介,作者看过许多教程,感觉对小白不是特别友好,尤其是在踩过好多坑之后,于是便有了写这篇文章的想法. 由于文 ...

最新文章

  1. 大数据分布式集群搭建(6)
  2. json省市区城市级联
  3. 听说版本会说话,你相信吗?
  4. express 4 简单实现自动注册路由功能
  5. すぬけ君の塗り絵 / Snuke's Coloring(AtCoder-2068)
  6. jQuery 学习-样式篇(六):jQuery 获取和设置表单元素的值
  7. 全球最急需的10项IT技术
  8. Visual Studio 2008 WPF设计器智能提示(Intellisense)失效
  9. [function.strtotime] 错误对策
  10. sphinx 使用
  11. autocad型源代码_autocad 二次开发的一些源码实例
  12. 基于Hadoop的电商用户分析系统
  13. nosqlbooster 延长试用日期
  14. 逆水寒 各个服务器位置,逆水寒合服公告_哪些服务器要合并_3DM网游
  15. 使用DGL进行异构图元路径采样
  16. 基于matlab的pwm波形仿真与分析,基于Matlab的单相电压型PWM整流电路仿真与设计
  17. 自己实现一个内存分配器
  18. C语言结构体存储空间分配的原则
  19. java抽象类计算正方体面积_怎么用java里抽象类的方式计算相应形状的面积
  20. 最大化参数 火车头_火车头使用正则匹配模式采集数据

热门文章

  1. 电子设计教程9:Boost升压电路(MC34063)
  2. (小米系统系列五)小米/红米国际版系统刷入小米钱包、小米公交、小米门禁卡
  3. android 读取 IMEI 和 MEID 的处理
  4. 华为java安全编程规范考试答案
  5. 【编译原理】词法分析(C/C++源代码+实验报告)
  6. mysql函数返回结果集_MySQL自定义函数
  7. 进销存excel_Excel进销存管理系统!这6套不同风格的版本,财会可直接套用
  8. QUT期末考试《电子商务概论》思维导图
  9. python怎么输出键值对_python 获取字典键值对的实现
  10. 2019计算机二级vb考试大纲,2019年全国计算机二级VB试题