15

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

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzI2NjkyNDQ3Mw%3D%3D&%3Bmid=2247492057&%3Bidx=2&%3Bsn=5ba347cac2d8e3300b6a031fd730d1bf
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

EjyQZvZ.jpg!web

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

Yveemiu.jpg!web

来源:Pexels

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

eq2UFfv.jpg!web

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

答案是: 能!

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

开始越简单越好

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

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

得到更多的数据

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

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

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

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

微调

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

IJRNjqN.jpg!web

来源:Pexels

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

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

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

数据扩充

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

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

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

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

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

余弦损失

NbMZnuE.png!web

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

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

深入

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

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

自动编码

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

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

先验知识

v2Y77fF.jpg!web

来源:Pexels

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

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

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

小而不俗,又小又酷

yYrA7b3.jpg!web

来源:Pexels

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

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

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

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

Mjm63q3.gif

Nbqmy26.jpg!web

推荐阅读专题

mMby2iU.jpg!web

iYjIniQ.jpg!web

IjUZ322.jpg!web

jmyiMne.jpg!web

Nbqmy26.jpg!web

留言 点赞 发个朋友圈

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

编译组: 齐欣、余书敏

相关链接:

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

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

推荐文章阅读

ACL2018论文集50篇解读

EMNLP2017论文集28篇论文解读

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

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

10篇AAAI2017经典论文回顾

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

读芯君爱你

2ABbUry.gif


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK