训练神经网络的一些技巧(包括激活和损失函数的选择、调参、过拟合等)
问题类型 | 最后一层激活函数 | 损失函数 |
---|---|---|
二分类问题 | sigmoid | binary_crossentropy |
多分类、单标签问题 | softmax | categorical_crossentropy |
多分类、多标签问题 | sigmoid | binary_crossentropy |
回归到任一值 | 无 | mse |
回归到0~1范围内的值 | sigmoid | mse或binary_crossentropy |
batch_size的选择
使用大的batch size有害身体健康。更重要的是,它对测试集的error不利。一个真正的朋友不会让你使用大于32的batch size。直说了吧:2012年来人们开始转而使用更大batch size的原因只是我们的GPU不够强大,处理小于32的batch size时效率太低。这是个糟糕的理由,只说明了我们的硬件还很辣鸡。也就是最好的实验表现都是在batch size处于2~32之间得到的。因为batch_size越小时每次更新时由于没有使用全量数据而仅仅使用batch内数据,从而人为给训练带来了噪声,而这个操作却往往能够带领算法走出局部最优(鞍点)。当模型训练到尾声,想更精细化地提高成绩(比如论文实验/比赛到最后),有一个有用的trick,就是设置batch size为1,即做纯SGD,慢慢把error磨低。
一些技巧
一旦得到了具有统计功效的模型,问题就变成了:模型是否足够强大?它是否具有足够多的层和参数来对问题进行建模?例如,只有单个隐藏层且只有两个单元的网络,在 MNIST 问题上具有统计功效,但并不足以很好地解决问题。请记住,机器学习中无处不在的对立是优化和泛化的对立,理想的模型是刚好在欠拟合和过拟合的界线上,在容量不足和容量过大的界线上。为了找到这条界线,你必须穿过它。
要搞清楚你需要多大的模型,就必须开发一个过拟合的模型,这很简单。
(1) 添加更多的层。
(2) 让每一层变得更大。
(3) 训练更多的轮次。
要始终监控训练损失和验证损失,以及你所关心的指标的训练值和验证值。如果你发现模型在验证数据上的性能开始下降,那么就出现了过拟合。下一阶段将开始正则化和调节模型,以便尽可能地接近理想模型,既不过拟合也不欠拟合。
模型正则化与调节超参数
这一步是最费时间的:你将不断地调节模型、训练、在验证数据上评估(这里不是测试数据)、再次调节模型,然后重复这一过程,直到模型达到最佳性能。你应该尝试以下几项:
1)添加 dropout。
2)尝试不同的架构:增加或减少层数。
3)添加 L1 和 / 或 L2 正则化。
4) 尝试不同的超参数(比如每层的单元个数或优化器的学习率),以找到最佳配置。
5)(可选)反复做特征工程:添加新特征或删除没有信息量的特征。
请注意:每次使用验证过程的反馈来调节模型,都会将有关验证过程的信息泄露到模型中。如果只重复几次,那么无关紧要;但如果系统性地迭代许多次,最终会导致模型对验证过程过拟合(即使模型并没有直接在验证数据上训练)。这会降低验证过程的可靠性。
一旦开发出令人满意的模型配置,你就可以在所有可用数据(训练数据 + 验证数据)上训练最终的生产模型,然后在测试集上最后评估一次。如果测试集上的性能比验证集上差很多,那么这可能意味着你的验证流程不可靠,或者你在调节模型参数时在验证数据上出现了过拟合。在这种情况下,你可能需要换用更加可靠的评估方法,比如重复的 K 折验证。
训练神经网络的一些技巧(包括激活和损失函数的选择、调参、过拟合等)相关推荐
- ML之R:通过数据预处理利用LiR/XGBoost等(特征重要性/交叉训练曲线可视化/线性和非线性算法对比/三种模型调参/三种模型融合)实现二手汽车产品交易价格回归预测之详细攻略
ML之R:通过数据预处理利用LiR/XGBoost等(特征重要性/交叉训练曲线可视化/线性和非线性算法对比/三种模型调参/三种模型融合)实现二手汽车产品交易价格回归预测之详细攻略 目录 三.模型训练 ...
- 机器学习笔记 - 加速神经网络训练的 7 个技巧
更快地训练神经网络是深度学习的重要因素之一.我们通常发现神经网络的这些困难在于其复杂的架构和使用的大量参数.随着数据量.网络和权重的增加,模型的训练时间也会增加,这对建模者和从业者来说都是不利的.在本 ...
- 从零开始教你训练神经网络(附公式学习资源)
来源:机器之心 作者:Vitaly Bushaev 本文长度为8900字,建议阅读15分钟 本文从神经网络简单的数学定义开始,沿着损失函数.激活函数和反向传播等方法进一步描述基本的优化算法. 作者从神 ...
- 从零开始:教你如何训练神经网络
原文链接 :https://zhuanlan.zhihu.com/p/31953880 选自TowardsDataScience 作者:Vitaly Bushaev 机器之心编译 作者从神经网络简单的 ...
- 漫谈机器学习的【泛化能力】【模型能力】【调参技巧】_CodingPark编程公园
漫谈机器学习 完成第一幅初稿 完成终稿 1945年12月5日 1946年1月17日 前言 上面的画就是20世纪最著名的抽象派画家毕加索于1946年1月17日完稿的画作--公牛,寥寥几笔,勾勒出公牛的& ...
- 深度神经网络训练的必知技巧
本文主要介绍8种实现细节的技巧或tricks:数据增广.图像预处理.网络初始化.训练过程中的技巧.激活函数的选择.不同正则化方法.来自于数据的洞察.集成多个深度网络的方法. 1. 数据增广 在不改变图 ...
- 训练神经网络的技巧总结
训练神经网络是一个复杂的过程. 有许多变量相互配合,通常不清楚什么是有效的. 以下技巧旨在让您更轻松. 这不是必须做的清单,但应该被视为一种参考. 您了解手头的任务,因此可以从以下技术中进行最佳选择. ...
- 训练神经网络的秘诀,Andrej Karpathy大神的刷屏之作
点击上方"AI公园",关注公众号,选择加"星标"或"置顶" 作者:Andrej Karpathy 编译:ronghuaiyang 导读 这几 ...
- 训练神经网络的详细步骤,m1芯片的训练神经网络
如何训练神经网络 1.先别着急写代码训练神经网络前,别管代码,先从预处理数据集开始.我们先花几个小时的时间,了解数据的分布并找出其中的规律. Andrej有一次在整理数据时发现了重复的样本,还有一次发 ...
最新文章
- sqoop2增量导入无法指定last value问题解决方法
- 基于OpenLDAP_MirrorMode的OpenLDAP高可用
- Redis RDB、AOF持久化详解
- 【电影】美丽心灵的永恒阳光
- 食品安全--牛奶和蛋白质浅谈
- Adobe illustrator 批量变换同时选中的单个对象 - 连载 12
- 变速更顺滑_CVT变速箱中的小弱鸡?10万公里必坏?变速箱该如何养护?
- 买写真送手机系列 小米9王源限量版预售将在这些小米之家开启
- Android Sensors (3) 传感器坐标系统
- 联想杀毒显示 你的计算机有风险,都在说联想电脑管家,那我们也来看看这联想杀毒是怎么一回事-电脑管家怎么样...
- CREO图文教程:三维设计案例之一腔多模设计(定位参照零件导入模具模型)图文教程之详细攻略
- Liunx文件常用命令总结
- oracle安装后,电脑变得很卡,解决办法(安装的是oracle11g)
- 【安全】漏洞挖掘之王的传奇人生
- linux配置rsync排除某些目录,10个linux rsync命令排除文件/目录
- execution使用
- HTML--onkeydown和onkeyup区别
- 如何在手机上完成日语翻译中文
- 项目2—职员有薪水了
- 花了两个月,研究了多家大厂的岗位JD,发现.....
热门文章
- 12.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
- fedora27安装谷歌浏览器Chrome
- python查找元素的下标 leetcode 392
- leetcode 45 python
- c语言a b的和 不用加号,力扣(LeetCode)刷题,简单题(第16期)
- C语言指针作为参数的传递问题
- 标题在图表上_Excel 2010基础应用:图表的创建与编辑
- 实战经验:Oracle Lost Write Detection机制导致Select产生大量Redo
- (又有惊喜)Redis5.0重量级特性Stream尝鲜
- 被灵魂问倒:这个BUG为什么没测出来?