当前位置: 首页 > 科技观察

深度学习遇到稀缺数据就束手无策了吗?这里有一些好主意!

时间:2023-03-17 16:42:31 科技观察

对于深度学习来说,当数据很多的时候,问题再复杂,但是没有那么多数据怎么办?本文作者TylerFolkman介绍了几种在有限数据上使用深度学习的方法,让深度学习即使在数据稀缺的情况下也能大显身手。我们都知道深度学习是有史以来最好的东西。它能够以低成本解决大量数据上的复杂问题。唯一的问题是,你既不在谷歌工作,也不在Facebook工作,你的数据很少,你该怎么办?深度学习的能力还能继续用吗,还是无计可施?让我介绍几种在有限数据上使用深度学习的方法,以及为什么我认为这可能是未来研究中最令人兴奋的领域之一。1.从简单开始在我们探索在有限数据上使用深度学习的方法之前,让我们从神经网络退后一步,建立一个简单的基线。试验一些传统模型(如随机森林)通常不会花费很长时间,这将有助于评估深度学习的所有潜在改进,并为您的问题的深度学习方法和其他方法之间的权衡提供更多视角。2.获取更多的数据听起来很可笑,但是你真的考虑过是否可以收集更多的数据吗?我经常向公司建议获取更多数据,但他们把我的建议当成疯子疯狂的话,这让我很惊讶。是的,可以投入时间和金钱来收集更多数据,事实上,这通常是您最好的选择。例如,也许您正在尝试对稀有鸟类进行分类,但数据非常有限。您几乎可以肯定地通过注释更多数据相对轻松地解决这个问题。您不确定需要收集多少数据?为此,可以尝试在添加额外数据时绘制学习曲线(相关教程链接),同时查看模型性能的变化,从而确定所需的数据量。3.DrewPatrickMiller微调摄影,来源Unsplash(网站链接)现在假设您已经有了一个简单的基线模型,并且获取更多数据要么不可行要么成本太高。此时最可靠和正确的方法是利用预训练模型,然后针对您的问题微调模型。微调的基本思想是取一个非常大的与模型领域有些相似的数据集,训练一个神经网络,然后用你的小数据集微调这个预训练的神经网络.您可以阅读这篇文章AComprehensiveguidetoFine-tuningDeepLearningModelsinKeras:文章链接对于图像分类问题,最常用的数据集是ImageNet。该数据集涵盖了多类对象的数百万张图像,因此可用于多种类型的图像问题。它甚至包括动物,因此它可能有助于对稀有鸟类进行分类。有关用于微调的一些代码,请参阅Pytorch的教程(教程链接)。4.数据增强如果您无法获得更多数据并且无法成功微调大型数据集,数据增强通常是您的下一个最佳选择。它也可以与微调一起使用。数据扩充背后的想法很简单:改变输入以提供新数据而不改变标签值。比如你有一张猫的图片,旋转图片后还是一张猫的图片,这是一个很好的数据增强。另一方面,如果你有一张道路图片并想预测适当的方向盘旋转(自动驾驶汽车),旋转道路图像将改变适当的方向盘旋转,除非你将方向盘旋转调整到适当的位置,否则很难预测成功。数据增强是图像分类问题中最常用的方法,相关技术可以在这个网站上获得。你也可以经常想到一些创造性的方法将数据增强应用到其他领域,比如NLP(见相关例子),人们也在尝试使用GANs来生成新的数据。如果对GAN方法感兴趣,可以阅读文章《深度对抗数据增强》(DeepAdversarialDataAugmentation)(文章链接)。5.CosineLoss最近的一篇论文《不使用余弦损失进行预训练的情况下在小数据集上进行深度学习》(DeepLearningonSmallDatasetswithoutPre-TrainingusingCosineLoss)(论文链接)发现,在分类问题中,当将损失函数从分类交叉熵损失转换为余弦损失时,Accuracy增加了在余弦损失仅为“1-余弦相似度”的小型数据集上降低30%。从上图中,您可以看到性能如何根据每个类的样本数量而变化,以及微调对某些小型数据集(CUB)的价值如何,而对其他数据集(CIFAR-100)的价值却没有那么大。六、深入在一篇NIPS论文《小数据集的现代神经网络泛化》(ModernNeuralNetworksGeneralizeonSmallDataSets)(论文链接)中,作者将深度神经网络视为集合。具体来说,“不是每一层都表现出不断增加的特征层次结构,最后一层提供了一种集成机制。”小数据的好处是确保您构建利用这种集成效应的深度网络。7.autoencoder现在已经成功地使用stackedautoencoder通过采用更优化的起始权重来预训练网络(关于这种情况,请参考论文“Usingdeepneuralnetworkwithsmalldatasettopredictmaterialdefects”)。这避免了局部优化和其他错误初始化的陷阱。不过,AndrejKarpathy建议不要对无监督预训练过于兴奋(相关文章请参考:http://karpathy.github.io/2019/04/25/recipe/)。如果您需要复习自动编码器,请查看斯坦福的深度学习教程(URL)。自动编码器的基本思想是构建一个预测输入的神经网络。8.Priorknowledgemap4:摄影师GlenNoble,来源Unsplash(网站链接)最后一点是试图找到结合特定领域知识的方法来指导学习过程。例如,在论文《通过概率程序规划归纳进行类人概念学习》(Human-levelconceptlearningthroughprobabilisticprograminduction,linktothepaper)中,作者构建了一个模型,可以在学习过程中使用先验知识从部分概念构建整体概念。这样的模型可以达到人类水平的性能并超越当前的深度学习方法。您还可以使用领域知识来限制网络的输入以降低维度或将网络架构调整为更小。我把它留作最后的手段,因为整合先验知识可能是一个挑战,而且通常是最耗时的。9.让深度学习在小数据上变得很酷我希望这篇文章能为您提供一些关于如何在有限数据上使用深度学习技术的想法。就我个人而言,我认为这是一个目前没有得到充分讨论的问题,但它具有非常令人兴奋的影响。大量问题的数据非常有限,例如检测罕见疾病或教育成果,因为获取更多数据要么成本高得令人望而却步,要么不可行。找到应用深度学习等最佳技术来解决这些问题的方法是非常令人兴奋的!正如吴恩达也提到的:本文转载自雷锋网。