Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 第9章:深度学习的工程实践

第9章:深度学习的工程实践

超参数调优

1. 超参数概述

定义:超参数是模型训练前需手动设定的参数(如学习率、批量大小),与模型从数据中自动学习的参数(如权重)形成对比。
重要性:直接影响模型性能、训练速度和收敛性。
常见超参数:

  • 学习率(Learning Rate)
  • 批量大小(Batch Size)
  • 迭代次数(Epochs)
  • 网络层数与神经元数量
  • 正则化系数(如L2惩罚项λ)
  • 优化器参数(如Adam的β₁、β₂)

2. 超参数调优方法

2.1 网格搜索(Grid Search)

  • 原理:遍历所有预定义的超参数组合,选择验证集性能最优的组合。
  • 优缺点:
    ✅ 简单直观,适合低维参数空间。
    ❌ 计算成本高,维度灾难(参数增多时组合数指数增长)。

2.2 随机搜索(Random Search)

  • 原理:从参数分布中随机采样组合,优先探索重要参数。
  • 优势:比网格搜索更高效,尤其当某些参数对性能影响较小时。

2.3 贝叶斯优化(Bayesian Optimization)

  • 原理:基于历史评估结果构建概率模型(如高斯过程),指导下一步参数选择。
  • 适用场景:计算资源有限时,快速逼近最优解。

2.4 自动化调优工具

  • 主流工具:
    • Hyperopt(基于TPE算法)
    • Optuna(支持并行化)
    • Keras Tuner(集成于TensorFlow生态)

3. 关键超参数调优策略

3.1 学习率调优

  • 常用技巧:
    • 使用学习率预热(Learning Rate Warmup)
    • 动态调整(如余弦退火、周期性学习率)
    • 范围建议:1e-5 到 1e-1,可通过学习率扫描(LR Finder)确定初始值。

3.2 批量大小选择

  • 权衡因素:
    • 大批量:训练稳定,但可能陷入局部最优。
    • 小批量:噪声更多,可能帮助逃离局部最优,但需要更小的学习率。
  • 经验值:常用32/64/128,显存不足时使用梯度累积(Gradient Accumulation)。

3.3 正则化参数

  • L2正则化:λ通常从1e-4到1e-2开始尝试。
  • Dropout率:0.2~0.5适用于全连接层,卷积层可更低(如0.1)。

4. 调优流程示例

  1. 初步范围设定:通过文献或经验确定参数大致范围。
  2. 粗调:使用随机搜索缩小范围。
  3. 精调:在最优区域用贝叶斯优化或网格搜索微调。
  4. 验证:在独立测试集上评估最终模型。

5. 注意事项

  • 避免过拟合验证集:调优后需用全新测试集评估。
  • 资源分配:优先调优对性能影响大的参数(如学习率、网络深度)。
  • 自动化记录:使用工具(如MLflow、Weights & Biases)跟踪实验记录。

### 代码示例(可选)
```python
# 使用Optuna进行超参数优化示例
import optuna
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestClassifier

def objective(trial):
    n_estimators = trial.suggest_int('n_estimators', 50, 200)
    max_depth = trial.suggest_int('max_depth', 3, 10)
    model = RandomForestClassifier(n_estimators=n_estimators, max_depth=max_depth)
    return cross_val_score(model, X_train, y_train, cv=5).mean()

study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=100)
print("最佳参数:", study.best_params)
Last Updated:: 5/20/25, 7:33 PM