小数据也有大未来,数据稀缺如何应用深度学习?

全文共 2420 字,预计学习时长 7 分钟

来源:Pexels

有人说,深度学习是目前科技界 最大的瓜,每个人都想分一块。

它承诺以最小代价的大数据解决最复杂的问题。 但现在大家面对的普遍问题是: 我们既不在谷歌工作也不在Facebook工作,数据很稀缺,还能利用深度学习吗?

答案是: 能!

下面就和小芯一起看看如何在有限的数据下利用深度学习吧~

开始越简单越好

在讨论针对有限数据利用深度学习的方法之前,请先后退一步,从神经网络开始,建立一个简单的基线。 用一些传统模型(如随机森林)进行实验通常不会花费很长时间。

这将帮助您评估深度学习的一些潜在提升,并为您的问题提供大量关于深度学习与其他方法之间权衡的见解。

得到更多的数据

这听起来可能很荒谬,但是你考虑过是否可以收集更多的数据吗?

有人会经常向公司提出这样的建议,但公司大多数的人都会觉得你好像疯了一样,这似乎十分出乎意料。

是的,投入时间和金钱去收集更多的数据是可以的。 事实上,这往往是你最好的选择。 例如,也许你正试图对稀有鸟类进行分类,但数据非常有限。 几乎可以肯定地说,通过标记更多的数据,你将更容易解决这个问题。

不确定需要收集多少数据? 尝试在添加额外数据时绘制 学习曲线 ,并查看模型性能的变化。

微调

假设你现在有一个简单的基线模型,并且不能收集更多数据或者造价昂贵。 此时最可靠、最正确的方法是利用预先训练好的模型,然后针对问题对模型进行微调。

来源:Pexels

微调的基本思路是选取一个非常大的数据集,希望它在某种程度上与你的域相似,然后训练一个神经网络,使用较小的数据集对这个预先训练好的网络进行微调。 你可以在 本文 中了解更多信息。

对于图像分类问题,最常用的数据集是 ImageNet 这个数据集包含数百万张类对象图片,因此可以用于很多类型的图像问题。 它甚至包括动物,因此可能对稀有鸟类的分类有所帮助。

要开始使用一些用于微调的代码,请参阅Pytorch的优秀 教程

数据扩充

如果你无法获得更多的数据,也不能成功地对大型数据集进行微调,那么数据扩充通常是您的下一个最佳选择,它还可以与微调一起进行。

数据扩充背后的思想很简单: 在不更改标签值的情况下,通过更改输入来提供新数据

例如,如果有一张猫的图片,旋转它,它仍然是一张猫的图片。 因此,这将是很好的数据扩充。 另一方面,如果你有一张道路的图片,想要预测适当的转向角度(自动驾驶汽车),旋转图像会改变适当的转向角度是不可能的,除非方向盘的角度也适当做出了调整。

数据扩充适用于最常见的图像分类问题,你可以在 此处 找到该技术的相关信息。

通常可以想到一些创造性的方法来扩充其他领域(例如NLP)中的数据(请参见 此处 的示例),并且人们也在尝试使用 生成对抗网络(GAN) 来生成新数据。 如果GAN的方法有点意思,那么看一下 DADA 深度对抗性数据扩充(Deep Adversarial Data Augmentation)。

余弦损失

最近的一篇名为《在没有使用余弦损失进行预处理的情况下对小数据集进行深度学习》(Deep Learning on Small Datasets without Pre-Training using cosLoss)的 论文 表示,在分类问题中将损失函数从分类交叉熵损失转换为余弦损失时,小数据集的准确率提高了30%。 余弦损失就是1- 余弦相似度(cosine similarity)

从上面的图中可以看出,基于每个类的样本数量,性能是如何变化的,以及微调对于一些小型数据集(CUB)是多么有价值,而对于其他数据集(CIFAR-100)则价值不是那么高。

深入

在NIPs的一篇 论文 中,现代神经网络概括了小数据集,他们将深度神经网络视为整体。 具体来说,“不是每一层都呈现一个不断增加的特征层次结构,而是最后一层提供了一个集成机制。

小芯从中得到的教训是,对于小数据,要确保你建立了深入的网络来利用这种集成效应。

自动编码

使用堆叠式自动编码,以更理想的初始权重对网络进行预训练已经取得了一些 成就 ,这可以避免局部最优和其他错误初始化的隐患。 不过,安德烈·卡帕蒂(AndrejKarpathy) 建议 不要对无监督的预训练感到过度兴奋。

如果你需要温习一下自动编码,可以看看斯坦福大学的深度学习 教程 ,其基本思路是建立一个可预测输入内容的神经网络。

先验知识

来源:Pexels

最后,同样重要的是,尝试并找到方法,结合特定的领域知识来指导学习过程。 例如,在通过概率性程序归纳进行 人类层次的概念学习 中,作者构建了一个模型,该模型利用过程中的先验知识从部分构建概念,这让其达到了人类水平的表现,并超过了当时的深度学习方法。

你还可以使用领域知识来限制对网络的输入,以降低维度或调整网络架构使其更小。

小芯把它作为最后的选择,因为整合先验知识是有挑战性的,而且通常是一种最耗时的选择。

小而不俗,又小又酷

来源:Pexels

目前数据科学的发展仍然存在大量问题,数据非常有限,获取更多的数据非常昂贵或不可能。

例如,检测罕见疾病或教育成果。 如果能找到一些方法来应用我们最好的技术,如深度学习,来解决这些问题。 难道没有让你兴奋不已,跃跃欲试吗?

虽然关于如何在有限的数据下利用深度学习技术的问题。 目前还没有得到足够讨论,但它背后蕴含的意义和无限可能,就足以让人激动难耐。

来吧,少年少女,我们一起来钻研吧~

推荐阅读专题

留言 点赞 发个朋友圈

我们一起分享AI学习与发展的干货

编译组: 齐欣、余书敏

相关链接:

https://towardsdatascience.com/how-to-use-deep-learning-even-with-small-data-e7f34b673987

如需转载,请后台留言,遵守转载规范

推荐文章阅读

ACL2018论文集50篇解读

EMNLP2017论文集28篇论文解读

2018年AI三大顶会中国学术成果全链接

ACL2017 论文集:34篇解读干货全在这里

10篇AAAI2017经典论文回顾

长按识别二维码可添加关注

读芯君爱你