数据不够大,别玩深度学习?正反双方撕起来了

简介:
本文来自AI新媒体量子位(QbitAI)

争论,随时可能爆发。

比方当你看到一篇名为《数据不够大,别玩深度学习》(Don’t use deep learning your data isn’t that big)的博客时。

作者Jeff Leek在这篇博客中指出,深度学习已经进入一定程度的狂热状态,人们正试图用这个技术解决每一个问题。但真正的挑战在于:“只有极少数情况下有足够的数据进行深度学习”,不是每家都有科技巨头的数据。

深度学习与更简单的模型相比,优点在于有足够的数据来调整大量的参数,博主建议当数据集不是那么大的时候,应该采用一些更简单、更可解释的办法,而且不用担心过拟合等问题。

为了证明自己的论点正确,Leek还举了一个基于MNIST进行图像识别的例子,分辨0或者1。他用的两个方法一个是逻辑回归,一个是深度神经网络(5层,每层160个节点,Tanh过滤器,20个epoch)。

Leek把训练集大小分成10到80,每次增加5。重复5次以平均掉一些噪音。

想要看具体案例的,请移步这里:https://simplystatistics.org/2017/05/31/deeplearning-vs-leekasso/

640?wx_fmt=png&wxfrom=5&wx_lazy=1

总之结论是:对于低训练样本来说,更简单的方法略胜于更复杂的方法。随着样本量的增加,复杂的方法的精度逐渐上升。

博主想用这个简单的例子说明:

样本量很重要。对于Google、亚马逊或者Facebook来说,有着接近无限的数据量,这种情况下应用深度学习是有意义的。但是如果只是中等规模的样本量,深度学习可能不会提升准确度,而且还失去了可解释性。

传送门

Jeff Leak的文章:

https://simplystatistics.org/2017/05/31/deeplearning-vs-leekasso/

很快,就有用户在Reddit上吐槽。这些人认同文章的标题,但不认同作者的论据。他指出原文作者使用的方法,甚至称不上是真正的深度学习:这个领域过去十年的进展一个都没用上,而这些技术对小数据量来说非常重要。

例如,dropout、数据增强等等。如果不使用数据增强,5层×160神经元的网络绝对是太大了,大小为80的训练样本根本不起作用。另外ReLU可能比Tanh更好。

还有其他各种吐槽,量子位就不一一搬运了。你以为这就完了?拿衣服。

Leek这篇文章火了不到一周,哈佛大学药学院的生物医药信息学专业博士后Andrew Beam写了篇文章来反驳:《就算数据不够大,也能玩深度学习》。

Beam开篇就说,之前Jeff Leek那篇文章看得他有点不爽。核心论点他大致同意,他也不觉得深度学习是万能良药。但是,你确定深度学习在数据量不足100的时候效果不好是因为过拟合?怎么看都是因为模型没调好啊……

于是,他带着暑期实习生写了个有12万参数的MLP(多层感知器)和20万参数的卷积模型,任务还是用MNIST数据集,区分0和1。然后,他们又重新构建了Leek文章用的简单回归方法Leekasso和深度学习MLP,做了个比较。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

 红线:Beam文的CNN;紫线:Beam文的MLP
绿线:Leekasso;蓝线:Leek文的MLP
横轴是样本数,纵轴是准确率
下图去掉了Leek文的MLP是为了更清楚地比较前三种

这一顿折腾,都是为了说明一个问题:你看我们写的MLP和CNN,表现都挺好的嘛,所以不是深度学习不行,是你不行嘛。

不过讨论来讨论去,这个“区分0和1”的任务可能根本不足以说明问题。StackOverflow的数据科学家David Robinson后来也掺和进来,发了条Twitter说:这是个靠识别图像中心/边缘像素颜色就能解决的问题。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

除了表达“不服气”和“我更牛”之外,Beam的文章也很正经地谈了谈到底什么时候该用深度学习:当你没有大量数据的时候,用简单的模型通常是个更好的选择。

不过,就算你是个普通人,手里有100-1000个样本,也可以试试深度学习。在这种情况下,深度学习领域有很多缩减差异、防止过拟合的方法可供尝试,包括dropout与随机梯度下降相结合,或者将目标问题的特定参数融合到模型中去。比如说在建立CNN做图像处理的时候,我们其实会把图像的属性编码到模型中。

实在不行,还有迁移学习嘛。

传送门

Andrew Beam的文章:

http://beamandrew.github.io/deeplearning/2017/06/04/deep_learning_works.html

Andrew Beam的代码:

https://github.com/beamandrew/deep_learning_works

这篇文章一出现,立刻有人叫好。

然而俗话说喷人者,可能会被喷。

Beam这篇洋洋洒洒的雄文,被Hacker News用户rkaplan“嘲笑”说:“这个帖子甚至没提到没有大量数据而用深度学习的最简单方法:下载一个预先训练的模型,并用你的小数据微调最后几层神经网络”。(其实也提了一下)

例如在图像分类等领域,微调的效果非常棒,因为预训练的模型的前几层早已经学会了很多通用特征,适用于很多不同的数据集。甚至最好的皮肤癌分类器,也在ImageNet上进行了预训练。

量子位插一句,关于数据量不够大时怎么办,以及在ImageNet上预训练的方法,HTC负责研发及医疗的总裁、原Google中国工程院副院长张智威(Edward Y. Chang)博士,曾经在清华的一次分享中讲到过。

这里是张智威分享的传送门:《研发医疗领域的AlphaGo

没有大数据,也没有预训练,行不行?也有人说行。Beam的反驳文章提了两种方法,Hacker News用户autokad也举了个例子,说他有一个最常用的5000个英文单词数据集,5000也是一个挺小的数据。

在这个数据集上,他用RBF核函数的SVM获得了87-88%的精度;用直方图核函数加一点特征工程可以做到89.7%的精度。而用调整过一些参数的TensorFlow,也能达到大约89.7%的精度。

有人举例说明,有人现身说法。讨论甚至从数据大小,一直延伸到各种深度学习方法的比较,乃至应用领域等。

有网友留言说,不管这个讨论结果如何,都让关注深度学习的人有所收获。

不知道大家怎么看这个话题?

欢迎留言继续讨论。

想深度围观的朋友,在量子位微信公众号(QbitAI)对话界面回复:“越洋”两个字,我们再分享几个越洋讨论的传送门。

【完】

本文作者:李林 问耕 
原文发布时间: 2017-06-07 
相关文章
|
25天前
|
机器学习/深度学习 数据采集 算法
构建高效图像分类模型:深度学习在处理大规模视觉数据中的应用
随着数字化时代的到来,海量的图像数据被不断产生。深度学习技术因其在处理高维度、非线性和大规模数据集上的卓越性能,已成为图像分类任务的核心方法。本文将详细探讨如何构建一个高效的深度学习模型用于图像分类,包括数据预处理、选择合适的网络架构、训练技巧以及模型优化策略。我们将重点分析卷积神经网络(CNN)在图像识别中的运用,并提出一种改进的训练流程,旨在提升模型的泛化能力和计算效率。通过实验验证,我们的模型能够在保持较低计算成本的同时,达到较高的准确率,为大规模图像数据的自动分类和识别提供了一种有效的解决方案。
|
2月前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习-数据增强与扩充
深度学习-数据增强与扩充
59 1
|
4月前
|
机器学习/深度学习 算法 TensorFlow
【Python深度学习】Tensorflow对半环形数据分类、手写数字识别、猫狗识别实战(附源码)
【Python深度学习】Tensorflow对半环形数据分类、手写数字识别、猫狗识别实战(附源码)
54 0
|
6月前
|
机器学习/深度学习 数据采集 PyTorch
使用自定义 PyTorch 运算符优化深度学习数据输入管道
使用自定义 PyTorch 运算符优化深度学习数据输入管道
37 0
|
5月前
|
机器学习/深度学习 存储 自然语言处理
快速入门深度学习2(用时1h)——数据操作
快速入门深度学习2(用时1h)——数据操作
76 0
|
2月前
|
机器学习/深度学习 编解码 运维
深度学习数据集合(交通标志/火焰/手写字符/道路裂缝数据集)
深度学习数据集合(交通标志/火焰/手写字符/道路裂缝数据集)
41 0
|
3月前
|
机器学习/深度学习 自然语言处理 TensorFlow
在Python中进行深度学习的数据准备和向量化
在Python中进行深度学习的数据准备和向量化
31 3
|
5月前
|
机器学习/深度学习 自然语言处理 语音技术
深度学习中的数据增强技术
深度学习中的数据增强技术 随着深度学习在图像识别、语音识别、自然语言处理等领域的广泛应用,数据增强技术也成为了深度学习中的一个重要分支。数据增强技术是指通过一系列的技术手段,将原始数据集进行变换、扩充和增强,从而使得模型的性能得到提升。本文将介绍几种常见的数据增强技术
65 7
|
7月前
|
机器学习/深度学习 Python
Python将深度学习的输入数据打乱顺序
本文介绍基于Python语言,实现机器学习、深度学习等模型训练时,数据集打乱的具体操作~
|
8月前
|
机器学习/深度学习 存储 算法
【使用机器学习和深度学习对城市声音进行分类】基于两种技术(ML和DL)对音频数据(城市声音)进行分类(Matlab代码实现)
【使用机器学习和深度学习对城市声音进行分类】基于两种技术(ML和DL)对音频数据(城市声音)进行分类(Matlab代码实现)
171 0