Mechine Learning Yearning 36-39阅读笔记:训练测试集分布不同

36.什么时候你应该在不同分布上做训练和测试

当你的猫app已经上传10000张图,你已经人工标记它们有没有猫,同时你有200000张互联网上下载的图,这时你要怎么划分训练开发测试集呢?
当你训练深度学习模型时,可能必须用到那200000张图,那么训练和测试集的分布就不同,这会怎样影响你的工作呢?
当然将210000张图片随机分裂到训练开发测试集是一种方法,但我(吴恩达)不推荐这种方法,记住选择开发测试集的推荐方法是:选择你未来预期会得到的数据来作为开发测试集。
大多数学术文章假设训练开发测试集的分布相同,在机器学习的早期,数据稀缺,常常仅有一个服从同一分布的数据集,所以这一假设能够满足。
但在大数据时代,从不同分布所收集来的数据,我们也希望能利用上,因为它能提供大量信息。
对于猫检测这个问题,我们会将猫app上传的5000张图放入开发测试集,训练集大小为205000。
第二个场景,假设你在做一个语音识别系统为一个导航app来转录得地址,你有20000个用户说的街道地址,500000个语音片段用户说其他的内容,这时你可能用10000个地址样本作为开发测试集,其他用作训练集。
我们继续假设你的开发测试集具有相同分布,但是必须明白,训练和开发/测试集分布不同,会带来一些特殊的挑战。
Ps:有些学术研究是训练测试分布不同,但理论和实践中有很大的不同,如果你的训练测试不同分布,那么你的结果很大程度受到运气的影响。

37.如何决定怎么使用你的数据

延续上一章所说,早期的机器学习算法(需要手动设计特征,用一个简单的分类器),将20000张互联图片纳入训练集是很可能带来风险的。但到了大型神经网络时期,这一风险大大削减。这一现象依赖于是存在一个映射能在两种数据上都能表现良好。换句话说,这里存在一个系统不管输入是用户上传的图片还是互联网图片都能可靠的预测标签,即使不知道图片的来源。
加入20000张图片后有以下影响:
1.它给你神经网络更多猫是怎么不是怎样的样本。因为用户上传和互联网图片都有共同点,你的神经网络能从互联网图片中学到能应用到用户上传图片的知识。
2.它迫使神经网络用一些容量来学习互联网图片独特的特征。如果这些特点和用户上传图片很不同,那么因此,它会损伤你的算法的表现。
幸运的是,如果你有足够的容量,那么这可能不是一个重要的问题。如果你没有足够大的神经网络,那么你应该花费更大的精力在你的训练开发测试集保持同分布上。
如果你有大量的无关数据,它们跟猫毫无关系,那么就不要把这些数据当做负样本,因为上面所说的第一条的好处可以忽略不计,学到的东西无法应用到你打开发测试集。

38.如何决定是否包括不一致的数据

假设你要预测纽约的房价,如果你有底特律的房价,房价比纽约低很多,那么你应该将这些数据加入到你的训练集中吗?
房子在底特律还是在纽约会极大影响房价,如果你仅关心纽约的房价,那么最好不加入底特律的数据。
那么纽约底特律样本和手机互联网猫图有什么不同吗?
猫图不同点在于,一个系统可以可靠的预测y,不论输入是来自互联网图片还是app图片,因此互联网图片和算法系统一致,而底特律纽约则不一致。
Ps:事实上可以增加一个新的房子所在地的特征,但是在实际应用中并不常见。

39.给数据权重

在实际应用中,互联图片数量是用户上传图片数量的40倍,如果你没有大量的计算资源,那么你给互联网图片更低的权重作为妥协。这种加权重的方式仅仅当你怀疑添加的数据有不同于开发测试集的分布,或者添加的数据远多于和开发测试集相同分布的数据。

猜你喜欢

转载自blog.csdn.net/juranyaoyingwen/article/details/80597994