其他

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

2017-06-07 作壁上观 量子位
李林 问耕 发自 凹非寺
量子位 报道 | 公众号 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/

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

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

样本量很重要。对于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,做了个比较。

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

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

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

除了表达“不服气”和“我更牛”之外,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)对话界面回复:“越洋”两个字,我们再分享几个越洋讨论的传送门。

【完】

招聘

量子位正在招募编辑记者、运营、产品等岗位,工作地点在北京中关村。相关细节,请在公众号对话界面,回复:“招聘”。

One More Thing…

今天AI界还有哪些事值得关注?在量子位(QbitAI)公众号对话界面回复“今天”,看我们全网搜罗的AI行业和研究动态。笔芯~

另外,欢迎加量子位小助手的微信:qbitbot,如果你研究或者从事AI领域,小助手会把你带入量子位的交流群里。

 扫码强行关注『量子位』

追踪人工智能领域最劲内容


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存