深度学习中常见的超参数
1. 模型结构参数
- 网络深度(层数)
- 作用:决定模型的表达能力(如ResNet的层数从18到152)。
- 调整:层数越多,模型越复杂,但可能导致梯度消失或过拟合。
- 每层神经元/通道数
- 作用:控制每层的容量(如全连接层的512、1024;CNN的64、128通道)。
- 激活函数
- 常见选择:ReLU(通用)、LeakyReLU(解决神经元死亡)、Softmax(分类输出)、Sigmoid(二分类/回归输出)。
- 注意:输出层激活函数需与任务匹配(如分类用Softmax)。
- 卷积核大小
- 典型值:3x3(CNN常用)、1x1(通道调整)、5x5(更大感受野)。
- RNN/Transformer参数
- RNN:隐藏层维度(如256)、时间步数(序列长度)。
- Transformer:头数(Multi-Head Attention)、位置编码方式。
2. 优化器相关参数
- 学习率(Learning Rate, LR)
- 作用:控制参数更新的步长,直接影响收敛速度和稳定性。
- 典型值:Adam常用初始LR为1e-31e-5;SGD可能更大(0.10.001)。
- 批量大小(Batch Size)
- 作用:影响梯度估计的方差和内存占用。
- 调整:通常设置为2的幂次(如32、64),大Batch需配合更大的LR或预热(Warmup)。
- 优化器类型
- SGD:需调动量(Momentum,常用0.9)。
- Adam:需调β₁(0.9)、β₂(0.999)、ε(1e-8)。
- RMSProp:需调衰减率(Decay Rate)。
- 梯度裁剪(Gradient Clipping)
- 阈值:如1.0或5.0,防止梯度爆炸(常见于RNN)。
3. 正则化参数
- L1/L2正则化系数
- 作用:约束权重幅度,防止过拟合。
- 典型值:1e-4~1e-6(L2更常用)。
- Dropout比例
- 作用:随机丢弃神经元,增强泛化能力。
- 典型值:隐藏层0.2~0.5,输入层0.1。
- 批量归一化(BatchNorm)动量
- 作用:控制均值和方差更新的平滑性(默认0.9)。
- 早停(Early Stopping)耐心值
- 作用:容忍验证集损失的停滞轮数(如10~20轮)。
4. 损失函数参数
- 分类任务
- 类别权重:处理类别不平衡(如加权交叉熵)。
- 标签平滑(Label Smoothing):如设置ε=0.1,防止模型过度自信。
- 回归任务
- 损失函数选择:MSE(均方误差)、MAE(平均绝对误差)、Huber损失(鲁棒性)。
- 自定义损失参数
- 如目标检测中的Focal Loss(调节难易样本权重)。
5. 学习率调度参数
- 衰减策略
- 步长衰减:每隔N轮衰减一次(如每10轮衰减为0.1倍)。
- 指数衰减:连续衰减(如
LR = LR * 0.95
)。
- 余弦退火(Cosine Annealing)
- 周期长度(T_max):如50轮,学习率从初始值降到0再恢复。
- 预热(Warmup)步数
- 如BERT前10%训练步逐步提升学习率。
6. 初始化参数
- 权重初始化方法
- Xavier/Glorot初始化:适用于Sigmoid/Tanh激活。
- He初始化:适用于ReLU族激活。
- 偏置初始化
- 通常设为0或小常数(如0.01)。
7. 数据相关参数
- 输入尺寸
- 如图像分辨率(224x224)、文本序列长度(如512)。
- 数据增强强度
- 如随机裁剪比例、颜色抖动幅度。
- 批归一化(BatchNorm)
- 是否在训练时更新均值和方差(
affine=True
)。
- 是否在训练时更新均值和方差(
8. 高级调参技巧
- 超参数搜索方法
- 网格搜索:适用于少量参数(如学习率+Dropout组合)。
- 随机搜索:更高效,适合高维空间。
- 贝叶斯优化:利用历史结果指导搜索(如Hyperopt)。
- 参数敏感性分析
- 对关键参数(如学习率)进行对数空间采样(如
[1e-5, 1e-4, 1e-3]
)。
- 对关键参数(如学习率)进行对数空间采样(如
9. 参数间依赖关系
- 学习率与批量大小
- 大Batch Size通常需要更大的学习率(如线性缩放规则:LR ∝ Batch Size)。
- 模型深度与Dropout比例
- 更深的网络可能需要更高的Dropout比例。
- 正则化系数与数据量
- 数据量少时,需更强的正则化(增大L2系数或Dropout比例)。
10. 参数调优优先级
- 学习率(最敏感参数,优先调整);
- 批量大小(影响训练速度和稳定性);
- 模型结构(如层数、激活函数);
- 正则化参数(Dropout、L2系数);
- 优化器参数(动量、β值)。
总结
深度学习的参数调优需要结合实验和理论分析。建议:
- 使用自动化工具(如Optuna、Ray Tune)加速搜索;
- 优先调整对性能影响最大的参数(如学习率);
- 记录每次实验的配置和结果(可用W&B或TensorBoard)。
通过系统化的调参,可以显著提升模型性能,但需注意避免过度拟合验证集!