1.介绍

人工神经网络(Artificial Neural Network,ANN)简称神经网络(NN),是在现代生物学研究人脑组织所取得成果的基础上提出来的。人工神经网络是大脑生物结构的数学建模,有大量功能简单而具有自适应能力的信息处理单元即人工神经元按照大规模并行方式,通过拓扑结构连接而成。

能够自主学习是神经网络一种最重要也最令人注目的能力。自从20世纪40年代末Hebb提出的学习规则以来,人们相继提出了各种各样的学习算法,其中以在1986年Rumelhart等人提出的误差反向传播法,即BP(error BackPropagation)算法的影响最为广泛。BP反向传播算法在多层神经网络训练中扮演着举足轻重的作用,也是迄今最成功的ANN人工神经网络学习算法,被广泛应用于升级网络的训练中。

BP算法是由信号的正向传播与误差的反向传播两个过程组成。由于多层前馈网络的训练经常采用误差反向传播算法,人们也常把将多层前馈网络直接称为BP网络。

1)正向传播:输入样本从输入层进入网络,经隐层逐层传递至输出层,如果输出层的实际输出与期望输出不同,则转至误差反向传播;如果输出层的实际输出与期望输出相同,结束学习算法。

2)反向传播:将输出误差(期望输出与实际输出之差)按原通路反传计算,通过隐层反向,直至输入层,在反传过程中将误差分摊给各层的各个单元,获得各层各单元的误差信号,并将其作为修正各单元权值的根据。这一计算过程使用梯度下降法完成,在不停地调整各层神经元的权值和阈值后,使误差信号减小到最低限度。

权值和阈值不断调整的过程,就是BP网络的学习与训练过程。经过信号正向传播与误差反向传播,权值和阈值的调整反复进行,一直进行到预先设定的学习训练次数,或输出误差减小到允许的程度。

BP算法是一种有监督式的学习算法,其主要思想是:输入学习样本,使用反向传播算法对网络的权值和阈值进行反复调整训练,使输出的向量与期望向量尽可能地接近,当网络输出层的误差平方和小于指定的误差时,训练完成,保存网络的权值和阈值。

2.BP推导

2.1 信号的正向传播

以下面的含一个输入层、两个隐藏层以及一个输出层的四层全连接神经网络举例,为了推导方便,第一层输入层含两个神经元节点,第二层和第三层隐藏层都含三个神经元节点,最后输出层含两个神经元节点。在用BP算法训练神经网络处理实际问题时,输入层神经元节点数应当和从一个样本提取的特征数保持一致,输出层节点数也应当根据实际情况设置。如用BP算法实现对手写数字识别分类,从每张图片样本提取的特征数都是28*28=764,则网络输入层节点数应当设置成784,数字有0~9一共10个类别,那么输出层节点数应当设置成10,每个节点输出的数值代表10个数字各自可能的概率。图中网络第二层到第四层每个神经元节点的激活函数都采用Sigmoid函数。

接下来对符号进行一些说明,

在数据的正向传播阶段,每个神经元节点的输入都是前一层神经元节点输出值的加权求和,节点的输出是当前节点的输入值经过Sigmoid函数映射后的值。以第二层的第一个神经元节点举例,

将所有层的神经元节点的输入输出以矩阵的形式计算汇总如下即得到BP算法的正向传播推导 。

2.2 误差的反向传播

样本特征数据经过正向传播以后,神经网络得到输出,输出的是对特征数据的函数映射。值得一提的是,在神经网络中,神经元节点之间的连接权重以及节点的阈值是随机初始化的,也就是说神经网络的输出结果是无法确定的,有可能与我们所期待的结果输出相差甚远。仅仅只能对样本特征数据进行随机变换对于一个能够自主学习的神经网络是远远不够的!为了能让神经网络能够自主学习,可以将网络输出结果与我们期待结果对比,告诉神经网络是否存在误差,让神经网络根据误差自行调整权重和阈值参数,也就是所说的对网络进行训练,从而达到让其输出不断接近我们所期待的结果的目的。具体来说,首先定义损失函数,让其表示预测结果和真实值的差距程度。在此,使用均方误差损失函数,定义损失E如下,

显然,当损失函数的值越小,也就是损失E越小时,说明网络的输出值越接近真实值,神经网络的预测能力越强。

进一步分析,神经网络的输出可以看成是样本特征数据输入加上权重w和阈值b的函数映射,而样本特征数据是事先确定好无法改变的,权重w和阈值b是随机初始化的,可以对他们进行调整,从而改变神经网络的输出,让其更加接近真实值。故可以认为损失E是关于参数w和b的函数,E看成是因变量,w和b看成是自变量。众所周知,沿着梯度的反方向,函数值下降的最快!为了让损失E的值最小,接下来就得使用梯度下降法求出E对w和b的偏导,更新参数w和b。原理介绍完毕,还是以前文所示的神经网络为例,对网络的误差反向传播过程进行推导如下。

深度学习之BP算法的更多相关文章

  1. 深度学习 目标检测算法 SSD 论文简介

    深度学习 目标检测算法 SSD 论文简介 一.论文简介: ECCV-2016 Paper:https://arxiv.org/pdf/1512.02325v5.pdf  Slides:http://w ...

  2. 学习《深度学习与计算机视觉算法原理框架应用》《大数据架构详解从数据获取到深度学习》PDF代码

    <深度学习与计算机视觉 算法原理.框架应用>全书共13章,分为2篇,第1篇基础知识,第2篇实例精讲.用通俗易懂的文字表达公式背后的原理,实例部分提供了一些工具,很实用. <大数据架构 ...

  3. 【深度学习】BP反向传播算法Python简单实现

    转载:火烫火烫的 个人觉得BP反向传播是深度学习的一个基础,所以很有必要把反向传播算法好好学一下 得益于一步一步弄懂反向传播的例子这篇文章,给出一个例子来说明反向传播 不过是英文的,如果你感觉不好阅读 ...

  4. 深度学习——优化器算法Optimizer详解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)

    在机器学习.深度学习中使用的优化算法除了常见的梯度下降,还有 Adadelta,Adagrad,RMSProp 等几种优化器,都是什么呢,又该怎么选择呢? 在 Sebastian Ruder 的这篇论 ...

  5. 深度学习(Deep Learning)算法简介

    http://www.cnblogs.com/ysjxw/archive/2011/10/08/2201782.html Comments from Xinwei: 最近的一个课题发展到与深度学习有联 ...

  6. 基于候选区域的深度学习目标检测算法R-CNN,Fast R-CNN,Faster R-CNN

    参考文献 [1]Rich feature hierarchies for accurate object detection and semantic segmentation [2]Fast R-C ...

  7. 转——深度学习之BN算法(Batch Normailization)

    Batch Normalization 学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/50866313 作者:hjimce 一.背景意义 ...

  8. NLP 第10章 基于深度学习的NLP 算法

  9. Netflix工程总监眼中的分类算法:深度学习优先级最低

    Netflix工程总监眼中的分类算法:深度学习优先级最低 摘要:不同分类算法的优势是什么?Netflix公司工程总监Xavier Amatriain根据奥卡姆剃刀原理依次推荐了逻辑回归.SVM.决策树 ...

随机推荐

  1. 移动应用开发:Flutter

    目录 前言 Flutter 介绍 移动应用开发:选择对比 原生开发 H5 技术 React Native Flutter 总结 参考 前言 "镜子镜子 告诉我,世界上最好的语言是什么&quo ...

  2. LuoguP7713 「EZEC-10」打分 题解

    Content 某个人去参加比赛,\(n\) 个评委分别给他打分 \(a_1,a_2,\dots,a_n\).这个人可以最多执行 \(m\) 次操作,每次操作将一个评委的分数加 \(1\).定义他的最 ...

  3. TCP 长连接保活机制&HTTP长连接设置

    TCP KeepAlive Wireshark抓包分析机制 -------------------------------- 如上图所示,TCP保活报文总是成对出现,包括TCP保活探测报文和TCP保活 ...

  4. std::function介绍 -转载

    类模版std::function是一种通用.多态的函数封装.std::function的实例可以对任何可以调用的目标实体进行存储.复制.和调用操作,这些目标实体包括普通函数.Lambda表达式.函数指 ...

  5. 查找局域网中未知设备的IP

    先运行net view,然后再运行arp -a 设备启动前后对比IP列表        

  6. .NET 多条件动态参数查询方法 - SqlSugar ORM

    1.简单多条件多动参数 创建数据库对象 //创建数据库对象 SqlSugarClient SqlSugarClient db = new SqlSugarClient(new ConnectionCo ...

  7. c++内存分布之虚函数(多继承)

    系列 c++内存分布之虚函数(单一继承) c++内存分布之虚函数(多继承) [本文] 结论 1.虚函数表指针 和 虚函数表 1.1 影响虚函数表指针个数的因素只和派生类的父类个数有关.多一个父类,派生 ...

  8. 【LeetCode】870. Advantage Shuffle 解题报告(Python)

    [LeetCode]870. Advantage Shuffle 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn ...

  9. codeforce364(div1.C). Beautiful Set

    C. Beautiful Set time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  10. 1002 - Country Roads(light oj)

    1002 - Country Roads I am going to my home. There are many cities and many bi-directional roads betw ...