之前十期,我们彻头彻尾的介绍了神经网络技术,然而用到的都是只有一个隐藏层的。那种有多个隐藏层的神经网络,叫深度神经网络,比如这种:

在神经网络中,比较浅的隐藏层会处理一些比较简单的任务,比较深的层会处理比较复杂的任务。比如在人脸识别上,可能第一层用于识别这个图片的轮廓,第二层用于识别有没有鼻子眼睛耳朵嘴巴什么的,第三层用于识别眼睛特征、耳朵特征等等。所以理论上来说,在我们的识别MINST的数据集时,用更深度的神经网络或者说是有多个隐藏层的神经网络,会达到更好的效果。来试试看:

使用的是在第八期中优化过的代码,首先来看原来单层隐藏层情况,神经网络大小[784, 30, 10],训练30个周期,每次随机选取10个小样本,训练速率参数0.5,正则化参数5.0,图中展示除的识别率是验证数据集的识别率:

最高识别率在第23周期,96.34%

再来看看我们加了一个隐藏图层,神经网络大小变成了[784, 30,30, 10],其他参数不变的情况:

最高识别率在第15周期,是96.68%,有进步是不是!

当三个隐藏图层,神经网络大小是[784, 30,30,30, 10]时:

最高识别率在第20周期,是96.39%,好像又回去了!

四个隐藏图层,神经网络大小是[784, 30,30,30,30, 10]时:

最高识别率在第29周期,是96.38%。反正就是没啥进步!

为什么隐藏层数再增加的时候,识别率不增加了呢?这是不是说明,其实我们增加的这些个隐藏层,没起什么作用呢?

答案是,是的!因为有些层在偷懒,从训练开始到训练结束,他的w和b值就没咋变。

在第四期,讲反向传播算法时,我们引入过这么一个方程:

说δ大的时候,表示z的改变对C的影响大,如果第L层j个神经元的z改变对C的影响大的话,这个z当然也会经常改变,让C更小。那么我们来看这么一个一根筋的神经网络:

我们来计算δ[1][0],也就是第一层(从0层起算)的的第零个神经元的值(因为是一根筋,每层只有一个神经元,之后的计算会把0省掉):

那我们再来看看S曲线函数σ的导函数:

我们从S曲线的形状就可以看出,当z=0的时候,σ'(z)有最大值,带进去为1/4。也就是说,δ[1] < 1/4*w2*1/4*w3*1/4*w4*δ[4]。

当每层有多个神经元时,无非就是多了一个Σ符号。而且,经常我们的w取值都是小于1的,那么问题就明显了,前面的隐藏层的训练速度远远低于后面的隐藏层的训练速度,也就是,前面的层在偷懒!这种情况叫梯度衰弱问题。

当然,如果w取特别大特别大的值,就会有梯度膨胀问题,一样的会导致训练速度不平衡,只不过反过来了。要达到平衡,同步训练,就太难了,怎么解决呢?请看下期,深度学习!

欢迎关注我的微信公众号获取最新文章:

python神经网络训练效果差_Python与人工神经网络(11)——为什么深度神经网络很难训练...相关推荐

  1. 为什么很难训练深度神经网络?

    在这篇文章中,我将解释在深度神经网络训练中一个常见的误解.似乎大家都认为,训练深度神经网络很难的原因主要是因为梯度消失(或爆炸)的问题."梯度消失"是指通过隐藏层从后向前看,梯度会 ...

  2. 第五章 深度神经网络为何很难训练

    原文 假设你是一名工程师,接到一项从头开始设计计算机的任务.某天,你在工作室工作,设计逻辑电路,构建 AND 门,OR 门等等时,老板带着坏消息进来:客户刚刚添加了一个奇特的设计需求:整个计算机的线路 ...

  3. python神经网络训练效果差_为什么我的神经网络验证精度比我的训练精度高,并且两者都变得恒定? - python...

    我已经建立了一个模型,当我训练它时,我的验证损失小于训练中的一个,验证准确性也比训练中的高.模型是否过拟合?难道我做错了什么?有人可以看看我的模型,看看有什么问题吗?谢谢. input_text = ...

  4. 不属于python标准库的是_Python标准库笔记(11) — Op

    Operator--标准功能性操作符接口. 代码中使用迭代器时,有时必须要为一个简单表达式创建函数.有些情况这些函数可以用一个lambda函数实现,但是对于某些操作,根本没必要去写一个新的函数.因此o ...

  5. python前缀表达式求值_python数据结构与算法 11 后缀表达式求值

    从本节开始,删除原版的英文,直接发译后的文稿. 后缀表达式求值 栈的最一个应用例子,计算一个后缀表达式的值.这个例子中仍然用栈的数据结构.不过,当扫描表达式的时候,这次是操作数压栈等待,不是转换算法中 ...

  6. 深度神经网络的训练过程,深度神经网络训练

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

  7. 人工神经网络模型有哪些,神经网络分类四种模型

    有哪些深度神经网络模型 目前经常使用的深度神经网络模型主要有卷积神经网络(CNN).递归神经网络(RNN).深信度网络(DBN).深度自动编码器(AutoEncoder)和生成对抗网络(GAN)等. ...

  8. 基于pytorch量化感知训练(mnist分类)--浮点训练vs多bit后量化vs多bit量化感知训练效果对比

    基于pytorch量化感知训练–浮点训练vs多bit后量化vs多bit量化感知训练效果对比 代码下载地址:下载地址 灰色线是量化训练,橙色线是后训练量化,可以看到,在 bit = 2.3 的时候,量化 ...

  9. python 3.8.0安卓_Python for Mac v3.8.0 官方最新版

    Python for Mac是一款全新推出的编程工具,所有 python.org macOS 安装程序都附带了 OpenSSL 的内置副本.此外,还有一个针对 macOS 10.9+ 的新增安装程序变 ...

最新文章

  1. 解决虚拟机 Virtualbox 中 linux 共享文件夹只读问题
  2. Lodop导出图片和打印机无关,测试是否有关
  3. messenger android 4.,AndroidIPC机制(4)-Messenger
  4. 【Git1】指令,分支,ssh免密登录
  5. Android—View事件分发与View子类
  6. mysql初始化错误【一】Can't find error-message file '/usr/local/mysql/errmsg.sys'
  7. linkbox php,win10 docker-toolsbox 搭建php开发环境的教程
  8. Junit4 简单教程
  9. TypeScript中的class声明了什么
  10. 【BZOJ2073】[POI2004]PRZ 状压DP
  11. 【HDU - 6349】三原色图(最小生成树,思维,tricks)
  12. 区块链人才缺口明年将达顶峰,核心开发者年入百万很正常
  13. 新版 chrome 将原生支持图片懒加载!
  14. 数字图像处理(一)——彩色图像基础
  15. 如果数组最后一项为空删除最后一项和去前面的逗号_手写数组方法
  16. javaScript遍历对象
  17. 使用java7的try-resource-with语法用httpclient抓取网页并用jsoup获取网页对象
  18. 分享10个值得每天一看的精品网站,可以让你全方面得到提升,每一个都会让你大开眼界。
  19. [lammps安装教程]lammps并行版安装教程
  20. 迅睿cms模板,迅睿cms模板建站,迅睿模板主题开发

热门文章

  1. 中国高校4篇研究今日同时登上Nature!清华北大上交浙工大等在列
  2. PyTorch官方教程大更新:增加标签索引,更加新手友好
  3. 神操作!美国程序员把工作外包给中国程序员,上班摸鱼吸猫年入 20 万美元
  4. 【每日一算法】二叉搜索树结点最小距离
  5. 操作系统学习:Linux0.12初始化详细流程-进程1调度与读取硬盘数据
  6. 汇编语言的div指令 ax dx bx
  7. 简单的梯度下降算法,你真的懂了吗?
  8. 第七篇:循环神经网络
  9. 【转】python中的字符数字之间的转换函数
  10. hive 表的常用操作