当我们训练网络的时候,通常会出现如下两种情况:

  1. 第一种情况:训练数据表现不好,这种时候通常可以使用新的激活函数,或者调整学习率。
  2. 第二种情况:训练数据表现的很好,但是测试数据的表现很差,这个时候可以提前终止、数据正则化和Dropout的方法来改善情况。

不一定网络越深,performance越好。

  • 接下来我们先讨论针对以上两种情况,具体如何改善:

    • 对于训练数据表现不好时,用新的激活函数(New Activation function),再讨论调整学习率(Adaptive Learning Rate)
    • 训练数据表现的很好,但是测试数据的表现很差时:提前终止数据正则化Dropout的方法来改善情况。

激活函数

梯度消失问题

  • 网络在做梯度下降时,如果我们用sigmoid作为激活函数,在接近输出的地方梯度很大,学习速度快,通过反向传播,在接近出入层的地方,梯度会变得很缓,学习效率很慢。这就是梯度消失的问题。
  • 因为sigmoid在接近0和1的地方会突然变得很缓慢。如图:
  • 为了解决这个问题,我们引入其它激活函数。

整流线性单元(ReLU)

  • 很自然的,我们会想到能不能引入一个变换均匀的激活函数,这样就能减缓梯度消失的问题了。于是我们引入了ReLU,它的函数图像如下:
  • 小于0的部分函数值为0,大于0的部分函数为a=z
  • ReLU的变种,有人觉得z值小于0的部分函数值为0,这个还是不好,没有梯度了。于是引入ReLU的变种。令z<0的部分函数值为a = αz,其中α 也可以根据gradient descent学习出来,这样激活函数就变得更加合理了,可以在一定程度上减少训练时间。函数图像如下:

Maxout

  • 顾名思义,输出最大值,使用这种激活函数时,需要两个及以上结点组成一组,从下图中我们可以看出Maxout是如何工作的。
  • Maxout是可学习的激活函数,它可以是任何分段线性凸函数。有几段取决于每一组中元素的个数。

学习率

  • 前面在讲梯度下降的时候讲到了Adagrad的方法,就是将每个参数的学习率除以其先前导数的均方根当作步长,在深度神经网络中,要介绍一种与Adagrad类似的学习率调整方法:RMSProp

RMSProp

  • 使用RMSProp方法的权值更新公式如下:
  • 可以通过调整α使得下一次的权值调整是受当前梯度倒数gt的影响都一些还是受前面的调整多一些。如果α接近0,则受当前梯度倒数gt影响多一些。
  • 而且α的值还可以通过gradient descen的方法学习出来。
  • 但是这种方法很难找到全局最优值,通常在遇到局部最优点的时候就停止了。

动量(Momentum)

  • 现实生活中,当一个球从高处滚落下来,在遇到平坦处和低谷处时,由于惯性的原因有可能还会继续滚动,直到到达全局最低点的位置。因此在机器学习中,通过学习率更新权值时,能不能也引入一个惯性,使迭代到达局部最优时,还有有一个动量继续向前,直到到达全局最优呢?
  • 基于这个想法,接下来开始Momentum方法:使移动的方向不仅基于当前求导的方向,还要参考上一次移动的方向。参数的更新过程如下

加入了动量之后权值更行的过程中运动轨迹如下,在遇到平坦处和低谷时,由于受到上一次方向的影响,还会继续向前。

  • Adam:RMSProp + Momentum称为Adam

第二种情况

Early Stopping

  • 网络在训练的过程中,可能训练的时间越长,对Training setperformance就越好,但是用训练时间很长得到的参数作用于Testing set时,有可能并不会得到预期中的好结果,反而提前结束训练得到的参数作用于Testing set能得到相对满意的结果。
  • 所以我们在训练时,有时需要提前结束,至于到底什么时候结束,我们也不清楚,这个时候,验证集的作用就体现出来了。
  • Training set分出一部分数据用来做Validation set,当获得的参数在Validation set取得好结果的时候,就停止训练,再将参数作用于Testing set

正则化(Regularization)

  • 权值更新公式如下:
  • 其中sgn(x)时符号函数,x为正数时值为1,x值为负数时,值为-1,x为0时,值为0.

Dropout

  • 在每次训练之前,都摘掉p%和神经元,如下图所示:
  • 这样训练没循环一次我们都是使用新的网络结构在训练。如果训练时神经元的摘除率为p%,则最后所哦于权值都乘以1-p%。
  • 假设dropout rate为50%,如果通过训练得到的权值为w=1,则最后令w=0.5作用于Testing set

-----------------

还没关注我的公众号?

扫文末二维码关注公众号【轮子工厂】,回复“领取资源”可领取如下学习资料:

1T视频教程:涵盖Javaweb前后端教学视频、机器学习/人工智能教学视频、Linux系统教程视频、雅思考试视频教程;

100多本书:包含C/C++、Java、Python三门编程语言的经典必看图书、LeetCode题解大全;

软件工具:几乎包括你在编程道路上的可能会用到的大部分软件;

项目源码:20个JavaWeb项目源码。

dnn神经网络_【李宏毅机器学习笔记】深度神经网络(DNN)相关推荐

  1. 【李宏毅机器学习笔记】 23、循环神经网络(Recurrent Neural Network,RNN)

    [李宏毅机器学习笔记]1.回归问题(Regression) [李宏毅机器学习笔记]2.error产生自哪里? [李宏毅机器学习笔记]3.gradient descent [李宏毅机器学习笔记]4.Cl ...

  2. DL之DNN:基于自定义数据集利用深度神经网络(输入层(10个unit)→2个隐藏层(10个unit)→输出层1个unit)实现回归预测实现代码

    DL之DNN:基于自定义数据集利用深度神经网络(输入层(10个unit)→2个隐藏层(10个unit)→输出层1个unit)实现回归预测实现代码 目录 基于自定义数据集利用深度神经网络(输入层(10个 ...

  3. 对抗机器学习系列——深度神经网络的盲点

    1.引言   近些年,深度学习在计算机视觉领域取得了很好的表现,引领了第三次人工智能的浪潮.目前大部分表现优异的应用都用到了深度学习,大红大紫的 AlphaGo 就使用到了深度学习.   但是本期讲的 ...

  4. 吴恩达机器学习笔记week8——神经网络 Neutral network

    吴恩达机器学习笔记week8--神经网络 Neutral network 8-1.非线性假设 Non-linear hypotheses 8-2.神经元与大脑 Neurons and the brai ...

  5. 李宏毅svm_【李宏毅机器学习笔记】 18、支持向量机(Support Vector Machine,SVM)...

    [李宏毅机器学习笔记]1.回归问题(Regression) [李宏毅机器学习笔记]2.error产生自哪里? [李宏毅机器学习笔记]3.gradient descent [李宏毅机器学习笔记]4.Cl ...

  6. 【李宏毅机器学习笔记】 17、迁移学习(Transfer Learning)

    [李宏毅机器学习笔记]1.回归问题(Regression) [李宏毅机器学习笔记]2.error产生自哪里? [李宏毅机器学习笔记]3.gradient descent [李宏毅机器学习笔记]4.Cl ...

  7. 2021李宏毅机器学习笔记--12 attack ML models

    2021李宏毅机器学习笔记--12 attack ML models 摘要 一.图像模型的攻击 1.1原理 1.2Constraint 1.3参数训练 1.4一个例子 1.5攻击方法 1.5.1FGS ...

  8. 2021李宏毅机器学习笔记--22 Generative Adversarial Network 01

    @[TOC](2021李宏毅机器学习笔记–22 Generative Adversarial Network 01(GAN,生成式对抗网络)) 摘要 GAN是建立于神经网络的基础上的,其核心思想是&q ...

  9. 2021李宏毅机器学习笔记--21 Anomaly Detection

    2021李宏毅机器学习笔记--21 Anomaly Detection(异常侦测) 摘要 一.问题描述 二.Anomaly异常 三.Anomaly Detection(异常侦测)做法 3.1 Bina ...

最新文章

  1. 机器学习实战源码数据集
  2. 引入js失败的可能原因
  3. 使用python moviepy提取视频中的音频,同时对音频数据进行数据可视化分析
  4. 7. 堪比JMeter的.Net压测工具 - Crank 总结篇 - crank带来了什么
  5. Linux 命令之 cat -- 在终端设备上显示文件内容(查看文件内容/浏览文件内容)
  6. 事件映射 消息映射_映射幻影收费站
  7. 2022届互联网秋招备战
  8. (一)flask-sqlalchemy的安装和配置
  9. PHP网页截图-网页快照实现
  10. CSS3自定义浏览器滚动条样式
  11. mysql subquery_mysql-8-subquery
  12. 2019-12-19
  13. 无线鼠标 跨计算机控制,终于明白无线鼠标如何设置
  14. python批量删除txt文本前面几行和最后几行
  15. 2017年全国研究生电子设计大赛上海赛区感触
  16. 【hadoop生态之Hbase】HBASE简介【笔记+代码】
  17. 云服务器怎么多人进去编辑文档,有道云协作怎么实现多人协同编辑 多人同时处理文档方法...
  18. 鸡尾酒问题,最小二乘法和范数的思考
  19. matplotlib之网格线
  20. python(进阶篇):正则表达式常用语法

热门文章

  1. Java中的String.hashCode()方法可能有问题?
  2. 游戏日志分析2:全方位数据采集
  3. 大数据及hadooop简介
  4. 知方可补不足~CSS中margin,padding,border-style有几种书写规范
  5. Flash AS3.0中文帮助下载
  6. 【Java多线程系列七】ExecutorService
  7. Linux 终端常用快捷键
  8. ECMAScript 发展历史
  9. bootstrap 兼容哪些浏览器
  10. 探究光栅图像学之水纹渲染与折射滤镜