gcForest论文的价值

【转载】讨论|周志华教授gcForest论文的价值与技术讨论(微信群)

2017-03-03  全球人工智能



一、gcForest的理论:用决策树集成方法解决DNN不足

  


(模型的框架结构)


gcForest模型把训练分成两个阶段:G阶段(Multi-Grained Scanning)和C阶段(Cascade Forest)


这一步主要是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聚合作为下一层的输入?这种做法我的理解是为了使得输出越来越向某一个值靠近,即让级联随即森林趋于收敛和稳定。



二、实验数据均高于其他算法:图像识别率98.3%、自然语言处理率89.32%


对比DNN:


- Level-wise training。避免了训练深度神经网络时非常复杂的learning dynamics。gcForest每一层每一个模型都是简单的监督学习。


- 超参数极少,训练不需要艺术。默认设置的gcForest表现就非常好。Level深度也是自适应,模型的表达能力和复杂度由gcForest训练时自己决定。gcForest最主要的超参数是,每一个Level用几个森林,每一个森林用几个决定树。本文里分别是每层四个森林,每个森林含1000个决定树。优化算法简洁,不再需要玄妙的tricks。而Deep Neural Networks的超参数就很多了,对于特定问题该用什么用的architecture很难预先知晓。最优化算法也需要艺术加工。


- 小样本学习优势显著。发挥了集成学习的特长。

最后想从Ensemble Learning和Deep Learning的角度讨论一下。


与其他算法对照试验结果:





可以看到,无论是人脸识别(图像),情感识别(NLP),音乐分类问题等等,都取得了很厉害的结果。
更厉害的是,paper号称『gcForest 具有少得多的超参数,并且对参数设置不太敏感;实际上在我们的实验中,通过使用相同的参数设置在不同的域中都获得了优异的性能,并且无论是大规模还是小规模的数据,它的工作都很好。』


三、部分知乎大神对于gcForest的评价 


复旦大学副教授 邱锡鹏:

周老师的工作无疑开启了一个很好的方向。

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

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

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

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

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

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


今日头条 毛潇锋

从本质上的区别来看,如果把深度网络看作一栋从低到高,将低层特征聚集成高层语义表达而建起的高楼,那gcForest就是一道把由低到高各级特征(边缘,颜色,形状或者高层特征)一起翻炒的“大杂烩”。

周志华老师提出的gcForest真的有这么神吗?有的,实验结果为证。


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python gcForest是一个基于Python编写的机器学习库,用于处理时间序列和信号数据的分类和回归问题。它由gcForest和Deep Forest两个主要模块组成。 gcForest是基于集成学习的方法,它使用了一种层级化的结构,包含多个级联的随机森林。每一层的随机森林都由多个随机子空间组成,这些子空间是通过对原始数据进行随机采样和特征子集选择得到的。每个子空间中的随机森林都可以独立地学习特征,在每一层的随机森林中的决策树都能够对数据的不同方面进行建模,通过集成这些决策树的结果,可以得到更加全面和准确的分类或回归结果。 Deep Forest是一个基于深层网络的方法,它采用了类似于卷积神经网络(CNN)的结构,可以自动地学习时序和信号数据中的特征。通过多个卷积层和池化层的堆叠,Deep Forest能够为时序和信号数据生成多个层次的特征表示,然后将这些特征表示输入到全连接层进行分类或回归。 Python gcForest提供了训练和测试gcForest和Deep Forest模型的接口,用户只需要提供相关的训练数据和标签,就可以使用该库进行模型训练和预测。同时,Python gcForest还提供了一些辅助函数,用于数据的预处理、特征选择和模型评估。 总的来说,Python gcForest是一个功能强大的机器学习库,可以用于处理时间序列和信号数据的分类和回归问题。它采用层级化结构和集成学习的方式,能够充分利用时序和信号数据的特点,提高模型的准确性和泛化能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值