目录


1. 数据方面

1.1 数据质量:清洗、去噪、标注准确性

  • 数据清洗:去除重复样本、异常值、缺失值处理
  • 噪声处理:识别并过滤标注错误、质量差的样本
  • 标注准确性:多人标注、一致性检查、专家审核
  • 数据版本管理:追踪数据集变化,确保可复现性

1.2 数据增强:扩充训练样本多样性

  • 图像领域:旋转、翻转、裁剪、颜色变换、混合(Mixup/CutMix)
  • 文本领域:同义词替换、回译、随机插入/删除
  • 时序数据:时间扭曲、窗口切片、噪声注入
  • 自动增强:AutoAugment、RandAugment等策略

1.3 数据平衡:处理类别不平衡问题

  • 重采样:过采样少数类(SMOTE)、欠采样多数类
  • 类别权重:在损失函数中为少数类赋予更高权重
  • 生成合成样本:使用GAN等生成少数类样本
  • 分层采样:确保各类别在训练批次中均匀分布

1.4 特征工程:特征选择、降维、归一化

  • 特征选择:去除冗余特征、选择最相关特征(信息增益、相关系数)
  • 特征变换:对数变换、Box-Cox变换处理偏态分布
  • 归一化/标准化:Min-Max缩放、Z-score标准化
  • 特征交叉:组合多个特征创建新特征

2. 模型结构

2.1 网络架构设计:深度、宽度、连接方式

  • 深度选择:更深的网络捕获更抽象特征,但易梯度消失
  • 宽度调整:每层神经元数量影响模型容量
  • 残差连接:ResNet式跳跃连接解决深层网络训练问题
  • 注意力机制:Transformer、Self-Attention提升关键信息关注
  • 模块化设计:使用成熟的构建块(Inception、SE块等)

2.2 正则化技术:Dropout、L1/L2正则、Batch Normalization

  • Dropout:训练时随机丢弃神经元(通常0.2-0.5),防止过拟合
  • DropConnect:随机丢弃连接而非神经元
  • L1正则(Lasso):权重绝对值惩罚,产生稀疏性
  • L2正则(Ridge):权重平方惩罚,权重衰减
  • Batch Normalization:批次归一化稳定训练,加速收敛
  • Layer Normalization:层归一化,适用于RNN/Transformer
  • 权重初始化:Xavier、He初始化避免梯度消失/爆炸

2.3 模型压缩:剪枝、量化、知识蒸馏

  • 剪枝:删除不重要的权重/神经元/通道,减少参数量
  • 量化:FP32→INT8降低精度但保持性能,加速推理
  • 知识蒸馏:大模型(teacher)指导小模型(student)训练
  • 低秩分解:矩阵分解减少参数
  • 神经架构搜索(NAS):自动寻找高效架构

3. 训练策略

3.1 学习率调整:学习率衰减、warm-up、周期性调整

  • 学习率衰减
    • Step Decay:每N个epoch降低学习率
    • Exponential Decay:指数衰减
    • Cosine Annealing:余弦退火,周期性变化
  • Warm-up:初始阶段逐步增加学习率,稳定训练
  • 周期性学习率:Cyclical LR、SGDR提升泛化能力
  • 自适应学习率:One Cycle Policy、ReduceLROnPlateau

3.2 优化器选择:SGD、Adam、AdamW等

  • SGD:基础随机梯度下降,需要精心调参
  • Momentum:增加动量项,加速收敛并减少震荡
  • AdaGrad:自适应学习率,适合稀疏数据
  • RMSprop:改进AdaGrad,适合RNN
  • Adam:结合Momentum和RMSprop,最常用
  • AdamW:Adam+解耦权重衰减,更好的泛化
  • RAdam:Rectified Adam,自动warm-up
  • Lookahead:慢权重快权重结合

3.3 批次大小优化

  • 小批次(16-64):训练不稳定但泛化好,适合内存受限
  • 大批次(256-1024+):训练稳定但易过拟合,需调整学习率
  • 梯度累积:模拟大批次训练但使用小批次内存
  • Linear Scaling Rule:批次增大N倍,学习率相应增大N倍

3.4 损失函数设计:多任务学习、focal loss等

损失函数是深度学习训练的核心,直接影响模型优化方向和最终性能。不同任务需要选择合适的损失函数。

主要类别

  • 分类任务:交叉熵、Focal Loss(处理类别不平衡)、标签平滑
  • 回归任务:MSE、MAE、Huber Loss(鲁棒性)、分位数损失
  • 多任务学习:加权损失、不确定性加权、梯度归一化
  • 对比学习:Triplet Loss、InfoNCE Loss、对比损失
  • 目标检测:IoU/CIoU Loss系列、Focal Loss
  • 分割任务:Dice Loss、Tversky Loss
  • 生成任务:对抗损失(GAN、WGAN)、感知损失、重建损失

关键优化技巧

  • 损失平衡:归一化到相似量级、动态权重调整
  • 数值稳定性:LogSumExp技巧、添加小常数防止除零
  • 梯度优化:梯度裁剪、损失缩放、监控梯度范数
  • 任务特定选择:根据数据特点选择合适损失
  • 组合使用:多个损失互补(如CE+Dice、L1+Perceptual)

4. 超参数调优

4.1 搜索策略

  • 网格搜索:遍历所有参数组合,计算量大但全面
  • 随机搜索:随机采样参数,效率更高
  • 贝叶斯优化:基于先验知识智能搜索,高效
  • 进化算法:遗传算法、粒子群优化
  • Hyperband:早期停止低性能配置

4.2 关键超参数

  • 学习率:最重要参数,通常从1e-5到1e-1
  • 批次大小:16、32、64、128等2的幂次
  • Dropout率:0.2-0.5之间
  • 权重衰减:L2正则系数,通常1e-5到1e-3
  • 优化器参数:Adam的β1、β2
  • 网络结构参数:层数、神经元数

4.3 调优技巧

  • 由粗到细:先大范围搜索,再精细调整
  • 日志记录:记录所有实验配置和结果
  • 早期验证:训练少量epoch快速淘汰差配置
  • 经验先验:参考论文和社区最佳实践

5. 训练技巧

5.1 迁移学习:预训练模型微调

  • 预训练模型:使用ImageNet、BERT等大规模预训练权重
  • 微调策略
    • 冻结前N层,只训练后面层
    • 逐步解冻:先训练顶层,逐步解冻底层
    • 差异化学习率:底层小学习率,顶层大学习率
  • 领域适应:处理源域和目标域差异

5.2 梯度裁剪:防止梯度爆炸

  • 按值裁剪:限制梯度在[-threshold, threshold]范围
  • 按范数裁剪:限制梯度L2范数不超过阈值
  • 用途:防止RNN、GAN等训练中的梯度爆炸

5.3 早停(Early Stopping):防止过拟合

  • 监控指标:验证集损失或准确率
  • 耐心参数:N个epoch无改善则停止
  • 保存最佳模型:避免过拟合后期的性能下降
  • 恢复策略:加载最佳checkpoint继续训练

5.4 混合精度训练:加速训练

  • FP16+FP32:大部分计算用FP16,关键部分用FP32
  • 优势:2-3倍加速,减少显存占用
  • 损失缩放:防止FP16下溢
  • 框架支持:PyTorch AMP、TensorFlow mixed_precision

5.5 其他技巧

  • 数据预取:异步加载数据,避免GPU等待
  • 标签平滑:Label Smoothing减少过拟合
  • 渐进式训练:从低分辨率逐步增加到高分辨率
  • 模型集成:多个模型投票/平均提升性能

6. 计算资源优化

6.1 分布式训练:数据并行、模型并行

  • 数据并行
    • 同一模型复制到多GPU,每个处理不同数据
    • 梯度同步:AllReduce聚合梯度
    • 适合大批次训练
  • 模型并行
    • 模型切分到多GPU,适合超大模型
    • Pipeline并行:按层切分
    • Tensor并行:按张量维度切分
  • 混合并行:数据+模型并行结合
  • 框架:Horovod、PyTorch DDP、DeepSpeed、Megatron

6.2 GPU利用率优化

  • Profiling分析:找出瓶颈(计算、内存、IO)
  • 算子融合:减少kernel launch开销
  • 批次大小调整:充分利用GPU算力
  • 异步执行:CPU和GPU操作重叠
  • TensorCore利用:使用混合精度加速

6.3 内存管理:梯度累积、检查点

  • 梯度累积:累积多个小批次梯度再更新,模拟大批次
  • 梯度检查点:重计算而非存储中间激活值
  • 显存优化
    • In-place操作减少临时变量
    • 及时释放不需要的张量
    • 使用更小的数据类型
  • CPU offload:部分数据/参数存储在CPU
  • ZeRO优化:分片优化器状态、梯度、参数

6.4 其他资源优化

  • 数据加载:多进程DataLoader,增加num_workers
  • 缓存机制:预处理结果缓存到磁盘/内存
  • 模型编译:TorchScript、ONNX、TensorRT优化推理
  • 弹性训练:动态调整资源,容错恢复

实施建议

这些优化方法通常需要组合使用,根据具体任务、数据规模和资源情况选择合适的策略。

优化流程建议

  1. 确保基础正确

    • 先确保数据质量和模型基础正确
    • 验证数据加载、标注、预处理流程无误
  2. 逐步优化

    • 逐步引入优化技术,每次改变一个变量
    • 避免同时修改多个配置,难以定位效果来源
  3. 充分实验验证

    • 记录对比结果,建立实验管理系统
    • 使用相同的评估指标和数据集
  4. 监控训练过程

    • 关注训练曲线,及时发现问题
    • 观察损失下降、准确率变化、过拟合迹象
  5. 持续迭代

    • 根据验证集表现调整策略
    • 结合业务需求平衡性能和效率

常见问题排查

  • 损失不下降:检查学习率、数据质量、模型结构
  • 过拟合:增加正则化、数据增强、减少模型复杂度
  • 欠拟合:增加模型容量、减少正则化、延长训练
  • 训练不稳定:调整学习率、使用梯度裁剪、检查数据
  • 显存不足:减小批次、使用梯度累积、混合精度训练
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐