当前位置:  开发笔记 > 编程语言 > 正文

是否有任何技术可以提前知道深度学习所需的培训示例数量是否达到了良好的性能?

如何解决《是否有任何技术可以提前知道深度学习所需的培训示例数量是否达到了良好的性能?》经验,为你挑选了1个好方法。

深度学习最近是一场革命,它的成功与我们目前可以管理的大量数据和GPU的概括有关.

所以这就是我面临的问题.我知道深层神经网络具有最佳性能,毫无疑问.但是,当训练样本的数量巨大时,它们具有良好的性能.如果训练样本的数量较少,则最好使用SVM或决策树.

但是什么是巨大的?什么是低?在本文的人脸识别(FaceNet by Google)中,他们展示了性能与失败的关系(可以与训练样例的数量相关)

在此输入图像描述

他们使用了100M到200M的训练样例,这是非常大的.

我的问题是:有没有任何方法可以提前预测我需要在深度学习中取得良好表现的训练样例数量?我之所以这样说是因为如果性能不好,手动分类数据集是浪费时间的.



1> lejlot..:

我的问题是:有没有任何方法可以提前预测我需要在深度学习中取得良好表现的训练样例数量?我之所以这样说是因为如果性能不好,手动分类数据集是浪费时间的.

简短的回答是否定的.你没有这种知识,而且你永远不会有.这些问题永远无法解决.

你可以拥有的只是一些一般的启发式/经验知识,它们会说DL很可能不能很好地工作(因为它可以预测方法的失败,而几乎不可能预测成功),仅此而已.在目前的研究中,DL很少适用于小于数千/数百万个样本的数据集(我不算MNIST,因为一切都适用于MNIST).此外,DL实际上仅仅研究了两种类型的问题 - NLP和图像处理,因此你无法真正将其解决任何其他类型的问题(没有免费的午餐定理).

更新

只是为了让它更清晰一些.您所询问的是预测给定的估计量(或估计量集)是否会在给定特定训练集的情况下产生良好的结果.实际上你甚至只限制了尺寸.

最简单的证明(基于您的简化)如下:对于任何N(样本大小)我可以构建N模式(或N ^ 2使其更加明显)分布,没有估计可以合理估计(包括深度神经网络)并且我可以用一个标签构建琐碎的数据(因此完美的模型只需要一个样本).证明结束(对于相同的N,有两个不同的答案).

现在让我们假设我们可以访问训练样本(目前没有标签)而不仅仅是样本大小.现在我们给出大小为N的X(训练样本).我再次构建N模式标记,不可能估计分布(通过任何东西)和普通标记(只是一个标签!).再次 - 完全相同输入的两个不同答案.

好吧,也许我们可以根据训练样本和标签来预测哪些表现良好?现在我们不能操纵样本或标签来表明没有这样的功能.所以我们必须回到统计数据和我们想要回答的问题.我们询问损失函数对整个概率分布的预期值,它产生了我们的训练样本.所以现在再次,整个"线索"是,我可以操纵基础分布(构建许多不同的分布,其中许多不可能通过深度神经网络很好地建模),并且仍然期望我的训练样本来自它们.这就是统计学家所说的从pdf中获得不具有代表性的样本的问题.特别是在ML中,我们经常将这个问题与维度的诅咒联系起来.简单来说 - 为了很好地估计概率,我们需要大量的样本.西尔弗曼表示,即使你知道你的数据只是一个正态分布,你也会问"0中的值是多少?" 你需要指数很多样本(与空间维度相比).在实践中,我们的分布是多模态的,复杂的和未知的,因此这个数量甚至更高.我们可以很安全地说,由于我们可以收集的样本数量很多,我们无法估算出超过10个维度的合理分布.因此 - 无论我们如何最大限度地减少预期误差,我们只是使用启发式算法,它将经验误差(拟合到数据)与某种正则化联系起来(去除过度拟合,通常通过对分布族进行一些先验假设).总而言之,我们无法构建一种能够区分我们的模型是否表现良好的方法,因为这需要决定哪些"复杂性"分布生成我们的样本.当我们能够做到这一点时会有一些简单的情况 - 可能他们会说"哦!这个数据如此简单,甚至knn也能很好用!".你不能拥有通用工具,DNN或任何其他(复杂)模型(严格来说 - 我们可以为非常简单的模型提供这样的预测器,因为它们非常有限,我们可以轻松检查您的数据是否遵循这种极端简单或不).

因此,这几乎归结为同样的问题 - 实际建立模型......因此,您需要尝试并验证您的方法(因此 - 如果DNN运作良好,则训练DNN回答).你可以在这里使用交叉验证,bootstraping或其他任何东西,但所有必须做同样的事情 - 构建你想要的类型的多个模型并验证它.

总结一下

我没有声称我们不会有一个很好的启发式,启发式驱动ML的很多部分相当不错.我只回答是否有一种能够回答你问题的方法 - 并且没有这样的东西而且不存在.可以有许多经验法则,对于某些问题(问题类别)可以很好地工作.我们已经有了这样的:

对于NLP/2d图像,您至少应该有~100,000个样本才能使用DNN

有很多未标记的实例可以部分替代上面的数字(因此你可以有30,000个标记的那些+ 70,000个未标记的)具有非常合理的结果

此外,这并不意味着给定这样大小的数据DNN将优于核化SVM甚至线性模型.这正是我之前提到的 - 您可以轻松地构建分布的反例,其中尽管样本数量很多,但SVM的工作方式相同甚至更好.这同样适用于任何其他技术.

然而,即使你只是感兴趣DNN会运作良好(而不是比其他人更好),这些只是经验性的,微不足道的启发式算法,它们基于最多10种(!)类型的问题.将这些作为规则或方法处理可能是非常有害的.这只是粗略的,通过在过去十年中发生的极其非结构化的随机研究获得的第一个直觉.

好的,所以我现在迷路了......我什么时候应该使用DL?答案非常简单:

仅在以下情况下使用深度学

您已经测试过"浅层"技术,但效果不佳

你有大量的数据

你有巨大的计算资源

你有经验神经网络(这是非常棘手和ungreatful模型,真的)

你有足够的时间,即使你只有几个%的效果更好.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有