基于深度森林(Deep Forest)的级联结构、多粒度扫描与级联森林构建过程
字数 2019 2025-12-16 17:52:46
基于深度森林(Deep Forest)的级联结构、多粒度扫描与级联森林构建过程
题目描述
深度森林(Deep Forest),又称gcForest(multi-Grained Cascade Forest),是一种深度模型替代方案。它不依赖反向传播,而是由多层级联的决策树森林构成,通过多粒度扫描(Multi-Grained Scanning)和级联森林(Cascade Forest)两个核心模块,实现表征学习和性能提升。题目要求:详细阐述深度森林的结构设计,包括多粒度扫描如何生成特征向量、级联森林如何逐层处理并决定是否扩展,以及最终预测生成的过程。
解题过程讲解
下面分步骤讲解深度森林的完整流程,从输入到最终预测。
1. 模型整体架构概览
深度森林由两个主要部分组成:
- 多粒度扫描(Multi-Grained Scanning):模拟卷积神经网络的局部特征提取,通过滑动窗口扫描原始特征,生成多尺度特征表示。
- 级联森林(Cascade Forest):由多个层级(层)组成的级联结构,每层包含多个不同类型的随机森林(如完全随机森林和普通随机森林),每层接收前一层的特征并输出类概率向量,拼接后作为下一层输入,最后一层通过平均所有森林的输出产生最终预测。
2. 多粒度扫描的详细步骤
假设输入样本是特征向量(对于图像则是展平后的向量或多通道特征图)。多粒度扫描的目标是生成具有多尺度上下文信息的特征向量。
- 步骤2.1 定义滑动窗口大小:设定多个不同大小的滑动窗口(如尺寸为100、200等)。每个窗口会在特征序列上逐元素滑动(类似一维卷积)。
- 步骤2.2 窗口滑动与特征提取:对每个窗口尺寸,用窗口遍历整个特征序列(可重叠)。每个窗口截取一个特征子向量,将该子向量输入到一个随机森林集合中(通常包含多个随机森林)。
- 步骤2.3 生成概率向量:对于每个窗口截取的子向量,每个随机森林会输出一个类概率向量(长度为类别数C)。将所有森林的概率向量拼接起来,作为该窗口位置的特征表示。
- 步骤2.4 拼接所有窗口位置的特征:对每个窗口尺寸,将滑动过程中所有位置生成的特征拼接成一个长的特征向量。不同尺寸窗口得到的特征向量再拼接,形成多粒度扫描后的新特征向量。
示例:假设原始特征维度为400,使用两个窗口尺寸(100和200)。对于尺寸100的窗口,滑动后可能产生301个位置(若步长为1),每个位置由森林输出长度为C的概率向量(假设2个森林,则每个位置特征长度=2C)。那么该尺寸生成的特征维度为301×2C。类似计算尺寸200的窗口,最后将两个尺寸的特征拼接作为多粒度扫描输出。
3. 级联森林的构建与处理流程
级联森林由多个层级联而成,每层结构相同,但权重(即决策树)不同。每层接收前一层输出的特征,并决定是否继续增加新层。
- 步骤3.1 单层结构:每一层包含多个随机森林,通常包括两种类型:
- 完全随机森林(Completely Random Forest):每棵树随机选择特征进行分裂,增加多样性。
- 普通随机森林(Random Forest):使用基尼系数或信息增益进行特征选择。
每个森林都会对输入特征进行训练(在训练阶段)或预测(在测试阶段),输出一个C维的类概率向量。
- 步骤3.2 特征传递与拼接:对于每个样本,将该层所有森林输出的概率向量拼接起来,再与原始输入特征(即进入该层前的特征)拼接,形成新的特征向量,传递给下一层。
示例:假设某层有2个完全随机森林和2个普通随机森林,每个输出C维概率向量,则拼接后得到4C维向量。若输入特征维度为D,则新的特征向量维度为D+4C。 - 步骤3.3 层数自适应确定:在训练时,级联结构不会预先固定层数,而是通过验证集性能决定何时停止增加新层。具体流程:
- 从第一层开始训练,用训练集训练该层所有森林。
- 用验证集评估当前整个级联的性能(准确率等)。
- 增加新的一层,用当前级联输出的特征重新训练新层的森林。
- 如果验证集性能不再显著提升(如连续几层提升小于阈值),则停止增加新层,训练结束。
- 步骤3.4 最终预测生成:在测试阶段,样本经过所有训练好的层级联,最后一层的输出为所有森林的类概率向量。最终预测取所有森林输出概率的平均(或加权平均),取最大概率对应的类别作为预测结果。
4. 模型特点与优势
- 无需反向传播:基于树模型,训练高效,超参数少(主要是森林数量、树的数量、窗口尺寸等)。
- 自适应深度:通过验证集自动确定层数,避免过拟合。
- 处理不同尺寸输入:多粒度扫描可适应序列或图像数据。
- 可解释性:部分可解释性来源于决策树的分裂规则。
5. 总结
深度森林通过多粒度扫描捕获局部模式,通过级联森林逐层增强特征表示,以森林的集成能力替代神经网络的深度表示学习。整个过程避免了梯度计算,适合小规模数据和非微分模型场景,是一种有竞争力的深度学习替代方法。