文章目录

  • 论文和实现
  • 整体架构
  • 多粒度扫描模块实现
  • 级联森林模块
  • 优势(相对DNN):

深度学习最大的贡献是表征学习(representation learning),通过端到端的训练,发现更好的features,而后面用于分类(或其他任务)的输出function,往往也只是普通的softmax(或者其他一些经典而又简单的方法)而已,所以,只要特征足够好,分类函数本身并不需要复杂representation learning。目前DL的成功都是建立在多层神经网络的基础上的,那么这种成功能否复刻到其他模型上呢?南京大学的周志华老师尝试提出一种深度的tree模型,叫做gcForest,用文中的术语说,就是“multi-Grained Cascade forest”,多粒度级联森林。此外,还提出了一种全新的决策树集成方法,使用级联结构让 gcForest 做表征学习。

论文和实现

https://arxiv.org/abs/1702.08835v2
https://github.com/kingfengji/gcForest
https://github.com/pylablanche/gcForest

整体架构

此图为例,三分类,使用三个window,先通过多粒度扫描模块,每个森林的输出都是三位向量,将不同尺度window扫描的结果级联起来得到3618维的向量,再输入到级联森林模块,比如四个森林(两个完全随机森林和两个随机森林)输出12位向量,再与输入的3618维向量级联得到3630维向量,输入下一阶段。最终输出12维向量,取平均,再取最大输出。
两个完全随机森林 每个包括500棵完全随机(完全随机选择特征做节点分裂)
两个随机森林,每个包括500棵树,随机选择sqr(d)个特征,然后选择最好gini系数的一个特征做分裂。
如何得到概率分布
给定一个样本,样本会通过每个树落入一个叶子节点,通过统计训练样本中此节点不同类别的比例,得到概率分布。
如何防止过拟合
每个类别向量通过K折交叉验证生成,每个训练样本被用作k-1次训练数据,最后平均输出。
自动调整级联森林级数(层数)
在该结构中,首先会在一级结束后做一个性能测试,然后再继续生成下一级,当扩展一个新的级后,整个级联的性能将在验证集上进行估计,如果没有显着的性能增益,训练过程将终止。因此,gcForest能够通过适当的终止,来决定其模型的复杂度,这就使得相对于DNN,gcForest在即使面对小数据集的情况下一样使用,因为它的结构不依赖于大量的数据生成。

多粒度扫描模块实现

通过多个尺度的滑动窗口实现特征重用(原特征的重新表示),滑动窗口只是扫描特征,不涉及参数(不同于卷积操作),扫描的特征向量作为新的(正/负例)样本。如原特征400维,窗口100,将得到301个100维特征向量的新样本输入森林。最后将所有森林输出的结果级联作为转换特征。如果转换特征维度太长,可做下采样。

级联森林模块

如上图所示,每一层都是由决策树组成的森林组成的,也就是每层都是“集成的集成”。但注意,这里每层都是由两种不同的森林所组成,这是因为周教授在2012年发表论文说,多样的结构对集成学习来说是很重要的。那这里所谓的两种森林是指什么呢?这里举了个简单的例子,例如说图中黑色的完全随机森林,而蓝色的是普通随机森林。完全随机森林是由1000棵决策树组成,每棵树随机选取一个特征作为分裂树的分裂节点,然后一直生长直到每个叶节点细分到只有1个类别或者不多于10个样本。类似的,普通随机森林由1000棵决策树构成,每棵树通过随机选取sqrt(k)(k表示输入特征维度,即特征数)个候选特征,然后通过gini分数筛选分裂节点。所以两种森林的主要区别在于候选特征空间,完全随机森林是在完整的特征空间中随机选取特征来分裂,而普通随机森林是在一个随机特征子空间内通过gini系数来选取分裂节点。这里只提到完全随机森林中决策树的生长规则——完全或近乎完全生长,但没有提到普通随机森林的生长规则,按经验应该是可以设定停止生长规则或者采用后剪枝来修剪模型的。每个森林里决策树的数量其实是个超参数。

因为决策树其实是在特征空间中不断划分子空间,并且给每个子空间打上标签(分类问题就是一个类别,回归问题就是一个目标值),所以给予一条测试样本,每棵树会根据样本所在的子空间中训练样本的类别占比生成一个类别的概率分布,然后对森林内所有树的各类比例取平均,输出整个森林对各类的比例。例如下图所示,这是根据图1的三分类问题的一个简化森林,每个样本在每棵树中都会找到一条路径去找到自己对应的叶节点,而同样在这个叶节点中的训练数据很可能是有不同类别的,我们可以对不同类别进行统计获取各类的比例,然后通过对所有树的比例进行求均值生成整个森林的概率分布。

优势(相对DNN):

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

gcforest 深度森林原理及实现相关推荐

  1. 从深度学习到深度森林方法(Python)

    作者 |泳鱼 来源 |算法进阶 一.深度森林的介绍 目前深度神经网络(DNN)做得好的几乎都是涉及图像视频(CV).自然语言处理(NLP)等的任务,都是典型的数值建模任务(在表格数据tabular d ...

  2. python画树林_在Python 3中使用深度森林(Deep Forest)进行分类

    深度森林(Deep Forest)是周志华教授和冯霁博士在2017年2月28日发表的论文<Deep Forest: Towards An Alternative to Deep Neural N ...

  3. 挑战深度学习 《深度森林:探索深度神经网络以外的方法》

    挑战深度学习 <深度森林:探索深度神经网络以外的方法> 阅读量:1306 收藏本文 深度神经网络的巨大成功掀起了一股深度学习热潮. 或许,这股热潮有些"太热"了. 就在 ...

  4. 南大周志华团队开源深度森林软件包DF21:训练效率高、超参数少,普通设备就能跑 | AI日报...

    中国学者研发新型电子纹身,实现8倍延展,有望用于医疗.VR和可穿戴机器人等领域 可穿戴设备,已经成为我们生活中极为常见的一种设备,它们体积轻巧.佩戴方便.检测数据齐全,但也存在一个很明显的缺点--无法 ...

  5. 【深度森林第三弹】周志华等提出梯度提升决策树再胜DNN

    [深度森林第三弹]周志华等提出梯度提升决策树再胜DNN 技术小能手 2018-06-04 14:39:46 浏览848 分布式 性能 神经网络 还记得周志华教授等人的"深度森林"论 ...

  6. 周志华团队:深度森林挑战多标签学习,9大数据集超越传统方法

    来源:arXiv 本文转载自新智元(公众号ID:AI_era),未经许可请勿二次转载. [导读]南京大学周志华团队最新研究首次将深度森林引入到多标签学习中,提出多标签深度森林方法MLDF,在9个基准数 ...

  7. 学习笔记TF053:循环神经网络,TensorFlow Model Zoo,强化学习,深度森林,深度学习艺术...

    循环神经网络.https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/re ...

  8. python神经网络原理pdf_《深度学习原理与 TensorFlow实践》高清完整PDF版 下载

    1.封面介绍 2.出版时间 2019年7月 3.推荐理由 本书介绍了深度学习原理与TensorFlow实践.着重讲述了当前学术界和工业界的深度学习核心知识:机器学习概论.神经网络.深度学习.着重讲述了 ...

  9. 打破深度学习局限,强化学习、深度森林或是企业AI决策技术的“良药”

    算法.算力和数据是人工智能时代的三驾马车,成为企业赋能人工智能的动力,但它们自身的特性也为企业和高校在研究和落地应用过程带来了重重挑战.比如,训练算法的成本高昂,数据从采集.处理到存储已面临瓶颈,目前 ...

  10. 深度学习原理与TensorFlow实践

    深度学习原理与TensorFlow实践 王琛,胡振邦,高杰 著 ISBN:9787121312984 包装:平装 开本:16开 用纸:胶版纸 正文语种:中文 出版社:电子工业出版社 出版时间:2017 ...

最新文章

  1. easyui 添加 自定义图标
  2. matlab运行容量小,可变大小(运行时)输入Simulink Matlab
  3. 支付产品必懂的会计基础及如何应用
  4. 阮一峰react demo代码研究的学习笔记 - how to debug converted source code
  5. 《看聊天记录都学不会C#?太菜了吧》(6)多晦涩的专业术语原来都会那么简单
  6. 《WebGL编程指南》学习笔记——1.WebGL概述
  7. 前端实习4个月的心得(uniapp)
  8. DAS、NAS、SAN简介以及区别
  9. 解决SAS/EG中某些process出现的WARNING: The font Arial is not available. Albany AMT will be used.
  10. 大数据的理解,大数据是什么,大数据能干什么?
  11. linux srs安装教程,SRS环境搭建
  12. python自动化:uiautomation、pyautogui操作会计记账系统(6):打印会计凭证
  13. python合并word表格单元格_合并Word 表格中单元格
  14. Java4班题库-传智专修学院Java面试题库二
  15. Whatsns内容付费seo优化带采集和熊掌号运营问答系统
  16. 2黄计算机技术,网络消费中的计算机技术黄录飞(原稿)
  17. markdown文档规范练习
  18. mysql 索引的作用是什么_索引是什么?索引的作用?
  19. python自动测试s_用 Python 开启测试自动化的未来
  20. 15 ActionProvider代码例子

热门文章

  1. 苹果CMSV10如何打包麻花影视APP教程
  2. 普元eos使用svn_普元EOS SVN配置
  3. php匹配车牌号,分享一个非常全的php正则验证车牌格式的函数
  4. goeasy服务器发送(发布)消息,微信小程序中怎么使用GoEasy实现实时通讯
  5. grads插值_Grads画等值线(一)-----心得感言
  6. 前言:智能车制作的那些事
  7. JavaScript入门教程
  8. Maven本地仓库下载及配置
  9. 图像数字水印技术研究及matlab实现,基于DCT的数字水印技术研究及matlab实现.doc...
  10. DIY_实现光敏电阻传感器简单控制LED