🧪 宽度 · 泛化实验
MLP 中间层宽度与泛化能力 · 30 章完整目录
🌟 友好 · 从实验到洞察
01
实验背景与目标
为什么关注宽度?过拟合与欠拟合的直观理解。
02
实验环境搭建
Python、PyTorch、Matplotlib 安装与验证。
03
生成实验数据集
使用 sklearn 生成非线性二分类数据集。
04
数据集可视化
绘制数据分布散点图,观察类别边界。
05
定义基础 MLP 模型
单隐藏层,可配置宽度。
06
训练函数封装
封装训练循环,记录损失与准确率。
07
定义不同宽度的模型
宽度 = 2, 8, 32, 128, 512。
08
训练所有模型
统一超参数,记录训练过程。
09
绘制训练损失曲线
对比不同宽度的收敛速度。
10
绘制测试准确率曲线
观察泛化能力变化。
11
决策边界可视化
绘制每个模型的分类边界。
12
过拟合现象分析
宽度过大时决策边界为何扭曲?
13
欠拟合现象分析
宽度过小时为何无法区分?
14
正则化初探
L2 正则化对宽模型的影响。
15
Dropout 实验
在宽模型中添加 Dropout 层。
16
早停法实验
利用验证集提前停止训练。
17
数据量影响实验
小样本 vs 大样本下的宽度表现。
18
学习率调优
不同宽度下学习率的敏感性。
19
激活函数对比
ReLU、Tanh、Sigmoid 在不同宽度下的表现。
20
初始化方法实验
Xavier、He 初始化对宽模型的影响。
21
Batch Normalization 实验
BN 能否缓解过拟合?
22
深度 vs 宽度
固定参数量,深窄 vs 浅宽对比。
23
测试集噪声实验
添加标签噪声,观察鲁棒性。
24
特征重要性分析
宽模型是否学到无用特征?
25
可视化隐藏层激活
观察神经元是否饱和或死亡。
26
权重分布直方图
宽模型与窄模型的权重分布差异。
27
梯度范数追踪
不同宽度下梯度消失/爆炸情况。
28
模型集成实验
多个窄模型集成 vs 单个宽模型。
29
实际案例:MNIST
在 MNIST 上验证宽度与泛化关系。
30
总结与报告
如何选择 MLP 宽度?实验结论与工程建议。