38 参数(Parameters)与超参数(Hyperparameters)
38 参数(Parameters)与超参数(Hyperparameters)
一、核心概念区分
1. 参数(Parameters)
- 定义:模型在训练过程中自动学习的变量。
典型例子:
- 权重矩阵:$W^{[1]}, W^{[2]}, W^{[3]}, \dots$
- 偏置向量:$b^{[1]}, b^{[2]}, b^{[3]}, \dots$
特点:
- 通过反向传播(Backpropagation)和梯度下降(Gradient Descent)等优化算法自动更新。
- 最终目标是使损失函数 $J(W, b)$ 最小化。
✅ 关键点:参数是“学出来的”,不是人为设定的。
2. 超参数(Hyperparameters)
- 定义:在训练开始前由开发者手动设定的配置项,用于控制模型结构或学习过程。
典型超参数包括:
- 学习率(Learning rate):$\alpha$
- 网络层数(Number of hidden layers):$L$
- 每层神经元数量(Number of hidden units):如 $n^{[1]}, n^{[2]}, \dots$
- 激活函数(Activation function):ReLU、tanh、sigmoid 等
- 迭代次数(Number of iterations / epochs)
- Mini-batch 大小(Batch size)
- 正则化参数(如 L2 正则化系数 $\lambda$)
- 动量参数(Momentum term $\beta$)
- 作用:超参数决定了参数如何被学习,即控制优化过程和模型架构。
✅ 关键点:超参数是“设出来的”,直接影响最终学到的参数 $W, b$。
二、为什么超参数如此重要?
深度学习是一个高度经验性(empirical) 的过程:
- 很难在训练前准确预知哪组超参数最优。
- 不同任务(如计算机视觉 vs. 自然语言处理)对超参数的敏感度不同。
- 即使同一任务,随着数据、硬件(CPU/GPU)、框架更新,最优超参数也可能变化。
实践建议:
- 不要依赖直觉:即使是专家,在新任务上也需尝试多种设置。
- 系统化调参:后续课程会介绍网格搜索(Grid Search)、随机搜索(Random Search)、贝叶斯优化等方法。
- 定期复查:长期项目中,建议每隔几个月重新验证超参数是否仍最优。
三、学习率 $\alpha$ 的典型行为示例
吴恩达以学习率为例说明超参数的影响:
| 学习率 $\alpha$ | 损失函数 $J$ 行为 | 说明 |
|---|---|---|
| 过小(如 0.001) | 缓慢下降 | 收敛太慢,效率低 |
| 合适(如 0.01) | 快速稳定下降 | 理想情况 |
| 过大(如 0.1) | 震荡甚至发散 | 梯度更新步长太大,跳过最优解 |
📌 经验法则:从较小值开始(如 0.001),逐步尝试 0.01、0.1 等,观察验证集损失。
四、术语使用规范
- 在早期机器学习中,人们常把学习率 $\alpha$ 也称为“参数”。
但在深度学习中,为避免混淆,应严格区分:
- 参数(Parameters) :$W, b$ —— 模型内部可学习变量。
- 超参数(Hyperparameters) :$\alpha, L, n^{[l]}, \text{activation}, \dots$ —— 控制学习过程的外部设定。
✅ 吴恩达强调:保持术语一致性有助于清晰沟通和系统设计。
五、总结:参数 vs 超参数对比表
| 项目 | 参数(Parameters) | 超参数(Hyperparameters) |
|---|---|---|
| 是否学习得到 | 是(通过优化算法) | 否(人工设定) |
| 示例 | $W^{[l]}, b^{[l]}$ | $\alpha, L, n^{[l]}, \text{激活函数}$ |
| 更新方式 | 反向传播 + 梯度下降 | 手动调整或自动搜索 |
| 对模型影响 | 决定模型输出 | 决定模型结构与学习效率 |
| 数量级 | 成千上万甚至更多 | 通常几十个以内 |
| 调优频率 | 每次训练自动更新 | 每次实验前设定,需反复尝试 |
六、学习建议
- 动手实践:在编程练习中,尝试修改不同超参数,观察训练曲线变化。
- 记录实验:建立日志,记录每组超参数对应的验证集性能。
- 使用验证集:永远用交叉验证集(或独立验证集) 评估超参数效果,避免过拟合训练集。
- 保持耐心:深度学习调参是“试错+经验积累”的过程,没有银弹。
💡 最后提醒:正如吴恩达所说——
“Applied deep learning is a very empirical process. ”
(应用深度学习是一个高度经验性的过程。)
接受这一点,才能更高效地迭代和进步。
本文由作者按照 CC BY 4.0 进行授权