本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

数据不够大时,要不要玩深度学习?正反方撕起

时间:2017-06-11 15:37来源:天下彩论坛 作者:118开奖 点击:
撕逼大战,从某种角度,标志着一个产业的火热。 最近,大火的深度学习,也开始撕起来了。 前几日,有一篇帖子在“Simply Stats”很火,作者Jeff Leek在博文中犀利地将深度学习拉下神

撕逼大战,从某种角度,标志着一个产业的火热。

最近,大火的深度学习,也开始撕起来了。

前几日,有一篇帖子在“Simply Stats”很火,作者Jeff Leek在博文中犀利地将深度学习拉下神坛,他谈到了深度学习现在如何狂热,人们正试图用这个技术解决每一个问题。但是呢,只有极少数情况下,你才能拿到足够的数据,这样看来,深度学习也就没那么大用处了。

帖子原文标题为“Don’t use deep learning your data isn’t that big.”(即:数据不多时,就别用深度学习了),喜欢看热闹的,不妨搜一下。

帖子一出,人们就炸开了。

这里面就有牛人就看不惯了,直接怼起来!

数据不够大时,要不要玩深度学习?正反方撕起

哈佛大学生物医药信息学的专业的博士后专门写了篇文章来反驳:You can probably use deep learning even if your data isn't that big.(即便数据不够,也能用深度学习)

谁说数据少就不能用深度学习了,那是你根本没搞懂好吗?

(嗯,深度学习默默表示,这锅俺不背)

数据不够大时,要不要玩深度学习?正反方撕起

来我们先来看一下正反方的观点:

▌正方:

原贴观点:倘若你的样本数量少于100个,最好不要使用深度学习,因为模型会过拟合,这样的话,得到的结果将会很差。

▌反方:

模型表现很差并不是由过拟合引起的。没能收敛,或者难以训练很可能才是罪魁祸首。你正方因此得出这样的结论,是因为你实验本身的问题。方法用对了,即使只有100-1000个数据,仍然可以使用深度学习技术,得到好的结果。

以下,AI100专程对反方的观点及研究进行了全文编译,略长,但,很有意思。准备好围观了吗?出发!

以下对反方内容的全文编译:

老实讲,原文中的部分观点,我也算是认同,不过,有一些事情需要在这篇文章中进行探讨。

Jeff做了一个关于辨识手写数字0和1的实验,他的数据源是来自大名鼎鼎的MNIST数据集。

此次实验,他采用了两种方法:

一种方法采用的是神经网络模型,共5层,其中激活函数是双曲正切函数;

另一种方法使用的是李加索变量选择方法,这种方法思想就是挑选10个边际p值最小的像素来进行(用这些值做回归就可以了)。

实验结果表明,在只有少量的样本的情况下,李加索方法的表现要优于神经网络。

下图是性能表现:

数据不够大时,要不要玩深度学习?正反方撕起

很惊奇对不对?

的确!倘若你的样本数量少于100个,最好不要使用深度学习,因为模型会过拟合,这样的话,得到的结果将会很差。

我认为在这里需要仔细探讨一下。深度学习模型很复杂,有很多的训练技巧。我觉得模型表现很差并不是由过拟合引起的,没能收敛,或者难以训练很可能才是罪魁祸首。

Deep Learning VS Leekasso Redux

我们首先要做的事情就是构建一个使用MNIST数据集,并且可用的深度学习模型。一般来说我们所使用的就是多层感知机与卷积神经网络。倘若原帖思想是正确的话,那么当我们使用少量样本来训练我们的模型的话,那么我们的模型将会过拟合。

我们构建了一个简单的多层感知机,使用的激活函数是RELU。于此同时,我们还构建了一类似VGG的卷积神经网络。将这两个神经网络模型的表现同李加索(Leekasso)模型进行对比。你可以在这里获取相关代。非常感谢我的暑期实习生Michael Chen。他做了大部分的工作。使用的语言是python,工具是Keras。

获取地址:

https://github.com/beamandrew/deep_learning_works/blob/master/mnist.py

MLP是标准的模型,如下面代码所示:

数据不够大时,要不要玩深度学习?正反方撕起

我们的CNN模型的网络结构,如下面所示(我想很多人对此都很熟悉)

数据不够大时,要不要玩深度学习?正反方撕起

作为参考,我们的多层感知机MLP模型大概有120000个参数,而我们的CNN模型大概有200000个参数。根据原帖中所涉及的假设,当我们有这么多参数,而我们的样本数量很少的时候,我们的模型真的是要崩溃了。

我们尝试尽可能地复原原始实验——我们采用5折交叉验证,但是使用标准的MNIST测试数据集做为评估使用(验证集中0与1样本的个数大概有2000多个)。我们将测试集分成两部分。第一部分用来评估训练程序的收敛性,第二部分数据用来衡量模型预测的准确度。我们并没用对模型进行调参。对于大多数参数,我们使用的都是合理的默认值。

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容