学习率如何影响训练?

from:https://www.jiqizhixin.com/articles/2017-11-17-2

深度学习模型通常由随机梯度下降算法进行训练。随机梯度下降算法有许多变形:例如 Adam、RMSProp、Adagrad 等等。这些算法都需要你设置学习率。学习率决定了在一个小批量(mini-batch)中权重在梯度方向要移动多远。

如果学习率很低,训练会变得更加可靠,但是优化会耗费较长的时间,因为朝向损失函数最小值的每个步长很小。

如果学习率很高,训练可能根本不会收敛,甚至会发散。权重的改变量可能非常大,使得优化越过最小值,使得损失函数变得更糟。

学习率很小(上图)和学习率很大(下图)的梯度下降。来源:Cousera 机器学习课程(吴恩达)

训练应当从相对较大的学习率开始。这是因为在开始时,初始的随机权重远离最优值。在训练过程中,学习率应当下降,以允许细粒度的权重更新。

有很多方式可以为学习率设置初始值。一个简单的方案就是尝试一些不同的值,看看哪个值能够让损失函数最优,且不损失训练速度。我们可能可以从 0.1 这样的值开始,然后再指数下降学习率,比如 0.01,0.001 等等。当我们以一个很大的学习率开始训练时,在起初的几次迭代训练过程中损失函数可能不会改善,甚至会增大。当我们以一个较小的学习率进行训练时,损失函数的值会在最初的几次迭代中从某一时刻开始下降。这个学习率就是我们能用的最大值,任何更大的值都不能让训练收敛。不过,这个初始学习率也过大了:它不足以训练多个 epoch,因为随着时间的推移网络将需要更加细粒度的权重更新。因此,开始训练的合理学习率可能需要降低 1-2 个数量级。

一定有更好的方法

Leslie N. Smith 在 2015 年的论文「Cyclical Learning Rates for Training Neural Networks」的第 3.3 节,描述了一种为神经网络选择一系列学习率的强大方法。

诀窍就是从一个低学习率开始训练网络,并在每个批次中指数提高学习率。

在每个小批量处理后提升学习率

为每批样本记录学习率和训练损失。然后,根据损失和学习率画图。典型情况如下:

一开始,损失下降,然后训练过程开始发散

首先,学习率较低,损失函数值缓慢改善,然后训练加速,直到学习速度变得过高导致损失函数值增加:训练过程发散。

我们需要在图中找到一个损失函数值降低得最快的点。在这个例子中,当学习率在 0.001 和 0.01 之间,损失函数快速下降。

转载于:https://www.cnblogs.com/bonelee/p/8578532.html

如何估算深度神经网络的最优学习率相关推荐

  1. 手把手教你估算深度神经网络的最优学习率(附代码教程)

    来源:机器之心 作者:Pavel Surmenok 本文长度为2000字,建议阅读4分钟 学习率(learning rate)是调整深度神经网络最重要的超参数之一,本文作者Pavel Surmenok ...

  2. 深度神经网络之Keras(三)——正则化、超参数调优和学习方向

    深度神经网络之Keras(三)--正则化.超参数调优和学习方向 本文将继续探索Keras框架下的深度神经网络知识,主要介绍了利用Keras构建的深度神经网络正则化及超参数调优问题. 目录 深度神经网络 ...

  3. 根据PPG估算血压利用频谱谱-时间深度神经网络【翻】

    根据PPG估算血压利用频谱谱-时间深度神经网络 Blood Pressure Estimation from Photoplethysmogram Using a Spectro-Temporal D ...

  4. 多层感知机 深度神经网络_使用深度神经网络和合同感知损失的能源产量预测...

    多层感知机 深度神经网络 in collaboration with Hsu Chung Chuan, Lin Min Htoo, and Quah Jia Yong. 与许忠传,林敏涛和华佳勇合作. ...

  5. 深度神经网络是否过拟合?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:Lilian Weng 编译:ronghuaiyang 导读 ...

  6. 进化深度神经网络是推动技术发展的强劲动力

    https://www.toutiao.com/a6704151751097844227/ 本文回顾了进化算法是如何被提出和测试的,它作为一个竞争性的替代方案,解决与神经网络设计相关的一些问题. 此外 ...

  7. Batch Normalization——加速深度神经网络收敛利器

    https://www.toutiao.com/a6703399604613808648/ Batch Normalization Batch Normalization 提出自<Batch N ...

  8. 深度神经网络的分布式训练概述:常用方法和技巧全面总结

    论文地址:https://arxiv.org/abs/1810.11787 深度学习已经为人工智能领域带来了巨大的发展进步.但是,必须说明训练深度学习模型需要显著大量的计算.在一台具有一个现代 GPU ...

  9. dnn神经网络_【李宏毅机器学习笔记】深度神经网络(DNN)

    当我们训练网络的时候,通常会出现如下两种情况: 第一种情况:训练数据表现不好,这种时候通常可以使用新的激活函数,或者调整学习率. 第二种情况:训练数据表现的很好,但是测试数据的表现很差,这个时候可以提 ...

最新文章

  1. mysql servicebroker_阿里云Kubernetes服务 - Service Broker快速入门指南
  2. jmeter结果分析
  3. 步步深入:MySQL架构总览-gt;查询执行流程-gt;SQL解析顺序
  4. RHEL6基础之八查找、文件内容查看类命令
  5. 软件测试理论入门(二)
  6. 设置Elasticsearch N-Gram字分析器的过程
  7. java 静态类的实现_[Java教程]Javascript 静态类的实现
  8. 亿级消息系统的核心存储:Tablestore发布Timeline 2.0模型
  9. window10怎么卸载php,window_win10怎么卸载程序?win10卸载程序教程,当win10正式版发布以后,不少 - phpStudy...
  10. [14-01] 闭包
  11. 详细叙述ajax的详情,ajax的配置详情、ajax的调用解释、ajax的中文乱码和ajax的表单提交(内有实例)...
  12. linux 之间复制文件,两台Linux服务器之间复制文件
  13. mapreduce 和hive 的区别
  14. 两数相加(有序/无序) 时间复杂度小于 O(n2)做题心得
  15. java的panel布局_学习面panel和三种布局
  16. c语言 修正正弦曲线,[原创]正弦曲线
  17. Linux系统zip压缩命令
  18. Windows 10家庭版也能共享打印机(中)解除Guest账户网络登录限制,实现局域网共享...
  19. 加拿大滑铁卢大学计算机世界排名,滑铁卢大学世界排名
  20. MySQL使用cmd输入show databases没有反应

热门文章

  1. linux cgi转发串口数据库,CGI连接数据库的方法
  2. linux引数列项目过长,Linux 命令个人总结====== 未完待续 个人认为比较重要
  3. sas时间和Linux时间转化,尝试在SAS中获取文件属性(文件大小,创建日期时间和上次修改日期时间)...
  4. 贴吧html标签,html标签3(转载)
  5. 那个软件弹出广告_如何关闭烦人的电脑弹窗广告?5种方法教你轻松解决
  6. JAVA8常量池监控_深入探索Java常量池
  7. 使用java搭建直播平台,我就不信你还听不明白了!
  8. python【蓝桥杯vip练习题库】ADV-350珠心算测验
  9. Comet oj比赛组队
  10. java 写流,Java IO中的其他读写流