深度学习的实用层面-1

本文来自于网易云课堂

本次教程继续学习如何有效运作神经网络,设计超参数优化,如何构建数据以及如何确保算法快速运行从而使学习算法在合理时间内完成自我学习。

1 训练、开发、测试集

在配置训练、验证和测试数据集的过程中做出正确决策会在很大程度上帮助大家创建高效的神经网络。在训练神经网络时,我们需要做出很多决策,比如说层数,每层节点数,学习率,每层的激活函数等。我们不可能一开始就给出很正确的参数,实际上,应用型的机器学习是一个高度迭代的过程。
这里写图片描述
循环过程的效率是决定项目进展速度的关键因素,而创建高质量的训练数据集,验证集以及测试集也有助于提高循环效率。
在小数据时代,常见做法是将所有数据三七分,就是人们常说的70%的验证集(development set 简称为dev set),30%测试集(test set),或者是60%训练集(training set),20%验证集,20%测试集。这是前几年机器学习领域普遍认可的最好的实践方法。这个数据量可以是100、1000或者是10000等等。

这里写图片描述

但是在大数据时代,总数据量可能高达百万,那么dev set, test set会变得更小。因为验证集的目的是验证不同的算法更有效,因此验证集要足够大才可以评估几个或者十几个算法并且迅速判断出哪种算法更有效,但不必占比20%,可能数据量只需要10000左右即可。同样,根据最终选择的分类器,测试集的主要目的是正确评估分类器的性能,比如100万个数据中可能取1000个即可。

所以,假设有100万个数据,我们会按照98、1、1的比例选择。大于100万的,会按照99.5,0.25,0.25或者99.5, 0.4, 0.1的比例来划分。

现在另一个趋势是越来越多的人在训练和测试集分布不匹配的情况下进行训练。比如说,你想要构建一个应用程序来识别猫的图片,你的训练集是从网上下载的猫的图片,而你的dev和test set是从相机中获得的图片,那么就会存在这么一种情况:网上的图片分辨率低,而用户的图片分辨率高。这里,根据经验,Andrew Ng建议要确保验证集和测试集的数据来自于同一分布。

最后一点,就算没有测试集可能也没关系。测试集的目的是对最终所选定的神经网络系统做出无偏评估。但如果不需要评估也可以不设置测试集。所以如果只有验证集,没有测试集,我们要做的就是在训练集上训练尝试不同的模型框架,在验证集上评估这些模型,然后迭代并选出使用的模型,因为验证集已经涵盖测试集数据,其不再提供无偏评估。在机器学习中,如果只有训练集和验证集,而没有独立的测试集,在这种情况下,训练集还是被称为训练集而验证集则被称为测试集。不过在实际应用中,人们只是把测试集当成简单交叉验证集使用,并没有完全实现该术语的功能,因为他们把验证集数据过渡拟合到了测试集中,所以如果某团队跟你说他们只设置了一个训练集和一个测试集,Andrew Ng会很谨慎,心想他们是不是真的有训练验证集,因为他们把验证集过渡拟合到了测试集中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值