从激活函数到超参搜索:一份“能落地”的深度学习手册

从激活函数到超参搜索:一份"能落地"的深度学习手册


1. 激活函数:先选对,再调参

函数 零中心 梯度消失 计算速度 稀疏性 典型坑 适用场景
Sigmoid × 严重 慢(exp) × 输出≠0 均值 二分类输出层
Tanh 较重 慢(exp) × 两端饱和 浅层网络
ReLU × 缓解 极快 Dead ReLU 99% 隐藏层首选
Leaky ReLU × 缓解 斜率手工 实验性替代
ELU 缓解 慢(exp) 计算贵 小数据集精调
Swish × 缓解 参数增加 深层网络 SOTA


一句话总结

隐藏层默认 ReLU;如果训练很深且显存充足,换成 Swish 往往有 0.5%~1% 的额外收益;输出层二分类用 Sigmoid,多分类用 Softmax 。


2. 梯度消失 & 爆炸:诊断 + 处方

现象 快速判断 根因 实战组合拳
梯度消失 层越靠前,‖∂Loss/∂W‖趋 0 链式<1 连乘 1) ReLU 家族激活 2) BN + 残差 3) Xavier/He 初始化
梯度爆炸 Loss → NaN,‖∂Loss/∂W‖>100 链式>1 连乘 1) Gradient Clip by norm=5 2) 降低 lr 1 个量级 3) L2 weight decay 1e-4

BN 能把激活值拉回 N(0,1),相当于给梯度做了"保险丝":既防消失也防爆炸 。

3. 正则化全家桶:何时用、怎么用

技术 作用面 训练/测试差异 调参经验
Dropout 神经元 训练 p=0.5,测试关闭 小网络 0.3,大网络 0.5;与 BN 共存时降至 0.1
L2 权重 无差异 系数 1e-4 起步,观察验证集再 ×10 或 ÷10
Early Stop 迭代次数 无差异 验证 loss 连续 5 epoch 不降即停
Data Aug 样本 无差异 分类任务先水平翻转+随机裁剪,再考虑颜色扰动

注意

BN 本身自带噪声,ResNet 后几层可完全去掉 Dropout,不降精度反而省显存 。


4. 参数初始化:别让网络"死"在起跑线

激活函数 推荐初始化 原理 代码一行
ReLU He 方差=2/fan_in torch.nn.init.kaiming_normal_
Tanh/Sigmoid Xavier 方差=2/(fan_in+fan_out) torch.nn.init.xavier_normal_
全零初始化 × 对称破坏,梯度相同 永远别用

5. 优化器选择:Adam 快,SGD 准

阶段 数据量 推荐组合 学习率起点
快速实验 任意 Adam 1e-3
中期精调 >10k AdamW + CosineLR 3e-4
收官冲刺 任意 SGD+Momentum 1e-2(再 ×0.1 两次)


经验

先用 Adam 把验证 AUC 拉到 0.9x,再换 SGD 往往能再提 0.5~1 个点,代价是 3× 训练时间 。


6. 学习率:一步到位最省钱

  • 搜索套路

    1. 从 {3,1,0.3,0.1,0.03,0.01} 跑 3 epoch,找最快降 loss 的那个;
    2. 用 Cosine/One-Cycle 在剩余 epoch 里平滑下降;
    3. 最后 10% epoch 做 Warm-Restarts 微调。
  • 自动化

    把上述过程写成回调函数,配合早停,一次训练就能拿到"手工调 3 天"的效果。


7. Batch Size & Epoch:不是越大越好

显卡 显存 最大 bs 平衡策略
1080Ti 11 G 64~128 梯度累加 4 步 = 有效 256
V100 32 G 256~512 直接上,配合 LARS 可上千

规律

线性缩放 lr 只适用于 ≤512;再大时用 LARS 层自适应学习率,否则 val acc 会掉 。

8. 超参搜索:从网格到贝叶斯

方法 搜索空间 适合维度 预算 备注
网格搜索 离散 ≤3 指数爆炸 教学演示用
随机搜索 连续/离散 5~10 线性 baseline 首选
贝叶斯优化 连续 ≥10 10× 随机 利用历史评估,3~5 轮就能逼近最优

贝叶斯四件套

  1. 目标函数:验证集 1-AUC
  2. 搜索空间:lr∈[1e-4,1e-1] 对数、dropout∈[0,0.5] 均匀
  3. 采集函数:EI (Expected Improvement)
  4. 历史结果:上一轮 (lr, dropout, 1-AUC) 三元组

9. 微调预训练模型:冻结多少层?

数据规模 与源域相似度 推荐方案
<1 k 只改分类层,lr=1e-3
1 k~10 k 解冻 top-1 block,lr=1e-4
>10 k 解冻全部,lr=3e-5 + 早停

先冻结底层训练 5 epoch,再解冻一半层继续 10 epoch,可减小 30% 过拟合风险 。


10. 一份"能跑"的调参 Checklist

  1. 数据:可视化 100 张,确认标签干净;
  2. 预处理:零均值 + 方差归一化,分类做 One-Hot;
  3. 模型:隐藏层默认 ReLU,输出层匹配任务;
  4. 初始化:He/Xavier + bias=0;
  5. 正则:BN 必备,小网络加 Dropout(0.3);
  6. 优化器:Adam 1e-3 先跑 10 epoch;
  7. 学习率:Cosine 下降,Warm-Restarts 最后 10%;
  8. 早停:val loss 不降 5 epoch 停,回滚最优 ckpt;
  9. 复现:固定 numpy/torch 随机种子;
  10. 记录:用 TensorBoard 把 loss、lr、grad norm 全写进日志,方便复盘。

彩蛋:一张"炼丹"壁纸

"如果 loss 不下降,先把 lr 除以 10,再把 batch size 乘 2,最后检查数据标签。"

------ 深度学习第一定律


参考文献

:
程序员学长《终于把神经网络中的激活函数搞懂了!!》
:
CSDN《神经网络激活函数优缺点和比较》

相关推荐
Echo_NGC22375 小时前
【FFmpeg 使用指南】Part 3:码率控制策略与质量评估体系
人工智能·ffmpeg·视频·码率
纤纡.5 小时前
PyTorch 入门精讲:从框架选择到 MNIST 手写数字识别实战
人工智能·pytorch·python
大大大反派5 小时前
CANN 生态中的自动化部署引擎:深入 `mindx-sdk` 项目构建端到端 AI 应用
运维·人工智能·自动化
程序猿追5 小时前
深度解读 AIR (AI Runtime):揭秘 CANN 极致算力编排与调度的核心引擎
人工智能
2601_949593655 小时前
深入解析CANN-acl应用层接口:构建高效的AI应用开发框架
数据库·人工智能
●VON5 小时前
CANN安全与隐私:从模型加固到数据合规的全栈防护实战
人工智能·安全
刘大大Leo6 小时前
GPT-5.3-Codex 炸了:第一个「自己造自己」的 AI 编程模型,到底意味着什么?
人工智能·gpt
小镇敲码人6 小时前
剖析CANN框架中Samples仓库:从示例到实战的AI开发指南
c++·人工智能·python·华为·acl·cann
摘星编程6 小时前
CANN ops-nn Pooling算子解读:CNN模型下采样与特征提取的核心
人工智能·神经网络·cnn
程序员清洒6 小时前
CANN模型安全:从对抗防御到隐私保护的全栈安全实战
人工智能·深度学习·安全