1.深度学习的一些基本概念,学习率、batch、epoch、optimizer、评价函数(损失函数)等


1.1 学习率(Learning Rate)

学习率:是控制模型学习效率(步长)的权重。

学习率的大小区分

区别 学习率大 学习率小
学习速度
应用场合 训练初期 数次Epoch过后
缺点 1.容易损失过大 2.容易发生振荡 1.容易过拟合 2.收敛速度慢

学习率的设置

在训练过程中,一般根据训练轮数设置动态变化的学习率:
1.刚开始训练时:学习率以 0.01 ~ 0.001 为宜。
2.一定轮数过后:逐渐减缓。
3.接近训练结束:学习速率的衰减应该在100倍以上。

学习率减缓机制

  轮数减缓 指数减缓 分数减缓
英文名 step decay exponential decay 1/t1/t decay
方法 每N轮学习率减半 学习率按训练轮数增长指数插值递减 lrt=lr0/(1+kt)lrt=lr0/(1+kt) ,kk 控制减缓幅度,tt 为训练轮数

loss-Epoch图像

理想情况下曲线应该是滑梯式下降,如图中的[绿线]:

  1. 曲线 初始时 上扬 [红线]: Solution:初始 学习率过大 导致 振荡,应减小学习率,并 从头 开始训练 。
  2. 曲线 初始时 强势下降 没多久 归于水平 [紫线]: Solution:后期 学习率过大 导致 无法拟合,应减小学习率,并 重新训练后面几轮 。
  3. 曲线 全程缓慢 [黄线]: Solution:初始 学习率过小 导致 收敛慢,应 增大学习率,并从头开始训练。

1.2 Batch(批次)

批量,即Batch,是深度学习中的一个重要概念。
批量通常指两个不同的概念——如果对应的是模型训练方法,那么批量指的是将所有数据处理完以后一次性更新权重或者参数的估计;如果对应的是模型训练中的数据,那么批量通常指的是一次输入供模型计算用的数据量。

基于批量概念的模型训练通常按照如下步骤进行:

处理所有数据

更新参数

初始化参数

得到新的权重

批量算法相对应的是递增算法,其步骤如下:

处理一个或者一组数据点

更新参数

初始化参数

得到新的权重

对比:

这里的主要区别是批量算法一次处理所有的数据;而在递增算法中,每处理一个或者数个观测值就要更新一次参数。
在后向传播算法中,“处理”对应的具体操作就是计算损失函数的梯度变化曲线。如果是批量算法,则计算平均或者总的损失函数的梯度变化曲线;而如果是递增算法,则计算损失函数仅在对应于该观测值或者数个观测值时的梯度变化曲线。
“更新”则是从已有的参数值中减去梯度变化率和学习速率的乘积。

为什么要用batch?

batch可以大致理解为计算损失函数时需要用到的样本个数,以上两种不同的概念,仅是在样本个数差异上的不同体现。

1.遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度。这称为Batch gradient descent,批梯度下降。这种方法缺点很明显,计算量大,吃内存,不适用于在线学习。

2.每输入一个数据就计算一次损失函数,进而求梯度并更新参数,称为随机梯度下降,stochastic gradient descent,这种方法速度较快,但由于迭代一次仅依靠单一样本,很容易在相邻的两次迭代计算中的产生梯度差距非常大,甚至方向相反,因此容易不收敛。

3.另一种就是将上述两种方法的折中,称为mini-batch gradient decent,将数据集分成一定数量的批,梯度不容易跑偏容易收敛,同时减少了一次处理的数据数量,因而计算量也小了很多,速度较快。

批量梯度下降法(BGD, Batch Gradient Descent)
随机梯度下降法(SGD, Stochastic Gradient Descent)
小批量梯度下降法(Mini-batch Gradient Descent)


如上图所示,总结:

优点 缺点
1.相对于海量数据的大内存,Mini-batch只需要小内存 1.批次越小,梯度的估值不准确
2.速度更快 2.批次越小,越不容易收敛
3. 选取局部的梯度方向,较之全局的学习率简单 3.所有参数都是用同样的learning rate

当数据集较大时,并不是适合一次将所有样本批量输入进行训练,而应该使用一个合适的数量来训练,这个合适的数量又该如何选择?

batch_size如何选择?

在合理范围内增大batch_size:
1.能提高内存使用率。
2.减少Epoch迭代次数,提高训练速度。
3.一定范围内batch_size越大,确定的梯度下降方向越准确。

盲目增大batch_size:
1.内存不足。
2.Epoch迭代次数过少,要想达到相同的精度,时间花费增加,调参整体进度下降。
3.batch_size大到一定程度,梯度方向基本不改变。

总结:在硬件配置允许下,从小(也不能过小)增大batch_size,直至一个比较合适的数量,有人指出,将batch_size设置成2的次方倍能加快速度(未经考证)。

自适应梯度剪切

由于链式法则的计算,当网络的层数非常多时,经常出现梯度消失或者梯度爆炸的现象。体现在图像,就是损失函数有一个悬崖式的变化。如果设置的学习率太大,那么可能出现修改过度,甚至丢失已经优化好的数据。而自适应梯度剪切就是根据你的学习率,调整梯度的角度,确保收敛的稳定性。

高学习率

提高收敛速度的最直接方式就是增大学习率,但单纯的增大高学习率会产生收敛问题(收敛不稳定),虽然作者已经用了自适应梯度剪切的方法来增大收敛稳定性。但作者在设置学习率时,也能使用一下技巧来增强收敛稳定性。具体的做法是,一开始设置一个很大的学习率(CDSR简单地令每层的学习率相同),每过20个epochs,将学习率缩小十倍。这么做的原理也很直观,一开始训练时网络损失函数还较大,能够大胆地用高学习率来缩短收敛时间,随着训练次数得增多,模型趋向收敛,如果继续用高学习率,就会破坏收敛稳定性,所以改用小学习率,确保网络收敛。这么多次缩小学习率,进一步缩小了收敛时间。

原文:https://blog.csdn.net/gwplovekimi/article/details/83041627

深度学习-网络训练技巧相关推荐

  1. 深度学习 网络训练技巧

    网络训练技巧: 1.数据增强:缩放.随机位置截取.翻卷.随机旋转.亮度.对比度.颜色变化等方法. 2.学习率衰减:随着训练的进行不断的减小学习率. 例如:一开始学习率0.01,在10000步后降为0. ...

  2. 深度学习网络训练技巧

    (改了点) 转载请注明:炼丹实验室 新开了一个专栏,为什么叫炼丹实验室呢,因为以后会在这个专栏里分享一些关于深度学习相关的实战心得,而深度学习很多人称它为玄学,犹如炼丹一般.不过即使是炼丹也是可以摸索 ...

  3. 深度学习网络训练中出现nan的原因分析

    报错: nan:Not a Number 该错误导致的后果:造成训练准确率的断崖式下跌 错误原因分析: 1)在loss函数中出现nan 出现原因:一般是因为tf中的log函数输入了'负数'或'0'值( ...

  4. 深度学习网络调试技巧

    https://zhuanlan.zhihu.com/p/20792837 转载请注明:炼丹实验室 神经网络的代码,比一般的代码要难调试不少,和编译错误以及运行时程序崩溃相比,神经网络比较棘手的地方, ...

  5. 踩坑实录——多光谱影像(.tif)输入深度学习网络训练

    项目场景: 从github下载了fastercnn_Resnet50的目标识别网络,尝试把多光谱影像数据集(.tif)输入进去进行训练,由于本人是刚接触深度学习的小白,网上又没有找到相关教程,只能一边 ...

  6. 深度学习模型训练技巧

    博主以前都是拿别人的模型别人的数据做做分类啊,做做目标检测,搞搞学习,最近由于导师的工程需求,自己构造网络,用自己的数据来跑网络,才发现模型训练真的是很有讲究,很有技巧在里面,最直接的几个超参数的设置 ...

  7. 没有独立显卡,虚拟的显卡,能进行深度学习网络训练吗

    好像不能 什么也没有,检测不出来显卡 虚拟机检测不出来显卡的原因是装了tensorflow和tensorflow-gpu.把tensorflow卸载了,重新装一次tensorflow-GPU即可

  8. 深度学习网络调参技巧

    深度学习网络调参技巧 本文转载自[炼丹实验室],讲了一些深度学习训练的技巧,其中包含了部分调参心得:深度学习训练心得.不过由于一般深度学习实验,相比普通机器学习任务,时间较长,因此调参技巧就显得尤为重 ...

  9. (六)使用ResNet50迁移学习进行COVID-19诊断:从头开始构建深度学习网络

    目录 安装库并加载数据集 预处理数据 构建深度学习网络 训练网络 评估网络 下一步? 下载源 - 300.4 KB 在本系列文章中,我们将应用深度学习网络ResNet50来诊断胸部X射线图像中的Cov ...

最新文章

  1. SegmentFault 技术周刊 Vol.21 - 程序人生(二):2016 这一年
  2. ReentrantLock可重入锁的使用场景(转)
  3. 打开 计算机 找不到桌面图标,电脑启动后桌面图标不见了怎么办 不显示图标解决办法...
  4. 使用Dynamic LINQ实现Ext Grid的远程排序
  5. 分区格式化并给用户设定配额
  6. html5中底部对齐怎么写,如何将页脚(div)与页面底部对齐?
  7. 使用Prometheus和Grafana监视开放自由
  8. 电脑系统哪个最好用_袪痘袪痘印哪个产品最好 祛痘印最好用的产品十大推荐...
  9. 安装Hyper-v Server 2016
  10. 函数 strncpy、strncat、strncmp、strrchr 的实现
  11. .desktop 桌面快捷_两个按键:手机截屏且保存至电脑桌面
  12. 安卓版teamview15.5.3
  13. Mybatis提高查询效率的方式
  14. 【自用】图像算法、计算机视觉面试问题及答案1.0
  15. 数据结构 第七章 图(图的概念和存储)
  16. 基于opencv-python的车道线检测(高级)
  17. 通知:台湾虾皮跨境物流成本(藏价)调整
  18. [RoCE]RDMA over Converged Ethernet模式以及配置
  19. php导出excel 颜色,phpexcel导出excel的颜色和网页中的颜色显示不一致
  20. vrrp路由器三种状态_VRRP协议具体解释

热门文章

  1. 数据结构——掌握求解活动的最早(晚)开始时间
  2. 图片边框放在图片中的html,css怎么给图片加上下边框?
  3. 最近遇到的小程序工具刷新部分功能失效的问题
  4. java 蓝桥杯 九宫幻方 ---ERIC-0222
  5. c语言从键盘输入asdfg输出asdfg,C语言编程问题 C语言编程问题:题目计算圆的面积。...
  6. 突破+服务器安全狗+无法修改,服务器安全狗如何设置
  7. 【设计模式2022】第六章 建造者模式
  8. 脉冲信号研究(matlab代码实现)
  9. Techsmith Camtasia Studio2023专业电脑屏幕录制工具
  10. 《玩转3D打印》——2.1节3D建模软件