【吴恩达深度学习笔记-改善深层神经网络】——第一周深度学习的实用层面(1.1)
1.1训练/开发/测试集
如果想要构建一个高效的神经网络,那么配置训练、验证、测试集就要好好斟酌了。
在创建神经网络时,要做一些决策,包括网络有几层,每层有几个隐藏单元,学习率,各层用到的激活函数等。
但在实际应用中,我们不可能一开始就能够准确的预测出这些超参数的值,因而,可以说,应用型机器学习是一个高度迭代的过程。
如果想要构建一个高效的神经网络,那么配置训练、验证、测试集就要好好斟酌了。
在创建神经网络时,要做一些决策,包括网络有几层,每层有几个隐藏单元,学习率,各层用到的激活函数等。
但在实际应用中,我们不可能一开始就能够准确的预测出这些超参数的值,因而,可以说,应用型机器学习是一个高度迭代的过程。
把数据(样本)划分成训练集、验证集(交叉验证)和测试集,采用不同的算法对训练数据进行训练,然后通过验证集来选择出最好的算法,最后用测试集对该算法进行评估。
其中,对于数据规模较小的数据集来说,可以使用传统划分,即60%、20%、20%;而对于数据规模较大的数据集来说,训练数据占得比重较高,而验证集测试集比重小,因为验证的作用只是验证不同算法并选择出最好的,测试集是评估分类器的性能,它们各自所占比重足以进行评估。
紧接着,在实际应用中会遇到训练集和测试集不在同一个分布的问题,例如训练数据图片是高质量高像素的,而用户上传的数据图片是模糊不清晰的:
解决这个问题的办法就是确保验证集和测试集在同一分布就可以了。
如果不想得到无偏差评估算法性能(测试集做的事),实际上也可以省略测试集,即验证集拟合到了测试集,直接通过验证集迭代出最优的训练算法。
总结:搭建训练、验证、测试集可以加速神经网络的集成,也可以有效衡量算法的偏差和方差,从而更高效的选择合适的方法来优化算法。