前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何评价周志华深度森林模型,热议会否取代深度学习 DNN

如何评价周志华深度森林模型,热议会否取代深度学习 DNN

作者头像
新智元
发布2018-03-27 15:17:39
1.2K0
发布2018-03-27 15:17:39
举报
文章被收录于专栏:新智元

【新智元导读】昨天,新智元报道了南京大学周志华教授和冯霁的论文“深度森林”,引发很多讨论。今天,新智元整理了网上一些评价。中文内容来自知乎,已经取得授权。外网内容来自 Hacker News,由新智元编译整理。正在看这篇文章的你,也欢迎留下你的看法。

首先,让我们简单回顾周志华和冯霁的论文《深度森林:探索深度神经网络以外的方法》。了解更多请点击阅读新智元报道:周志华最新论文挑战深度学习 | 深度森林:探索深度神经网络以外的方法

摘要

在这篇论文里,我们提出了 gcForest,这是一种决策树集成方法(decision tree ensemble approach),性能较之深度神经网络有很强的竞争力。深度神经网络需要花大力气调参,相比之下 gcForest 要容易训练得多。实际上,在几乎完全一样的超参数设置下,gcForest 在处理不同领域(domain)的不同数据时,也能达到极佳的性能。gcForest 的训练过程效率高且可扩展。在我们的实验中,它在一台 PC 上的训练时间和在 GPU 设施上跑的深度神经网络差不多,有鉴于 gcForest 天然适用于并行的部署,其效率高的优势就更为明显。此外,深度神经网络需要大规模的训练数据,而 gcForest 在仅有小规模训练数据的情况下也照常运转。不仅如此,作为一种基于树的方法,gcForest 在理论分析方面也应当比深度神经网络更加容易。

Hacker News 用户讨论

HN 用户 rkaplan:

“深度神经网络需要花大力气去调整超参数,相比之下 gcForest 训练起来要容易得多。”

现在对于深度神经网络调整超参数已经不是大问题了。有了 BatchNorm 和更多更具鲁棒性的优化算法,大多数时候你只需要用 Adam 用默认设置学习率 0.001 就行了,结果很好。现在很多模型使用 BatchNorm,有时候都不需要使用 Dropout,总体而言调参不再是个问题。很多步长为1、3×3 的卷积层效果很漂亮的。简单说:如今深度 NN 不怎么调参也用得很好。用默认设置就行了。

> HN 用户 computerex:

我完全不同意这种说法。默认设置根本不管用,而且网络架构本身就可以被视为一种超参数。这样的话,对于用于不同问题的 ANN 而言,怎么去弄一个合理的默认设置呢?

> HN 用户 arjo129:

深度神经网络用起来很好,只是你需要很多耐心(并且知道如何)用它们。另外,GPU 是很贵的。当你意识到你搞砸了的时候,你已经浪费很多时间了。当然,任何机器学习算法都是如此。但我想说的是,可能存在一个我们还不知道的方法,它的计算复杂度可能更低。

我发现的一个问题是,人们在无限制地滥用深度神经网络。 你没必要训练 DNN 来识别冰箱里的结构化对象,比如可乐罐。对于小规模对象识别来说,简单的 hog/sift 这些特征工程可能是更快和更好的选择。但是,你不能指望 sift 在 ImageNet 上比深度神经网络表现更好。因此,当涉及到在短时间内部署系统时,应该保持开放的心态。

>>HN 用户 modeless:

“没必要训练 DNN 来识别冰箱里的结构化对象,比如可乐罐。”

我不同意这个说法。当然,作为你自己的实验项目,你不需要一个 NN 来识别一个冰箱里的一听可乐。但是,如果你要识别所有冰箱里的所有可乐罐又将如何呢,这是为了你在现实世界中使用、给消费者拿可乐的机器人产品用的?你会需要一个巨大的数据集,包含所有不同设计的可乐罐和所有不同种类的冰箱,你小打小闹的特征工程面对一个拥有这些数据库的 NN 会死得很惨。

HN 用户 throw_away_777:

实际上我一直不懂,为什么深度神经网络这么火,而迄今为止大多数 Kaggle 竞赛中用得最多最好的算法是 xgboost 呢?虽然神经网络对于图像处理类的问题很好用,对于更多机器学习问题,决策树的方法性能更好,也更容易部署。

> HN 用户 BickNowstrom:

神经网络火是有原因的。神经网络的重大发展带来了 NLP、计算机视觉、结构化数据、机器翻译、风格转移等等准确率的提升。

XGBoost 从“Greedy function approximation: A gradient boosting machine”这篇论文开始就没怎么变过,但通过一些小的改善变得更快了,也更方便调参。

我觉得 Tensorflow / Keras 可以处理更多种类的问题,比基于树的方法具有相同的或更高的准确性。NN对结构化问题(这块是基于树的方法的主场)做得很好,但也适用于计算机视觉和 NLP。

确实,基于树的方法在学术上有些过时,激动人心的都在神经网络领域里面。做深度学习更容易发表(以前可是倒过来的)。

>> HN 用户 throw_away_777:

我同意神经网络是最先进的,在某些类型的问题(NLP和视觉,这些都是很重要的问题)上做得很好。但是,很多数据是结构化的(销售、推荐等等),并且xgboost模型比神经网络模型更容易训练。训练神经网络你需要非常昂贵的计算机或者昂贵的云计算,而且即使用上了训练起来也不容易。 易于部署是学术界忽略的一个重要因素。在非NLP和非图像数据集上,通常最佳的 Kaggle 模型就是 xgboost 模型,而且开发 xgboost 花费的时间是开发好神经网络模型的 1/10。Xgboost自从第一次推出以来已经走了很长的路,早期停止改进本身就是一个重大改进的例子。

算法不是很复杂,期待在大数据集上的结果

【作者:田渊栋,Facebook 人工智能实验室】

整个算法看起来不是很复杂。

1. 类似以前Stacking的做法,即每一层都用label进行训练,训练完了再叠一层继续训练。加了Complete Random Forest很有意思,个人理解是生成了一些看似无关,但对将来的预测有好处的特征。如果实验里面能做些ablation analysis就好了。

2. 用了一些shortcut-connection,把几层前的数据拿过来连上上一层的输出一起作为这一层Forest的输入。

3. Multi-Grained Scanning这部分非常像1D和2D convolution。

另外实验还只是在小规模数据集上做的,期待CIFAR甚至是ImageNet的结果。深度学习这里也有一直在提但是一直效果不怎么好的Layer-by-Layer训练的思路,如果这个思路能在大数据集上做好,那确实是大突破了。

知乎原文链接:https://www.zhihu.com/question/56474891/answer/149427631

开启了很好的方向,但要真的 Alternative,还有很多要研究

【作者:邱锡鹏,复旦大学计算机科学技术学院副教授】

首先,这篇论文的内容就不细说了,很多人也作了很细致的分析。创新在于两方面:1)思想上,深度学习也可以不用千篇一律的神经网络,而采用其它浅层的分类器。2)方法上,采用了级联+集成的方法来实现了一个深度随机森林。我估计很多研究者也都有1的想法(其实我就有过),但能找到一个实现方法估计也只有周老师他们能做出来了,这里面确实需要有大量的集成学习技术。

下面说下我的观点(是否 Alternative):

1)深度网络和神经网络的解构

其实,现在深度学习已经不再仅仅是多层神经网络了。现在的很多深层模型一般有一个比较复杂的架构,包含几个部件。每个部件分别由神经网络来实现。比如Neural Turing Machine,再比如AlphaGo。在这些复杂模型里神经网络已经部件化。

记得最早2014年时读了Jason Weston的论文[1410.3916] Memory Networks。作者构建了一个记忆网络的框架,每个部件可以是SVM或决策树等。当时觉得作者的想法太疯狂了,脑洞大开。但是,最后实现时还是采用了神经网络(原因见下)。

2)End-to-End训练和Layer-wise训练

当实现一个复杂的系统(比如问答系统)时,我们一般的想法是分解,有助于我们理解,然后一步步来实施。这里面有两个问题,一是这些分解的部件是松耦合,必须单独训练,且每个部件的优化目标和最终的系统目标并不完全一致。二是错误传播问题。神经网络出现以后这些问题都迎刃而解了,因为这些部件都可以是神经网络,并且还可以连起来一起End-to-End训练,因此最大的痛点消失。

再来看下Layer-wise训练。当我们可以把一个系统解构成分层解构时,我们可以求助于Layer-wise训练,这时每一层的训练目标可以加入一些先验知识。这种方法有优点也有不足,不再展开。但是,如果一个系统不能分割为逐层结构,我们很难找到类似layer-wise的训练手段,End-to-End训练是比较好的选择,这时除了神经网络也没有更好的选择。

总之,周老师的工作无疑开启了一个很好的方向,要想真的Alternative,里面还有很多东西需要研究。

知乎原文链接:https://www.zhihu.com/question/56474891/answer/149470584

实验结果好,实际效果有待验证

【作者:付鹏,今日头条】

我个人的想法是,这个idea能work是能想象出来的,但是能不能有像paper中描述类似『万金油』的作用,还需要更多检验。 先放上对照试验结果:

可以看到,无论是人脸识别(图像),情感识别(NLP),音乐分类问题等等,都取得了很厉害的结果。 更厉害的是,paper号称『gcForest 具有少得多的超参数,并且对参数设置不太敏感;实际上在我们的实验中,通过使用相同的参数设置在不同的域中都获得了优异的性能,并且无论是大规模还是小规模的数据,它的工作都很好。』 这听上去就很惊悚。没有更多细节的情况下不好妄加揣测,但是从已有的paper可以分析一二。 一、这个deep forest 本质上仍然是一个tree ensemble 方法 ensemble method是周志华的强项,这个deep forest看起来是周在ensemble method 借鉴了deep learning之后的一个成果。 周称这个算法叫『ensemble of ensemble』, 实际上就是指用ensemble模型得到的结果级联(concat),再作为新的ensemble模型的输入再进行ensemble,有点类似多层神经网络的做法。

上图是原理图,可以看到,类似NN的做法,多个森林的结果concat后输入下一层,层层过后最终输出final prediction。

在gc forest中,每层选择的输出结果就是当前层每个森林对问题的预测的输出结果的级联,举例子,假如某一层有2000个森林,一个2分类问题,那么该层输出就是2000*2 = 4000维。 二、通过完全随机打到ensemble要求的『多样性』 ensemble最重要的一点就是模型要有多样性,这样的ensemble才有意义,所谓『和而不同』。

周对这个的做法是,输入层采用两种不同的森林,见上图蓝黑区分。

一种是传统的Random Forest,随机取

个特征传入,d为特征维数,是很传统的tree ensemble 方法。

另一种是完全随机构造的森林,complete-random tree forests。随机选择特征,随机选择split value,直到分类变纯或者样本过少。 我的理解是,前者保证了一定的算法效果,后者则增加了一定的多样性。 三、学习NN那一套先进的方法来进行原始特征的处理 DL能够work,不仅有网络的功劳,还包括天马行空的feature engineering的功劳,比如CNN的卷积操作,RNN对序列问题的处理。 gc forest就把这些和网络关系不大的东西学来作为自己输入的预处理。

这些特征的处理是理所应当的,对特定问题进行特定的特征工程来提升模型效果是必做的事情。 -------------------------------------- 然后,『啵儿』的一测,在诸多领域就吊打了诸多模型。 对此,还是要等待代码出来实测一下,不敢多说。 一点个人想法: 1. 这个idea某种程度是可以work的,原因在于tree ensemble模型是经过验证能够学习到高级特征的,Facebook早先就曾经成功尝试过用GBDT的某一层输出放到LR模型里面来进行CTR预测,取得了不错的结果:https://research.fb.com/publications/practical-lessons-from-predicting-clicks-on-ads-at-facebook/ ,这说明了至少tree ensemble模型的输出其实很make sense。 2.这个gc forest模型,实际上也是尝试着像NN一样通过多层学习学到更高维度更抽象的特征,通过加层数来实现特征和特征之间的各种非线性组合,最终抽离出各种非线性特征,其中几乎一定存在很不错的特征。 3.为什么每一层的输出选择分类结果的维度?这样是否损失了一些特征信息?是否对学习效果有影响。 4.这个模型是否真的能成为万金油模型,我还是不敢下断言,一来不是很稀疏,二来,有很多看起来很随意的设置,三来这样搞tree,真的会比NN在理论上容易分析一些么?还是请大佬来解答相关问题。 5.这个模型从第一层起即关注对最终结果的loss,对特征学习是不是一个约束,即难以学习到更好的特征?

知乎原文链接:https://www.zhihu.com/question/56474891/answer/149366668

gcForest 很好,但并没超越DNN

【作者:毛潇锋】

首先说说论文的思想。

gcForest模型还是把训练分成两个阶段:

第一个是G阶段(Multi-Grained Scanning),这一步主要是feature extraction,具体做法和卷积神经网络类似(如下图),n*n的窗口滑动来获得raw feature,只不过这里不再有权值了,20*20大小的图片,用10*10的窗口按滑动步长1来取的话,会生成121个特征,然后直接将121个10*10像素的图放到Forest里面,产生121个三维的类概率向量,两个Forest就是2*121个三维类概率向量,以此类推。同理在用5*5或者15*15的窗口重复上述步骤,最后把所有向量聚合,形成一个维度非常高的feature。重要的是,这个过程是全程受监督的,已经有答主说了,gcForest的feature extraction过程是受label监督的,而DNN的feature extraction过程是由高层BP传下来的梯度指导更新的,在DNN较深的情况下,高层传下来的梯度容易受到各种因素的影响而波动,这是gcForest优于DNN的一点。

第二个是C阶段(Cascade Forest),它由下图所示的级联随机森林构成,每个Forest也是输出3维的类概率向量,有的同学会说那不是一步就完成了吗?当然不是的,如下图4个Forest输出的4*3维向量要和原Input聚合,再做为下一层的输入,以此类推,当我们发现结果已经较优了的时候,就可以停止,取平均后最大值对应的类作为输出。为什么要将输出和原Input聚合作为下一层的输入?这种做法我的理解是为了使得输出越来越向某一个值靠近,即让级联随即森林趋于收敛和稳定。

然后再来说说和DNN的不同。

文首我已经概括了我理解的最本质的不同,即gcForest是受监督形成feature,然后所有的特征共同指导分类,而DNN则是end-to-end的”一条龙”服务

另一点不同是,gcForest的中间数据可以直接作为结果输出,这也解释了为什么gcForest可以“动态加层”,而DNN不行,因为DNN的层间数据没有特定意义,获得结果必须通过对应的“loss layer”。

因为全程受label的监督,所以gcForest需要的超参比较少,而DNN则需要严格的网络结构设计和调参技巧,一旦有任何差错,网络的小波动会导致整个系统无法运行。

再说说可扩展性吧,label的监督对于gcForest来说既是一项优点,又是最大的缺陷所在,gcForest对标签依赖太严重,个人认为它甚至不能胜任无监督任务,这也是传统机器学习方法的通病。在Unsupervise-Learning越来越重要的当今,四项全能的Deep Neural Network的地位我认为依然无法撼动。

引用文中一句话,“If we had stronger computational facilities, we would like to try big data and deeper forest, which is left for future work”,我已经能够预感到一大波“going deeper with forest”,“forest in forest”,“deep residual forest”的到来了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新智元 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 TI 平台
腾讯云 TI 平台(TencentCloud TI Platform)是基于腾讯先进 AI 能力和多年技术经验,面向开发者、政企提供的全栈式人工智能开发服务平台,致力于打通包含从数据获取、数据处理、算法构建、模型训练、模型评估、模型部署、到 AI 应用开发的产业 + AI 落地全流程链路,帮助用户快速创建和部署 AI 应用,管理全周期 AI 解决方案,从而助力政企单位加速数字化转型并促进 AI 行业生态共建。腾讯云 TI 平台系列产品支持公有云访问、私有化部署以及专属云部署。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档