之前讲过训练不是拿所有的N个数据都去训练,而是会分为几个batch,这个分的过程就叫做shuffle(洗牌)。

那到底是分batch好还是不分batch好呢,如下图,左图是不分(相当于让batch size直接为N),右边是让size=1。因为走完一个batch就会找到一个梯度,更新一次参数,所以20的肯定比1的这个时间花的更久,因为它得看20个examples再更新,但是它一定比1的更精准。今天这个size为1的会更新20次,但是每一次的更新都很无序。图中比喻成了放技能,20的技能冷却时间长,但是威力更大。

其实在这样说并不能判断出来哪种更好,但是现在有一种东西叫GPU,它可以做并行计算,比如这个TeslaV100,在这个上面,batch size为1和为1000其实都是1秒多,那肯定选batch size大的呀,有精准又时间短。这里就是说的总时间了,总时间是1个epoch里总update的时间乘以跑完一个batch的时间,那如果1和1000都话1S,但是1的update数是1000的1000倍,那1个epoch的总时间就是1000倍了。这也就是在GPU上,小的batch size反而会花更多时间。

不过可以看出来如果数据量太大了,到了100000,花的时间还是会增加。


但是神奇的东西来了,按照刚才的说法,选取大的batch size,能够又powerful又short time。可是,noisy的update其实反而效果更好。如下图,在两个数据集上不同batch size的曲线,纵轴是accuracy准确率,当然是准确率越大越好。此时随着size的增加,准确率是下降的。

原因如下,full batch的时候,因为只更新一次,这一次看完所有的数据,所以相当于沿着L这一个方向在走,很容易陷入stuck中停下来。而小的batch需要看多个方向,在L1的地方卡住了,指不定在L2的相同位置是可走的。

下面是有一篇论文探讨过这个问题,得出来的结论也是在testing上,小batch比大batch好,一个是数据支撑,一个是大概的原理解释。

从数据可以看出来training上都可以到99%,但是在testing上,大的就很明显不如小的了。

解释是说,今天training和testing会很像但是还是会有偏差,那么比如说是向右偏一点的偏差,这里的梯度为0 的低谷点也有两种,一种是很平缓的flat minima,一种是很狭窄的sharp minima。在发生偏差的时候,红色就代表差值,那肯定是flat的偏差小,因为平缓你左右移动一点其实海拔影响不大。而large batch指向性更明显,不容易走出sharp minima,在sharp minima中,小的batch的noisy大,随便指指就出去了。所以小batch的一般是在flat minima。

所以结论就是在testing的时候,small size的batch会又更好的效果。

那么通过以上,我们会发现大的和小的其实各有优势,比如小的虽然画的时间多,但是在optimization和generalization上表现更好。所以batch size成为了一个hyper parameter,由个人来决定。也有很多人来想能不能优点兼得,他们一般会设很大的size然后用其他方法取解决优化上的问题。


下面来讲momentum(动力/冲力)。我们说梯度下降最怕遇到梯度为零的谷底,也就是critical point,或者说local minima,因为到这儿时候就如同下图的小球,走不出去了。但是在实际物理中,小球不会一到这里就停住,他会有一个惯性一个冲量继续往前,甚至可能会翻过去到达另一个更好的minima。

然后回忆一下最原始的梯度下降法,他是每次算一个g之后往g的反方向走(这里不用纠结,总之就是只受算出来的g值影响下一步的方向)。假设初始没有方向就是一个点,那么就会一步步跟着算出来的g走,如果g不巧为0 ,就不会再走下去了。

momentum的思想就是和现实世界的物理规律一样,如果能让移动带有惯性就好了。数学上就设置为会考虑除当前计算的g之外的,前一次的g甚至是前前次的g,它定义为每一次新的移动方向是g的反向和前一次方向的相加。具体如下图。

这一次,在小球移动到最低点的时候,红色的增量,也就是梯度为0了,但是加上前一次移动量之后,它就有可能冲出这个local minima了。

3.31-batch和momentum相关推荐

  1. nuScenes 数据集(CVPR 2020)

    nuScenes 数据集(CVPR 2020) 摘要 1. 引言 1.1 贡献 1.2 相关数据集 2. nuScenes数据集 3. 任务和指标 3.1 检测 3.2 跟踪 4. 实验 4.1 基线 ...

  2. 第七十四篇:机器学习优化方法及超参数设置综述

    第七十四篇:机器学习优化方法及超参数设置综述 置顶 2019-08-25 23:03:44 廖佳才 阅读数 207更多 分类专栏: 深度学习 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-S ...

  3. VGGNet学习笔记及仿真

    VGGNet学习笔记及仿真 文章目录 VGGNet学习笔记及仿真 引言 VGGNet论文笔记 VGGNet架构 参数详解 创新点 训练细节 结果 代码实现 Visualize a few images ...

  4. Raspberry Pi 4B安装 OpenVINO™ 工具包

    OpenVINO™ 下载树莓派使用的 OpenVINO™ 工具包 创建安装文件夹 安装外部软件依赖项 设置环境变量 为英特尔神经计算棒 2 设备添加 USB 规则 构建并运行对象检测示例 查看树莓派有 ...

  5. Pytorch-使用Bert预训练模型微调中文文本分类

    语料链接:https://pan.baidu.com/s/1YxGGYmeByuAlRdAVov_ZLg 提取码:tzao neg.txt和pos.txt各5000条酒店评论,每条评论一行. 安装tr ...

  6. Auto-Keras与AutoML:入门指南

    在本教程中,你将学习如何使用Auto-Keras(Google的AutoML的开源替代品)来实现自动化机器学习和深度学习. 目前来说,深度学习从业者在数据集上训练神经网络时,主要正在尝试优化和平衡两个 ...

  7. 神经网络训练不起来,怎么办?

    Datawhale开源学习,机器学习课程,项目地址:https://github.com/datawhalechina/leeml-notes Optimization Critical Point是 ...

  8. 机器学习实战(11)——初识人工神经网络

    目录 1 感知器 2 多层感知器和反向传播 3 用TensorFlow的高级API训练MLP 4 使用纯TensorFlow训练DNN 4.1 构建阶段 4.2 执行阶段 5 使用神经网络 1 感知器 ...

  9. NLPer福利-中文语言理解基准测【CLUEbenchmark】

    NLPer福利-中文语言理解基准测[CLUEbenchmark] 公众号:ChallengeHub 官方链接:https://www.cluebenchmarks.com Github链接:https ...

  10. 谷歌EfficientNet高效卷积网络的学习和使用

    文章目录 0 引言 1 论文学习 1.1 摘要 1.2 介绍 1.3 相关工作 1.3 复合模型扩展 1.3.1 问题公式化 1.3.2 扩展维度 1.3.3 复合比例 1.4 EfficientNe ...

最新文章

  1. EndNote 高校_【工具】EndNote使用小记
  2. 革新以太网交换机架构 全光网络的风刮进园区
  3. latex 图片大小_用LaTeX写作业——插入图片(二)
  4. 用计算机实现工业自动化,计算机技术在工业自动化控制系统中的应用
  5. 解决vmware报错:Mac OS X is not supported with binary translation.
  6. Linux编译LLVM,如何使用ninja快速编译LLVM和Clang(以llvm3.3为例子)
  7. poj 1719 Shooting Contest 二分匹配
  8. 在苹果Mac上格式化USB闪存驱动器
  9. poj1860Currency Exchange(bell_fordmoban)
  10. 零基础python教程视频
  11. pynq z1+ov5640
  12. 电脑32位和64位是什么
  13. 东南计算机专硕学硕区别,学硕VS专硕,你该如何选择?
  14. 易语言新手入门教程第十四课 - QQ自动登录器第二部分
  15. iOS小技能:合并mp3格式的文件
  16. Matlab工具箱标定和校正鱼眼镜头
  17. tab效果——支持tab标题的宽度自适应
  18. 一文带你学会python新年倒计时
  19. skb_dst_set - struct dst_entry dst 路由子系统使用。
  20. 关于电脑DNS(域名系统)访问不了网页的解决方法

热门文章

  1. 瑞典乐队ABBA回归
  2. 电脑开机,需按F2才能开机怎么办
  3. GDT陶瓷气体放电管与MOV压敏电阻串联时的导通顺序-优恩
  4. html结合css样式作用,css样式表可以实现什么功能?
  5. 【正点原子MP157连载】第十九章 OLED实验-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南
  6. 【情态动词习题】初识
  7. 第8章、下拉列表框Spinner(从零开始学Android)
  8. ICCV2021 语义分割相关论文集合推荐
  9. 登录页面设置cookie,用户登录后,创建cookie保存用户信息
  10. Linux: journal日志文件维护