应用 ML 是一个高度迭代的过程
Idea->Code->Experment->...
去不断地调整超参数.
Train/Dev/Test sets
通常将数据集划分为 Train/Dev/Test 集.
Training set: 用于模型的训练
Hold-out cross validation set/Developmet set: 用于测试, 调整模型超参数
Test set: 用于最终评估
以前的 ML 问题: 数据规模在 w 级, 通常 70/30 划分 Train/Test 集或者 60/20/20 比例划分.
现在的大数据时代: 数据规模在百 w 级, 趋势是 Dev/Test 集的比例减小, 因为 Dev 集只需要大到足够判断不同的模型的优劣就可以了, Test 集类似. 如有 100w 的数据集, 98/1/1 的比例是一种较合理的划分.
经验:
确保 Dev/Test 集来自同一个分布, 这样有助于算法进步的效率.
训练集则可以采取网页爬取等方式以获得更大量的数据.
没有测试集也是可以的, 只用 Dev 集来调整.
Bias/Variance
可以通过 Train set error 和 Dev set error 来判断模型是否存在 high bias/variance 的问题.
比如, 假设假设 bayes error 约为 0%, 即人类可以几乎完全准确识别, 并且 Train 和 Dev 集来自同一个分布.
Train set error | Dev set error | 结果 |
---|---|---|
1% | 11% | high variance |
15% | 16 | high bias |
15% | 30% | high variance & high bias |
0.5% | 1% | low variance & low bias |
Some Basic recipe(基本准则)
STEP1 High bias? --> 更大的网络; 训练更长时间;(其他 NN 架构)
STEP2 High variance? --> 更多的数据; 正则化;(其他 NN 架构)
在深度学习时代, 不需要再过多考虑 bias 和 variance 的权衡, 如果合理的正则化, 采用更大的网络在降低 bias 的同时几乎不会增加 variance, 如果有足够大的网络, 获得更多的数据在降低 variance 时几乎不会增加 Bias, 这也是深度学习在监督学习领域十分有效地原因之一.
来源: http://www.bubuko.com/infodetail-2479767.html