机器学习笔记-第二周

发布于:2025-09-03 ⋅ 阅读:(19) ⋅ 点赞:(0)

模型调参

手动调参 (Manual Hyperparameter Tuning)

基线选择

  1. 从高质量工具包的默认参数开始。
  2. 参考相关论文里的超参数(尤其是特定数据集上的经验参数)。
  3. 这些参数可能不是最优的,但作为起点足够好。

调参过程

  1. 一次只调整一个超参数,避免无法判断贡献来源。
  2. 调整后重新训练模型,观察验证集指标(精度、损失)。
  3. 探索模型对不同超参数的敏感度:
    1. 调不好 → 模型效果差
    2. 调好了 → 进入一个“合理范围”
  4. 使用对超参数不敏感的优化器能减少调参难度,例如 Adam(较鲁棒) vs SGD(对学习率等较敏感)。

调参管理与复现

实验记录

  1. 记录训练日志、超参数配置和关键指标。
  2. 简单方法:txt 日志 + Excel 保存指标。
  3. 工具:TensorBoardWeights & Biases,支持可视化与实验对比。

复现实验的挑战

  1. 环境差异:硬件(不同 GPU)、库版本、Python 版本。
  2. 代码版本控制:需要记录每个版本和依赖库。
  3. 随机性:不同随机种子可能导致结果波动 → 说明模型稳定性不足。
    1. 解决方法:优化不稳定部分,或使用 模型集成(ensemble)

自动化调参(AutoML)

  1. AutoML 范围

    • 自动化数据清理、特征提取、模型选择。
  2. 核心方法

    • HPO(Hyperparameter Optimization):通用方法,通过搜索算法找到最优超参数集合。
    • NAS(Neural Architecture Search):专注于神经网络,自动设计网络结构。
  3. 发展趋势

    • AutoML 已成为当前的重要技术瓶颈和研究热点。
    • 越来越多的任务正在逐步转向使用自动化调参。

超参数优化

搜索空间(Search Space)

在调参前需要 定义搜索空间,即超参数可能的取值范围。

不同类型超参数的分布方式不同:

  • 离散型(categorical):如选择 backbone(ResNet、VGG、MobileNet)。
  • 连续型(uniform/log-uniform):如学习率 [1e-6, 1e-1],常用对数分布。
  • 整数型(categorical):如 batch size [8, 16, 32, 64, …]

搜索空间可能指数级膨胀,需要合理设计,避免浪费计算资源。

HPO 方法分类

1. 黑箱优化(Black-box Optimization)

把每一次训练当作“黑箱实验”,完整训练模型后评估结果。

  • 特点:每次尝试都完整执行 → 成本高但结果精确。
  • 常见方法:
    • Grid Search(网格搜索):遍历所有组合,能保证找到最好结果,但维度灾难严重。
    • Random Search(随机搜索):随机抽取超参数组合,效率高于网格搜索。
    • Bayesian Optimization(贝叶斯优化):基于已有试验结果建立代理模型,预测下一步最可能的好结果。
    • 遗传算法、模拟退火:启发式搜索方法。

2. 多保真优化(Multi-fidelity Optimization)

不必每次都完整训练模型,而是用近似方式加速搜索。

  • 方法:
    • 用子集数据训练(降低成本)。
    • 缩小模型规模(减少层数、通道数)。
    • 早停(bad config 提前停止)。
  • 常见方法:
    • Successive Halving(逐次减半):先随机采样大量参数组合,训练少量 epoch,淘汰一部分,再让剩下的训练更久,直到留下最佳组合。
    • Hyperband:在 Successive Halving 基础上改进,平衡“探索(n 多样性)”和“利用(m 更长训练)”,先广泛探索,再逐步深入。

常见策略对比

  1. Grid Search

    • 优点:保证覆盖所有可能组合 → 最优解必然在其中。
    • 缺点:维度灾难(组合数过大)。
  2. Random Search

    • 优点:效率高,能快速找到较优解。
    • 缺点:不保证找到全局最优。
    • 实践中常作为起点方法。
  3. Bayesian Optimization(BO)

    • 核心:使用代理模型(surrogate model) 近似目标函数。
    • 常用模型:高斯过程、随机森林。
    • 通过采集函数(Acquisition Function) 决定下一次尝试点(平衡探索与利用)。
    • 缺点:前期效果接近随机搜索,过程是 顺序的(sequential),并行化难度大。
  4. Successive Halving

    • 思路:用有限预算逐步筛选,资源集中在表现最好的参数组合上。
    • 优点:效率高,避免浪费在差的组合上。
  5. Hyperband

    • 执行多个 Successive Halving,每次调整探索/利用比例。
    • 优点:同时兼顾 广度探索深度利用

神经网络架构搜索(Neural Architecture Search, NAS)

NAS 基本概念

神经网络的超参数种类很多:

  • 拓扑结构(ResNet 风格、MobileNet 风格、层数)。
  • 层内参数(卷积核大小、通道数、隐藏单元数等)。

NAS 的目标:自动化设计神经网络,而不是依赖人工经验。

  • 如何定义搜索空间(哪些架构候选)。
  • 如何探索搜索空间(搜索策略)。
  • 如何评估性能(性能估计方法)。

NAS 方法

1. 基于强化学习 (RL) 的 NAS

  • 代表工作:Zoph & Le (2017)。
  • 使用一个 RNN 控制器生成网络架构。
  • 训练子模型 → 得到准确率作为奖励 → 更新控制器。
  • 缺点:计算量极大(~2000 GPU 天)。
  • 加速方法:性能预测、参数共享(EAS、ENAS)。

2. One-shot 方法

  • 在一个大模型里同时包含大量候选架构。
  • 不同子架构共享参数(一次训练覆盖多种结构)。
  • 只需比较候选架构的排序,而不必精确训练到收敛。
  • 流程:
    • 训练 one-shot 超网(supernet)。
    • 快速评估不同子网(比如跑少量 epoch)。
    • 选出表现最好的架构,再从头完整训练。

3. 可微分架构搜索 (Differentiable Architecture Search, DARTS)

  • 将“选择某个操作”放松为“加权和”,权重用 softmax 学习。
  • 通过梯度下降同时优化:
    • 网络参数。
    • 架构参数(softmax 权重)。
  • 最终选取权重最大的操作。
  • 优点:大幅降低搜索成本(从几千 GPU 天 → ~3 GPU 天)。

扩展方向:Scaling CNNs

  • CNN 可以通过三种方式扩展:
    1. 更深(更多层)。
    2. 更宽(更多通道)。
    3. 更大输入(更高分辨率)。
  • EfficientNet 提出复合缩放:
    • 同时缩放深度、宽度、分辨率,保证计算开销合理增长。
    • 使用公式: depth \propto \alpha^\phi, \quad width \propto \beta^\phi, \quad resolution \propto \gamma^\phi

网站公告

今日签到

点亮在社区的每一天
去签到