在机器学习(包括深度学习)中,模型参数和超参数是两个重要的概念,区分它们对于理解和实践机器学习至关重要。


什么是超参数 (What are Hyperparameters)?

超参数是在开始学习过程之前设置值的参数,它们不是通过训练数据直接学习得到的。 换句话说,超参数是用来配置学习算法本身定义模型结构的参数。算法的性能往往对超参数的选择非常敏感。

与模型参数 (Model Parameters) 的区别:

一个简单的类比:


为什么超参数很重要?


如何选择超参数?

选择合适的超参数通常是一个经验性、迭代性的过程,没有固定的公式。常用的方法包括:

  1. 手动调整 (Manual Tuning / Trial and Error):

    • 基于经验、直觉或领域知识来手动设置超参数。
    • 运行实验,观察结果(通常在验证集上评估),然后调整超参数,重复此过程。
    • 这是最基本的方法,但可能非常耗时且不一定能找到最优组合。
  2. 网格搜索 (Grid Search):

    • 为每个你想要调整的超参数定义一个值的列表(离散的候选值)。
    • 算法会尝试这些列表中所有可能的超参数组合。
    • 例如,如果学习率有 [0.1, 0.01, 0.001],batch size 有 [32, 64],那么网格搜索会尝试 3×2=6 种组合。
    • 缺点:当超参数数量较多或每个超参数的候选值较多时,组合数量会呈指数级增长,计算成本非常高。
  3. 随机搜索 (Random Search):

    • 与网格搜索类似,也是为每个超参数定义一个值的范围或分布。
    • 但是,随机搜索不是尝试所有组合,而是在定义的空间中随机采样指定数量的超参数组合进行评估。
    • 研究表明,在许多情况下,随机搜索比网格搜索更有效率,因为它不会在不重要的超参数上浪费太多计算资源。
  4. 贝叶斯优化 (Bayesian Optimization):

    • 一种更高级的自动化超参数优化技术。
    • 它会构建一个关于超参数与模型性能之间关系的概率模型(代理模型,如高斯过程)。
    • 基于这个模型,它会智能地选择下一个最有希望的超参数组合进行评估,试图在探索(尝试新的、不确定的区域)和利用(在已知表现好的区域附近尝试)之间取得平衡。
    • 通常比网格搜索和随机搜索需要更少的评估次数就能找到较好的超参数。
  5. 基于梯度的优化 (Gradient-based Optimization):

    • 对于某些特定的超参数(如果可以对其求导),可以尝试使用基于梯度的方法进行优化。但这在实践中较少见,因为大多数超参数是离散的或难以直接求导。
  6. 进化算法 (Evolutionary Algorithms):

    • 模拟生物进化过程,如遗传算法,来搜索最优的超参数组合。

评估超参数组合:
无论使用哪种搜索方法,评估一个超参数组合的好坏通常是在验证集 (Validation Set) 上进行的,而不是在训练集或测试集上。