🧠 1. 什么是模型参数与超参数?
类型 | 定义 | 例子 |
---|
模型参数 | 模型训练过程中自动学习的值 | 神经网络中的权重、偏置 |
超参数 | 训练前由我们人为设定、控制训练过程的参数 | 学习率、批量大小、网络层数等 |
⚙️ 2. 常见超参数及其作用
🔹 2.1 学习率(Learning Rate)
- 作用:控制参数更新的步长
- 常用范围:0.1 ~ 1e-5
- 论文中常见:0.1, 0.01, 0.001(Adam默认:0.001)
- 建议:
🔹 2.2 批量大小(Batch Size)
- 作用:每次训练更新中使用的样本数量
- 常用值:32, 64, 128, 256
- 论文示例:
- ResNet:256
- Transformer:2048 tokens
- 建议:
- 小批量(32-256)一般泛化更好
- 大批量可提升训练速度但风险过拟合
🔹 2.3 训练轮数(Epochs)
- 作用:完整遍历训练集的次数
- 设置范围:
- 技巧:
- 搭配 Early Stopping 使用
- 实时监控验证损失
🔹 2.4 优化器(Optimizer)
- 常见选择:
- SGD、SGD + Momentum(动量0.9)
- Adam(默认 β1=0.9, β2=0.999)
- AdamW(改进版,更适用于Transformer)
- 趋势:
- 经典模型:SGD
- 现代模型:Adam / AdamW
🔹 2.5 正则化参数(Regularization)
- 权重衰减(Weight Decay):
- 抑制过拟合,常设为 1e-4 或 0.01(AdamW)
- Dropout:
- 防止神经元共适应,常设为 0.1~0.5
- 输入层 0.1~0.2,隐藏层 0.5
🏗️ 3. 网络结构相关参数
🔸 3.1 层数与神经元数量
- CNN:从 LeNet(几层) 到 ResNet(上百层)
- Transformer:6 ~ 24 层
- 每层维度:32 ~ 4096 不等
🔸 3.2 激活函数
- ReLU:最常见,简单有效
- LeakyReLU:缓解“死亡ReLU”
- GELU:Transformer 默认激活
- Sigmoid / Tanh:历史悠久,但易梯度消失
🔍 4. 参数调优策略
4.1 超参数搜索方法
- 网格搜索(Grid Search):全排列遍历参数组合
- 随机搜索(Random Search):效率更高,更推荐
4.2 动态调整策略
- 学习率预热(Warmup)
- 余弦退火(Cosine Annealing)
- 周期性学习率(Cyclic LR)
📄 5. 论文参数设置参考
✅ ResNet (ImageNet)
参数 | 设置 |
---|
学习率 | 0.1, 每30轮除以10 |
批量大小 | 256 |
动量 | 0.9 |
权重衰减 | 1e-4 |
Epochs | 90 |
✅ Transformer (Vaswani et al.)
参数 | 设置 |
---|
学习率 | 自定义计划(含warmup) |
批量大小 | 2048 tokens |
Adam参数 | β1=0.9, β2=0.98, ε=1e-9 |
Dropout | 0.1 |
训练步数 | 100K steps |
🛠️ 6. 实用调参建议
- 从默认值开始:许多框架默认参数已很合理
- 逐个调整参数:便于观察每项超参数的影响
- 记录实验日志:方便回溯和对比实验结果
- 参考开源代码:复现论文实现的设置
- 使用调参工具:如 Optuna、Ray Tune
✨ 结语
深度学习的参数设置没有标准答案,它既是一门技术,也是一门艺术。多实验、多记录、多模仿是成长最快的路径。希望本篇指南能够帮助你建立起对超参数的理解,迈出调参的第一步!