文章目录
一、集成学习的核心思想
1.1 集成学习的概念
集成学习(Ensemble Learning)通过组合多个弱学习器提升模型性能。核心逻辑是:“三个臭皮匠胜过诸葛亮”,利用模型间的互补性降低误差。参与集成的模型需满足:
- 个体性能优于随机猜测(弱学习器);
- 彼此之间具有差异性(避免"同质化")。
1.2 集成学习的分类
根据组合策略,主要分为三类:
- Bagging(并行集成):如随机森林,通过有放回抽样生成独立训练集,并行训练弱学习器,最终平权投票。
- Boosting(串行集成):如AdaBoost,迭代训练弱学习器,每轮聚焦前一轮的错误样本,最终加权投票。
- Stacking(层级集成):通过多层模型组合,第一层输出作为第二层输入,学习最优组合策略。
二、Bagging思想与计算实例:以随机森林为例
2.1 Bagging核心逻辑
- 有放回抽样(Bootstrap):从原始数据中重复抽样生成多个训练集(如N次抽样,每次抽M条数据,允许重复)。
- 并行训练弱学习器:每个训练集独立训练决策树(或其他模型)。
- 平权投票:分类任务取多数表决,回归任务取平均值。
2.2 计算实例:贷款分类问题
原始数据(10条样本):
索引 | 年龄 | 有工作 | 有房子 | 标签 |
---|---|---|---|---|
0 | 青年 | 否 | 否 | 拒绝 |
1 | 青年 | 否 | 否 | 拒绝 |
2 | 青年 | 是 | 否 | 同意 |
3 | 中年 | 是 | 是 | 同意 |
4 | 老年 | 是 | 是 | 同意 |
5 | 老年 | 否 | 是 | 同意 |
6 | 中年 | 否 | 否 | 拒绝 |
7 | 青年 | 是 | 是 | 同意 |
8 | 中年 | 是 | 否 | 拒绝 |
9 | 老年 | 是 | 否 | 同意 |
Step 1:Bootstrap抽样生成3个训练集
- 训练集1:抽样索引 [0,2,4,6,8]
样本:索引0(青年,否,否,拒绝)、索引2(青年,是,否,同意)、索引4(老年,是,是,同意)、索引6(中年,否,否,拒绝)、索引8(中年,是,否,拒绝) - 训练集2:抽样索引 [1,3,5,7,9]
样本:索引1(青年,否,否,拒绝)、索引3(中年,是,是,同意)、索引5(老年,否,是,同意)、索引7(青年,是,是,同意)、索引9(老年,是,否,同意) - 训练集3:抽样索引 [2,3,5,7,8]
样本:索引2(青年,是,否,同意)、索引3(中年,是,是,同意)、索引5(老年,否,是,同意)、索引7(青年,是,是,同意)、索引8(中年,是,否,拒绝)
Step 2:训练3棵决策树(简化为单层树)
- 树1:以"有房"为根节点,分裂规则:
- if 有房 == 是 then 同意(正确分类样本4)
- if 有房 == 否 then 拒绝(样本0,2,6,8中:样本2真实标签为同意但预测为拒绝→错误分类;样本8真实标签为拒绝预测为拒绝→正确分类)
- 树2:以"年龄"为根节点,分裂规则:
- if 年龄 == 青年 then 按"有工作"分裂:
- if 有工作 == 是 then 同意(正确分类样本7)
- if 有工作 == 否 then 拒绝(正确分类样本1)
- else (非青年) then 同意(正确分类样本3,5,9)
- if 年龄 == 青年 then 按"有工作"分裂:
- 树3:以"有工作"为根节点,分裂规则:
- if 有工作 == 是 then 同意(样本2,3,5,7,9中:样本2正确分类;样本8真实标签为拒绝但预测为同意→错误分类)
- if 有工作 == 否 then 拒绝(正确分类样本0,1,6)
决策树介绍:网页链接
Step 3:平权投票
新样本(中年, 是, 否)的预测:
树 | 预测结果 |
---|---|
树1 | 拒绝 |
树2 | 同意 |
树3 | 同意 |
投票结果:2同意 vs 1拒绝 → 最终预测为"同意" |
三、Boosting 思想与计算实例:以二分类为例
3.1 Boosting 核心逻辑
- 样本权重迭代:初始时所有样本权重相等,每轮提高错误分类样本的权重。
- 弱学习器加权:根据错误率计算弱学习器权重,错误率越低权重越高。
- 加权投票:最终结果由弱学习器按权重投票决定。
3.2 计算实例:沿用贷款数据(简化为2轮迭代)
Step 1:初始化权重与第一轮训练
- 初始权重:所有样本权重 w i = 0.1 w_i = 0.1 wi=0.1(10条样本,总权重1)
- 训练弱学习器1:选择"有房"作为特征,分裂规则:
- if 有房 == 是 then 同意(正确分类样本3,4,5,7)
- if 有房 == 否 then 拒绝(错误分类样本2(真实标签同意),正确分类样本0,1,6,8,9)
- 计算错误率:
错误样本:索引2(权重0.1)
e 1 = 0.1 1 = 0.1 e_1 = \frac{0.1}{1} = 0.1 e1=10.1=0.1 - 计算弱学习器权重:
α 1 = 1 2 ln ( 1 − e 1 e 1 ) = 1 2 ln ( 9 ) ≈ 1.0986 \alpha_1 = \frac{1}{2} \ln\left(\frac{1-e_1}{e_1}\right) = \frac{1}{2} \ln(9) \approx 1.0986 α1=21ln(e11−e1)=21ln(9)≈1.0986 - 更新样本权重:
错误样本权重: w i × e α 1 ≈ 0.1 × 3 = 0.3 w_i \times e^{\alpha_1} \approx 0.1 \times 3 = 0.3 wi×eα1≈0.1×3=0.3
正确样本权重: w i × e − α 1 ≈ 0.1 × 0.333 = 0.0333 w_i \times e^{-\alpha_1} \approx 0.1 \times 0.333 = 0.0333 wi×e−α1≈0.1×0.333=0.0333
归一化后权重:总权重 = 0.3 + 9 × 0.0333 ≈ 0.6 0.3 + 9 \times 0.0333 \approx 0.6 0.3+9×0.0333≈0.6
错误样本权重: 0.3 / 0.6 = 0.5 0.3/0.6 = 0.5 0.3/0.6=0.5
正确样本权重: 0.0333 / 0.6 ≈ 0.0555 0.0333/0.6 \approx 0.0555 0.0333/0.6≈0.0555索引 权重更新后 0 0.0555 1 0.0555 2 0.5000 3 0.0555 4 0.0555 5 0.0555 6 0.0555 7 0.0555 8 0.0555 9 0.0555
Step 2:第二轮训练
当前权重分布:如上表
训练弱学习器2:选择"有工作"作为特征,分裂规则:
- if 有工作 == 是 then 同意(错误分类样本8(真实标签拒绝),正确分类样本2,3,4,5,7,9)
- if 有工作 == 否 then 拒绝(正确分类样本0,1,6)
计算错误率:
错误样本:索引8(权重0.0555)
e 2 = 0.0555 1 = 0.0555 e_2 = \frac{0.0555}{1} = 0.0555 e2=10.0555=0.0555计算弱学习器权重:
α 2 = 1 2 ln ( 1 − e 2 e 2 ) ≈ 1 2 ln ( 17 ) ≈ 1.416 \alpha_2 = \frac{1}{2} \ln\left(\frac{1-e_2}{e_2}\right) \approx \frac{1}{2} \ln(17) \approx 1.416 α2=21ln(e21−e2)≈21ln(17)≈1.416更新样本权重(归一化前):
错误样本权重: 0.0555 × e 1.416 ≈ 0.0555 × 4 = 0.222 0.0555 \times e^{1.416} \approx 0.0555 \times 4 = 0.222 0.0555×e1.416≈0.0555×4=0.222
正确样本权重: 0.0555 × e − 1.416 ≈ 0.0555 × 0.25 = 0.0139 0.0555 \times e^{-1.416} \approx 0.0555 \times 0.25 = 0.0139 0.0555×e−1.416≈0.0555×0.25=0.0139
归一化后权重:总权重 = 0.222 + 9 × 0.0139 ≈ 0.347 0.222 + 9 \times 0.0139 \approx 0.347 0.222+9×0.0139≈0.347
错误样本权重: 0.222 / 0.347 ≈ 0.640 0.222/0.347 \approx 0.640 0.222/0.347≈0.640
正确样本权重: 0.0139 / 0.347 ≈ 0.040 0.0139/0.347 \approx 0.040 0.0139/0.347≈0.040
Step 3:加权投票
定义类别映射:同意=1,拒绝=-1(便于加权计算)
最终模型: f ( x ) = α 1 ⋅ f 1 ( x ) + α 2 ⋅ f 2 ( x ) f(x) = \alpha_1 \cdot f_1(x) + \alpha_2 \cdot f_2(x) f(x)=α1⋅f1(x)+α2⋅f2(x)
新样本(中年, 是, 否)的预测:
- f 1 ( x ) = − 1 f_1(x) = -1 f1(x)=−1(树1预测拒绝)
- f 2 ( x ) = 1 f_2(x) = 1 f2(x)=1(树2预测同意)
- f ( x ) = 1.0986 × ( − 1 ) + 1.416 × 1 ≈ 0.317 f(x) = 1.0986 \times (-1) + 1.416 \times 1 \approx 0.317 f(x)=1.0986×(−1)+1.416×1≈0.317
阈值判定: f ( x ) > 0 f(x) > 0 f(x)>0 → 预测为"同意"
四、Stacking思想与计算实例:层级集成策略
4.1 Stacking核心逻辑
- 第一层基础模型:用不同类型的弱学习器训练,通过K折交叉验证生成元特征
- 将训练集分为K折
- 对每折:用其他K-1折训练基模型,在该折上预测
- 所有预测结果拼接成元特征矩阵
- 第二层元模型:以元特征矩阵为输入,训练模型学习最优组合策略
4.2 计算实例:三层Stacking(简化为2层)
训练阶段元特征生成:
样本ID | 模型A预测概率(同意) | 模型B预测概率(同意) | 真实标签 |
---|---|---|---|
1 | 0.65 | 0.72 | 同意 |
2 | 0.31 | 0.28 | 拒绝 |
… | … | … | … |
预测阶段:
Step 1:第一层基础模型预测
- 模型A(逻辑回归):
输出新样本(中年, 是, 否)的概率:同意=0.7,拒绝=0.3 - 模型B(决策树):
输出概率:同意=0.6,拒绝=0.4
Step 2:第二层元模型预测
- 输入特征:模型A的概率(0.7), 模型B的概率(0.6)
- 元模型(逻辑回归): z = 0.5 × 0.7 + 0.8 × 0.6 = 0.83 z = 0.5 \times 0.7 + 0.8 \times 0.6 = 0.83 z=0.5×0.7+0.8×0.6=0.83
σ ( 0.83 ) = 1 1 + e − 0.83 ≈ 0.706 \sigma(0.83) = \frac{1}{1+e^{-0.83}} \approx 0.706 σ(0.83)=1+e−0.831≈0.706
预测结果:同意(概率>0.5)
五、集成学习在深度学习和LLM中的应用
6.1 深度学习中的集成策略
在深度学习中,集成学习通过组合多个神经网络模型显著提升性能:
模型多样性集成:
- 训练不同架构的模型(如CNN+Transformer)
- 使用不同初始化参数的相同架构模型
- 示例:在ImageNet分类任务中,集成ResNet50和EfficientNet可将准确率提升3-5%
Snapshot集成:
- 单个模型训练过程中保存多个权重快照
- 在收敛路径的不同点集成预测结果
- 优势:节省训练资源,提升模型鲁棒性
多模态集成:
- 融合视觉、文本、语音等不同模态模型的预测
- 应用:自动驾驶系统集成摄像头、激光雷达和地图数据模型
6.2 大语言模型(LLM)中的集成应用
在LLM领域,集成学习通过以下方式突破性能瓶颈:
方法 | 实现机制 | 典型应用 |
---|---|---|
Prompt集成 | 生成多个提示模板输入同一模型,集成输出结果 | 提高复杂推理任务稳定性 |
模型路由 | 根据输入类型选择最优子模型处理 | ChatGPT的插件调度系统 |
LoRA模块集成 | 训练多个低秩适配器模块动态组合 | 参数高效微调(PEFT) |
预测校正集成 | 主模型输出经多个小型校正模型优化 | 减少幻觉和事实错误 |
突破性进展:
MoE(Mixture of Experts)架构:
- 谷歌Switch Transformer实现万亿参数模型
- 每层动态激活部分专家模块(如每token激活2/2048专家)
- 计算效率提升5倍,保持相同参数量级性能
自集成推理:
- Chain-of-Thought+Self-Consistency:生成多条推理路径投票
- 在GSM8K数学推理数据集上准确率提升12%
模型融合技术:
- 权重平均(Weight Averaging)融合多个微调模型
- 在HuggingFace模型中心广泛应用的Model Soup技术
6.3 前沿研究方向
动态神经网络集成:
- 根据输入复杂度自适应激活模型子集
- NVIDIA的Adaptive-MoE实现能耗敏感推理
跨模型知识蒸馏:
- 集成模型知识蒸馏到单一模型
- 微软DeBERTa-V3通过此方法超越集成教师模型
量子化集成:
- 组合不同精度量化模型(FP16+INT8)
- 实现精度与推理速度的帕累托最优
六、集成学习思想总结与对比
策略 | 核心逻辑 | 弱学习器关系 | 典型应用场景 | 优势特性 |
---|---|---|---|---|
Bagging | 并行抽样,平权投票 | 独立 | 高方差数据(如图像) | 强抗过拟合(降方差) |
Boosting | 串行迭代,聚焦错误 | 依赖 | 高偏差任务(如排序) | 高精度(降偏差) |
Stacking | 层级组合,学习权重 | 互补 | 多模态融合 | 最优组合策略 |
核心价值:
- 基础理论价值:三类方法从不同角度实现"1+1>2"的集成效果
- Bagging通过"样本扰动"提升多样性
- Boosting通过"错误聚焦"提升精度
- Stacking通过"层级学习"优化组合
- 现代应用价值:
- 深度学习:MoE架构实现万亿参数模型动态激活
- 大语言模型:LoRA集成+Prompt集成突破单一模型瓶颈
- 工业部署:量子化集成平衡精度与推理速度
选择指南:
- 需强泛化能力 → Bagging(随机森林)
- 需高预测精度 → Boosting(XGBoost)
- 需融合异构模型 → Stacking
- 大模型场景 → MoE+LoRA集成