【作者数学捉鸡,本博客不作公式推导,只是提纲挈领地描述BP神经网络的操作过程】
参考资料:http://neuralnetworksanddeeplearning.com/index.html

一、神经网络的基本单元:感知器
感知器接受若干个二元输入x1,x2,……,生成单一的二元输出。
感知器:

每个输入对应一个权重,w,当w和x的乘积的和加上偏置大于阈值时,输出为1,当乘积的和加上偏置小于阈值时,输出为0.
适当组合并选取合适的权重,可以代替门运算。
值得一提的是,二层的感知器可以代替与门或门非门运算,但是不能代替异或运算。

这是神经网络的学习过程,当输出的output与实际值有偏差时,不断改变权重和偏置,使输出的结果越来越好,但是为了迁就一个结果而修改的权重可能对网络整体造成巨大的影响(可能造成输出的突变)。为了克服这个问题,引入了一种虚拟的神经元:sigmoid神经元。sigmoid神经元的输入可以使0到1间的任意值,它的输出可以用sigmoid函数表示:


与原来的神经元相比,sigmod神经元更加平滑,这样,权重的微小改变就可以造成输出的微小改变。

神经网络的结构为:
输入层(输入神经元)—–> 隐藏层 ——> 输出层(输出神经元)
隐藏层可以有很多层。
这种多层神经网络有时被称为多层感知器,由sigmod神经元组成。
以上讨论的神经网络被称为前馈神经网络,网络中没有回路,层与层之间全连接,每层之间无连接。

二、训练神经网络
为了判断网络的表现,定义价值函数(cost function,也称损失函数,目标函数),用C表示。下面的式子就是当C是均方误差时的结果损失函数:

用w表示网络中所有权重的集合,b表示所有的偏置,n是训练样本的总数,a表示当x是输入样本时,网络给出的输出向量。
我们希望C尽可能小,用梯度下降法(gradient descent)达到目的。

从这张图上看,如果有一个球固定在这个曲面上方的某处,希望让这个球到达曲面的洼地。梯度下降法的策略就是分别从v1和v2两个方向上让这个球慢慢下降。

梯度为:

这里只是求出了梯度的表示,我们的目的是用梯度更新权重。这时,我们就要考虑到小球下降速度的问题,如果在当前方向上更新梯度更新得过了头,小球就越过了洼地,这显然不是我们想看到的。因此,需要一个参数:学习率,来控制梯度下降的速度。学习率是一个很小的正参数,一般训练神经网络的时候,随着损失函数变小,会将学习率调整得小一点。
v的更新为:
回到神经网络,最靠近输出层的神经元就是这样更新的:

这种做法的一个缺点是,每次更新权重都要读取全部的训练数据,在训练数据比较庞大的时候,这非常耗时,因此采取随机坐标下降法(stochastic gradient descent)加速学习。这个方法的策略是,每次更新只用一部分样本。
我们不断随机选择输入,直到所有训练数据都被遍历,就完成了一轮(epoch)训练,开始下一轮训练。

现在我们知道了如何训练最后一层的神经元,那么前面几层的神经元怎么办呢?接下来就要详细介绍反向传播算法(backpropagation)。反向传播算法的核心是计算损失函数关于权重(或偏置)的偏导数
表示在第l-1层的第k个神经元到第l层的第j个神经元的权重。用表示第j个神经元在第l层的偏置,用表示第j个神经元在第l层的激励。

这样激励,权重和偏置之间的关系就是:
写成向量就是:
第l层的加权输入为:

引入阿尔玛内积(Hadamard product)
也就是相同纬度向量对应位置相乘

接下来介绍几个关于反向传播的重要方程,证明过程略(有兴趣可以移步英文原文查阅)
引入中间量来表示第j个神经元在第l层上的误差。
反向传播算法可以计算 ,然后把它与损失函数关于w和b的偏导数联系起来。
定义:
① 输出层误差方程:
写成矩阵形式:
这里的L表示是针对最后一层。
关于的方程:
这个公式告诉了我们误差从后往前传播的方式,通过①和②的结合,我们可以求出网络中任意层的误差。
③ 网络中损失函数关于偏置的公式:
这个公式可以简写为:
④ 网络中损失函数关于权重的公式:
这个公式可以简写为:
从这个公式可以看出:激励小的神经元的权重学习得慢。
当激活函数是sigmoid时,如果输入的值在很左或者很右的位置,输出神经元产生的激励非常小或者非常大,这时认为输出神经元已经饱和,几乎停止学习,这样就会造成权重学习缓慢,这也是sigmoid的一个缺点

反向传播算法的具体步骤为:
① 输入x:为输入层设置相应的激励
② 前馈:对每个,计算
③ 输出误差:计算向量
④ 反向传播误差:对每个,计算
⑤ 输出:损失函数的梯度为
最后只要用这个公式更新偏置和权重就可以了:

如果用随机坐标下降法加速:


m表示一个batch里样本的个数

CNN感性认识(一)——BP神经网络相关推荐

  1. BP神经网络与卷积神经网络(CNN)

    BP神经网络与卷积神经网络(CNN) 1.BP神经网络  1.1 神经网络基础  神经网络的基本组成单元是神经元.神经元的通用模型如图 1所示,其中常用的激活函数有阈值函数.sigmoid函数和双曲正 ...

  2. bp神经网络和cnn神经网络,bp神经网络与cnn区别

    深度学习与神经网络有什么区别 深度学习与神经网络关系2017-01-10最近开始学习深度学习,基本上都是zouxy09博主的文章,写的蛮好,很全面,也会根据自己的思路,做下删减,细化. 五.Deep ...

  3. 机器学习:BP神经网络,CNN卷积神经网络,GAN生成对抗网络

    1,基础知识 1.1,概述 机器学习:概念_燕双嘤-CSDN博客1,机器学习概述1.1,机器学习概念机器学习即Machine Learning,涉及概率论.统计学.逼近论.凸分析.算法复杂度理论等多门 ...

  4. 基于神经网络的黄金、外汇价格预测(RNN、LSTM、GRU、CNN+LSTM、BP)

    价格预测研究分析 价格预测作为一种复杂的回归问题,可以使用神经网络模拟其复杂的函数表示来解决,对黄金和外汇而言,它们在未来某一时间节点的价格与历史数据存在着紧密的联系,具备极强的时间关联性,对这种与时 ...

  5. bp神经网络和cnn神经网络,bp神经网络和cnn

    什么是BP神经网络? . BP算法的基本思想是:学习过程由信号正向传播与误差的反向回传两个部分组成:正向传播时,输入样本从输入层传入,经各隐层依次逐层处理,传向输出层,若输出层输出与期望不符,则将误差 ...

  6. bp神经网络和cnn神经网络,bp神经网络和神经网络

    bp算法在深度神经网络上为什么行不通 BP算法作为传统训练多层网络的典型算法,实际上对仅含几层网络,该训练方法就已经很不理想,不再往下进行计算了,所以不适合深度神经网络. BP算法存在的问题:(1)梯 ...

  7. bp神经网络代码_机器学习(周志华)课后习题——第五章——神经网络

    5.1 试述将线性函数 用作神经元激活函数的缺陷. 答: 使用线性函数作为激活函数时,无论是在隐藏层还是在输出层(无论传递几层),其单元值(在使用激活函数之前)都还是输入 的线性组合,这个时候的神经网 ...

  8. bp神经网络隐含层神经元个数_CNN,残差网络,BP网络

    (以下实验均在MNIST中实现) 一.CNN与CNN改进的对比 众所周知,对于CNN卷积神经网络而言,随着卷积层数的增加,其模型的准确度也会增加.那模型层数和准确度是无限地成正比例关系吗?显然不是的, ...

  9. BP神经网络识别手写数字项目解析及matlab实现

    BP神经网络指传统的人工神经网络,相比于卷积神经网络(CNN)来说要简单些. 人工神经网络具有复杂模式和进行联想.推理记忆的功能, 它是解决某些传统方法所无法解决的问题的有力工具.目前, 它日益受到重 ...

  10. [深度学习-实践]BP神经网络的Helloworld(手写体识别和Fashion_mnist)

    前言 原理部分请看这里 [深度学习-原理]BP神经网络 Tensorflow2 实现一个简单的识别衣服的例子 数据集Fashion_mnist, 此数据集包含10类型的衣服 ('T-shirt/top ...

最新文章

  1. 子组件获取父组件的值,将这个值作为状态值保存
  2. Revit二次开发示例:HelloRevit
  3. matlab 四种取整函数(fix floor ceil round)的区别
  4. ASP.net 连接interbase数据库
  5. 包与四种权限访问修饰符
  6. linux vi下划线,如何将我的Vim高亮线更改为不是下划线?
  7. 英伟达发布《永劫无间》最新显卡驱动更新,驱动人生升级教程
  8. 企业级架构的价值体现在哪里?
  9. 带你Git从入门到精通
  10. 关于(archive)归档和(unarchive)解档的处理。
  11. thinkpad笔记本鼠标指针一直往左下角滑动解决方法
  12. GNU/Linux与Windows魔兽争霸3局域网对战安装与配置
  13. 详解 Benders 分解与一个算例的 python 代码
  14. 慕课网-Java入门第二季实战练习-答答租车系统下载
  15. lower_bound,upper_bound的第四个参数的用法
  16. 05丨指标关系:你知道并发用户数应该怎么算吗?
  17. 计算机汉字的输入和编辑教案,计算机汉字录入教案.doc
  18. 怎么判断私网地址_如何判断一个IP地址是私有地址
  19. 德国kit计算机硕士申请条件,卡尔斯鲁厄理工学院研究生申请条件是怎样的?
  20. 投票助力源码_微信投票助手源码

热门文章

  1. Day92.Nginx: 反向代理、负载均衡、动静分离、安装与配置
  2. UI 的设计, 就是精雕细琢, 然后简洁明了
  3. 曙光联手北京计算中心 打造云计算联合实验室
  4. R语言 电力窃漏电用户自动识别实验
  5. Not All Microseconds are Equal研读笔记
  6. 调查显示:98.8%中国“IT精英”体检异常
  7. 论企业文化建设步骤和落地方法
  8. tensorflow tensorboard可视化遇到的几个问题(知其然不知其所以然)
  9. Hive在阿里巴巴数据仓库中的实践与应用
  10. 洲际酒店集团大中华区宣布旗下忠诚计划保级新政