仿真的数据能否用来深度学习_数据太少怎么搞深度学习?

3961f91841677be3d5460cddb41c0128.png

这篇对深度学习数据少的解决方案总结得挺好的,行文流畅。不过似乎还可以加上few-shot learning, meta-learning等异类,改天我再补充整理一篇。

How To Use Deep Learning Even with Small Data And why it is so important by Tyler Folkman

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

你一定听说过这个新闻——深度学习是切片面包以来最流行的东西。它许诺用巨量数据的一小部分即可解决你最复杂的问题。唯一的问题是你既不在Google也不在Facebook工作,并且数据稀缺。那该怎么办呢?你是否仍然可以利用深度学习的力量?还是无奈运气不佳?让我们看看怎样在数据有限的情况下利用深度学习,以及为什么我认为这可能是未来研究最令人兴奋的领域之一。

从简单开始

在我们讨论利用有限的数据进行深度学习的方法之前,请忘了神经网络并创建一个简单的基准。尝试一些传统模型(如随机森林)通常不需要很长时间。这将帮助你评估深度学习的任何潜在提升,并深入理解在你的问题上深度学习与其它传统方法的权衡取舍。

获取更多数据

这听起来很荒谬,但是你是否真正考虑过可以收集更多数据呢?我对公司提出这个建议的频率感到惊讶,他们看我像是个疯子。没错,可以花时间和金钱来收集更多数据。实际上,这通常是你的最佳选择。例如,也许你正在尝试对稀有鸟类物种进行分类并且数据十分有限。几乎可以肯定,仅通过标记更多数据,你就可以更轻松地解决此问题。不确定需要收集多少数据?尝试在增加数据时绘制学习曲线并查看模型性能的变化。

微调(Fine-Tuning)

468d6070ebc147717b35d0a1ce08738f.png
Photo by Drew Patrick Miller on Unsplash

Okay. 假设你现在有了一个简单的基准模型,并且不可能收集更多数据或费用太高。此时,尝试最多的方法是利用预训练模型,然后针对你的问题进行微调。

微调的基本思想是用一个非常大的数据集,该数据集最好和你数据的领域有些相似,训练一个神经网络,然后用较小的数据集微调此预训练网络。

对于图像分类问题,这个关键数据集是经典的ImageNet。该数据集包含很多不同类别的数百万图像,对很多类型的图像问题非常有用。它甚至包括动物,因此可能有助于稀有鸟类的分类。

数据增强(Data Augmentation)

如果无法获得更多数据,且无法对大型数据集进行微调,那么数据增强通常是你的第二选择。它也可以与微调结合使用。

数据增强背后的思路很简单:改变输入数据而不改变输出标签值。

例如,如果你有一只猫的图片并旋转图像,那它仍然是一只猫。这是很好的数据增强。另一方面,如果你有一张道路图片,并且想要预测适当的转向角(自动驾驶汽车),则旋转图像会更改合适的转向角。这种情况数据增强当然是不行滴。

数据增强最常用于图像分类问题。

你经常可以想到一些创造性的方法把数据增强用到其它领域(如NLP),人们也在尝试使用GAN来生成新数据。如果对GAN方法感兴趣,可以看DADA(Deep Adversarial Data Augmentation)。

余弦损失(Cosine Loss)

c277f311b54a5667b4bc6c915f3ac7c7.png

最近一篇paper "Deep Learning on Small Datasets without Pre-Training using Cosine Loss", 使用余弦损失在没有进行预训练的情况下对小型数据集进行深度学习的研究发现,将损失函数从分类交叉熵损失切换为余弦损失时,分类问题小型数据集的准确率提升了30%。

从上图可以看到,基于每个类的样本数量,性能如何变化。微调对于某些小型数据集(CUB)非常有价值,而对于其它数据集(CIFAR-100)则不那么有意义。

更深

在NIPs paper "Modern Neural Networks Generalize on Small Data Sets" 中,他们将深度神经网络视为ensembles。具体来说,“最后的层可能会提供一种ensemble机制,而不是每个层都呈现出不断增加的特征层次。”

我从中得出的结论是针对小数据,请确保你的网络足够深以便利用这种ensemble效果。

Autoencoders

使用堆叠式autoencoders以更理想的初始权重对网络进行预训练已经取得了一些成功。这可以让你避开局部最优解以及其它错误初始化的陷阱。不过Andrej Karpathy 建议不要对无监督的预训练过度兴奋。

Autoencoders的基本思想是建立一个可预测输入的神经网络。

先验知识(Prior Knowledge)

31c096edbca1a086fd3cea1823f3bfe0.png
Photo by Glen Noble on Unsplash

最后但并非最不重要的一点是,尝试找到整合领域特定知识以指导学习过程的方法。例如,在paper "Human-level concept learning through probabilistic program induction"中通过概率性程序归纳法,作者构建了一个模型,该模型通过利用过程中的先验知识从各个部分构建概念。这超越了当时的深度学习方法,达到了人类水平的表现。

你还可以应用领域知识来限制网络的输入,以减少维度或将网络结构调整到更小。

我将其作为最后的选择是因为整合先验知识很有挑战性,且通常是最耗时的。

Making Small Cool Again

希望本文为你提供了一些在数据有限的情况下如何利用深度学习技术的思路。我发现,这个问题目前尚未得到应有的讨论,但它具有非常令人兴奋的意义。

存在许多这样的问题:数据非常有限,获取更多数据非常昂贵或者不可能。例如,检测罕见疾病或教育成果。寻找将我们的最佳技术(比如深度学习等)应用于这些问题的方法非常令人兴奋!甚至吴恩达也同意:

103e17f53ab421c7bd4ee19e5ac3fb25.png
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值