论文阅读:Deep forest/深度森林/gcForest

article/2025/9/25 21:08:24

最近组会汇报了这篇文章,简单把思想梳理下来了,对了搜索深度森林的时候可能会看到Deep Forest: Towards an Alternative to Deep Neural Networks,这两篇文章的内容基本上是一致的,只在叙述方面有一些很小的不同。

下面是我做的ppt里的内容:参考文章:http://t.csdn.cn/iSKfj

主要内容

深度学习模型主要建立在神经网络上,即可以通过反向传播训练的多层参数化可微分非线性模块。 探索不可微模块构建深度模型的可能性,提出了深度学习模型--gcforest(multi-Grained Cascade Forest)  

特点:

(1)超参数少

(2)模型的复杂度可以通过与数据相关的方式自动确定

(3)无需使用反向传播就可以实现深度模型

提出疑问:

(1)深度模型=DNN?深度模型必须用可微模块构建?

(2)是否有可能训练出不需要反向传播的深度模型?

(3)是否有可能使深度模型赢得任务,如随机森林?

启发1:集成学习

为了构建一个良好的集成模型,个体的学习应该是准确的和多样化的。

提高模型多样性的操作:

(1)数据样本:从不同个体中生成不同的数据样本

(2)输入特征:不同特征选取生成树的模型是不一样的

(3)学习参数不同

(4)输出表示: 对不同的个体使用不同的输出表示。

启发2:DNN

 深度模型的优势:     逐层处理(图1) 模型内特征转换 巨大的模型复杂度

             不足之处:     超参数多 需要大量训练数据 训练之前必须确定网络架构

作者认为逐层处理是DNN成功的关键,如图1所示,随着网络层次的深入,更高层次的抽象特征也会逐渐出现。

级联森林结构

采用不同种类的树提高模型的多样性

 图中的级联森林每一层包括两个随机森林(黑色)和两个极端随机森林(蓝色),每个森林包含500颗树。

 两种森林的主要区别:

样本空间不同——随机特征子空间/全部样本数据

分裂节点方法不同——最小的基尼指数/随机选择一个

随机森林与极端随机森林:http://t.csdn.cn/c5BZw

级联森林估计的类分布形成一个类向量,然后与原始特征向量连接,输入到下一层。

 假设有三个类;四个森林中的每一个都将产生一个3D类向量;因此,下一个关卡将获得12个(= 3 × 4) 增强特征。

这里,我理解的是这个类分布向量形成图展示的是级联森林中输入特征向量进入其中一个森林的过程,所以上图右边生成一个三维的向量。

 

 为了降低过拟合的风险,每个森林产生的类向量通过k折交叉验证产生。

每个实例将被用作训练数据k−1次,然后对产生的类向量进行平均得到最终的类向量,作为级联下一级的增强特征。

在扩展了一个新的级联级别后,可以在验证集上估计整个级联的性能,如果没有显著的性能增益,训练过程将终止;因此,级联级别的数量可以自动确定。 即gcForest在适当的时候终止训练自适应地决定模型的复杂度。这使得它适用于不同规模的训练数据,不局限于大规模的训练数据。

 多粒度扫描

滑动窗口用于扫描原始特征

 将以上两个步骤连接起来就是gcforest的流程图啦

下图中,假设有 3 个类,并且分别使用 100 维 200 维 300 维的窗口在原始 400 维的特征上进行滑动

 级联的级联:每个级联由多个级别组成,每个级别对应一个扫描粒度。

 

 超参数和默认设置

黑体字表示影响较大的超参数,"?"表示需要根据不同任务进行调节。

 表一表明gcforest所需超参数更少,结构更加简单。

性能

 

 图6 显示当级联级别增加时,gcforest的性能趋势。

 

 图8表示更大的模型往往能提供更好的性能。

实验结果

 简单放两个实验,文章中有很多。

 

 关于代码

代码我还没有跑好,不过已经下载了,看到一篇对代码构成讲解很详细的文章。

链接放这啦:http://t.csdn.cn/lo3jX

等我调好了再来。


http://chatgpt.dhexx.cn/article/MPiNPBhn.shtml

相关文章

【冰糖Python】深度森林 DeepForest

此文为记录DeepForest的简单使用 原文《Deep Forest: Towards an Alternative to Deep Neural Networks》 “A key advantage of deep forest is its adaptive model complexity depending on the dataset. The default setting on hyper-parameters enables it to perform r…

使用深度森林(Deep Forest)进行分类-Python

一、什么是深度森林? 传统DNN的不足: 1、需要大量的数据集来训练; 2、DNN的模型太复杂; 3、DNN有着太多的超参数 gcForest的优势: 1、更容易训练; 2、性能更佳; 3、效率高且可扩展、支持…

深度森林浅析

深度森林 深度学习最大的贡献是表征学习(representation learning),通过端到端的训练,发现更好的features,而后面用于分类(或其他任务)的输出function,往往也只是普通的softmax&…

深度森林原理及实现

目录 背景 级联森林 多粒度扫描 代码 总结 背景 深度森林(Deep Forest)是周志华教授和冯霁博士在2017年2月28日发表的论文《Deep Forest: Towards An Alternative to Deep Neural Networks》中提出来的一种新的可以与深度神经网络相媲美的基于树的模型,其结构…

论文阅读:深度森林

论文地址:https://arxiv.org/pdf/1702.08835.pdf 相关代码:https://github.com/kingfengji/gcForest 深度森林是南大周志华老师前两年提出的一种基于随机森林的深度学习模型。 当前的深度学习模型大多基于深度学习神经网络(DNN)…

Deep Forest(gcforest)通俗易懂理解

DeepForest(gcforest)深度森林介绍 1.背景介绍 当前的深度学习模型主要建立在神经网络上,即可以通过反向传播训练的多层参数化可微分非线性模块,周志华老师希望探索深度学习模型的新模式,探索不可微模块构建深度模型的可能性。从而提出了一…

【深度学习】Deep Forest:gcForest算法理解

一、相关理论 本篇博文主要介绍南京大学周志华教授在2017年提出的一种深度森林结构——gcForest(多粒度级联森林)。近年来,深度神经网络在图像和声音处理领域取得了很大的进展。关于深度神经网络,我们可以把它简单的理解为多层非…

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

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

深度森林(gcforest)原理讲解以及代码实现

GcForest原理 gcforest采用Cascade结构,也就是多层级结构,每层由四个随机森林组成,两个随机森林和两个极端森林,每个极端森林包含1000(超参数)个完全随机树,每个森林都会对的数据进行训练,每个森林都输出结…

有关 -fPIC 选项的编译问题

嵌入式 Linux 上基于 makefile 的编译,执行编译出现如下错误: error: test/fake_blemgr_test.o: requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC 这个问题涉及到生成位置无关代码的机制,在我这里的情况是&#xff0…

-fpic 与-fPIC的区别

-fpic 与-fPIC的区别 前言 在编译动态库的时候,我们应该需要使用-fpic 或-fPIC参数。如下所示: 然后,使用gcc或g 命令生成动态库 pic 与PIC的异同 相同点:都是为了在动态库中生成位置无关的代码。通过全局偏移表(GOT&…

在字符串中删除指定的特定字符

使用C语言,编写一个尽可能高效的函数,删除字符串中特定字符。 思路:要求尽可能高效,定义一个256的int数组,将需要删除的字符ASCII作为数组下标,要删除的置1,注意点:处理后的字符串要…

实现一个删除字符串中的指定字符的简单函数

做出此函数只需将函数分步运行 第一步&#xff1a;确定函数接口和定义变量 因为是要删除字符串中的指定函数&#xff0c;所以要定义出字符串以及字符&#xff0c;即str[]和c。函数接口为void delchar&#xff08;char*str&#xff0c;char c); #include<stdio.h> int …

删除字符串某一指定子字符串

文章目录 功能&#xff1a;删除字符串某一指定子字符串业务场景实现方法1、Java实现 功能&#xff1a;删除字符串某一指定子字符串 业务场景 在数据库中有一个String类型的字符串&#xff0c;该字符串通过逗号进行分割&#xff0c;现在前端传过来字符串中的一个子字符串&…

删除字符串中指定的字符C语言详解

问题描述&#xff1a; 从键盘输入一个字符串和一个字符&#xff0c;删除字符串中所指定的字符&#xff0c;将结果保存到一个新的字符串中并输出 编译环境&#xff1a;vc 6.0; 代码 #include <stdio.h>int main() {char str1[80], str2[80], ch;int i,j0;printf("…

C语言删除字符串中的指定字符

一、函数方法&#xff08;推荐使用这个方法&#xff09; 只需要进行一次对目标字符串的遍历即可完成删除目标字符的功能&#xff0c;具体的代码如下所示&#xff1a; void delchar( char *str, char c ) {int i,j;for(ij0;str[i]!\0;i){if(str[i]!c)//判断是否有和待删除字符一…

C++ 删除指定字符串中的某些字符

C 删除指定字符串中的某些字符 题目 输入URL前缀和后缀&#xff0c;删除字符串中的“,/”&#xff0c;把URL拼接在一起且后边有“/”。 用例&#xff1a; 输入&#xff1a;/abhdsjvf/,/afsggfd 输出&#xff1a;/abhdsjvf/afsggfd/ 程序实现&#xff1a; #include<iostrea…

Windows server 2012 R2安装教程

镜像下载地址&#xff1a; ed2k://|file|cn_windows_server_2012_r2_vl_with_update_x64_dvd_6052729.iso|5545527296|BD499EBCABF406AB82293DD8A5803493|/ 1&#xff0c;语言&#xff0c;键盘输入法&#xff0c;默认&#xff0c;点击下一步 2&#xff0c;点击 现在安装 3&…

SQL Serevr 2012 安装教程

需要的工具 SQL Server 2012R2 镜像 ISO WINDOWS SERVER 2012R2 操作系统 安装过程 1、打开安装文件&#xff0c;打开 setup 应用程序图标 2、在 SQL server 安装中心窗口中&#xff0c;点击安装– 点击全新 SQL Server 独立安装或向现有安装添加功能 3、点击确定 4、输入产…

Microsoft SQL Server 2008 R2 官方简体中文正式版下载(附激活序列号密钥)

微软官方发布的Microsoft SQL Server 2008 R2 简体中文完整版。基于SQL Server 2008提供可靠高效的智能数据平台构建而成&#xff0c;SQL Server 2008 R2 提供了大量新改进&#xff0c;可帮助您的组织满怀信心地调整规模、提高 IT 效率并实现管理完善的自助 BI。此版本中包含应…