1. 由于很多超参数是在实数范围内取值,因此现实中常用做法是对每个超参数选定一个范围和变化步长。如在[0,1)范围内以 0.2为步长。

      这样选出的超参数可能不是最佳的,但是这是在计算开销和性能之间取折中的结果。

    2. 当模型选择完成后,学习算法和超参数配置已经选定,此时应该用数据集 重新训练模型。

      这个模型在训练过程中使用了 七、超参数调节 - 图1 个样本,这才是最终提交的模型。

    1. 超参数搜索有三种常见的策略:

      • 手动搜索:手动选择超参数。
      • 网格搜索:当超参数的数据相对较少时,这个方法很实用。
      • 随机搜索:通常推荐这种方式。

    7.1.1 手动搜索

    1. 手动选择超参数需要了解超参数做了些什么,以及机器学习模型如何才能取得良好的泛化。

    2. 手动搜索超参数的任务是:在给定运行时间和内存预算范围的条件下,最小化泛化误差。

    3. 手动调整超参数时不要忘记最终目标:提升测试集性能。

      • 加入正则化只是实现这个目标的一种方法。

      • 如果训练误差很低,也可以通过收集更多的训练数据来减少泛化误差。

        如果训练误差太大,则收集更多的训练数据就没有意义。

      • 实践中的一种暴力方法是:不断提高模型容量和训练集的大小。

        这种方法增加了计算代价,只有在拥有充足的计算资源时才可行

    7.1.2 网格搜索

    1. 如何确定搜索集合的范围?

      • 如果超参数是数值,则搜索集合的最小、最大元素可以基于先前相似实验的经验保守地挑选出来。
      • 如果超参数是离散的,则直接使用离散值。
    2. 通常重复进行网格搜索时,效果会更好。假设在集合 {-1,0,1}上网格搜索超参数 :

      • 如果找到的最佳值是 1,那么说明低估了 七、超参数调节 - 图2 的取值范围。此时重新在 上搜索。
      • 如果找到的最佳值是 0,那么可以细化搜索范围以改进估计。此时重新在 {-0.1,0,0.1} 上搜索。
    3. 网格搜索的一个明显问题时:计算代价随着超参数数量呈指数级增长。

      如果有 个超参数,每个最多取 七、超参数调节 - 图3 个值,那么所需的试验数将是 。虽然可以并行试验,但是指数级增长的计算代价仍然不可行。

    7.1.3 随机搜索

    1. 随机搜索是一种可以替代网格搜索的方法,它编程简单、使用方便、能更快收敛到超参数的良好取值。

      • 首先为每个超参数定义一个边缘分布,如伯努利分布(对应着二元超参数)或者对数尺度上的均匀分布(对应着正实值超参数)。
      • 然后假设超参数之间相互独立,从各分布中抽样出一组超参数。
      • 使用这组超参数训练模型。
      • 经过多次抽样 -> 训练过程,挑选验证集误差最小的超参数作为最好的超参数。
    2. 随机搜索的优点:

      • 不需要离散化超参数的值,也不需要限定超参数的取值范围。这允许我们在一个更大的集合上进行搜索。
      • 当某些超参数对于性能没有显著影响时,随机搜索相比于网格搜索指数级地高效,它能更快的减小验证集误差。
    3. 随机搜索比网格搜索更快的找到良好超参数的原因是:没有浪费的实验。

      • 在网格搜索中,两次实验之间只会改变一个超参数 (假设为 七、超参数调节 - 图4 )的值,而其他超参数的值保持不变。

        如果这个超参数 的值对于验证集误差没有明显区别,那么网格搜索相当于进行了两个重复的实验。

      • 在随机搜索中,两次实验之间,所有的超参数值都不会相等,因为每个超参数的值都是从它们的分布函数中随机采样而来。因此不大可能会出现两个重复的实验。

      • 如果 七、超参数调节 - 图5 超参数与泛化误差无关,那么不同的 值:

        • 在网格搜索中,不同 七、超参数调节 - 图6 值、相同的其他超参数值,会导致大量的重复实验。
        • 在随机搜索中,其他超参数值每次也都不同,因此不大可能出现两个重复的实验(除非所有的超参数都与泛化误差无关)。

    7.2 调整原则

    1. 通常先对超参数进行粗调,然后在粗调中表现良好的超参数区域进行精调。

      • 对于学习率,假设其取值范围为0.000001~1

        如果进行均匀取值,取10个,那么有 90% 的随机值都位于区间 [0.1,1]。则 之间没有足够的探索。这种做法明显不合理。

        此时需要使用对数缩放,在对数轴上均匀随机取点。

      • 对于指数加权移动平均的超参数 。假设其取值范围为 0.9~0.9999

        由于 七、超参数调节 - 图7 刻画了结果使用过去多少个周期的数据来加权平均。因此如果进行均匀取值,则:

        • 0.9~0.9005 之间取值时, 七、超参数调节 - 图8 变化不大。
        • 0.9990~0.9995 之间取值时, 七、超参数调节 - 图9 变化非常大。

        越接近 1,七、超参数调节 - 图10 对于它的变化越敏感。此时,需要对 使用对数缩放,在对数轴上均匀随机取点。

      • 如果选择了错误的缩放,如果取值的总量足够大,也可以得到不错的结果。

        尤其当配合了 策略时,最终还是会聚焦到合适的超参数范围上。

    2. 通常情况下,建议至少每隔几个月重新评估或者修改超参数。因为随着时间的变化,真实场景的数据会逐渐发生改变:

      • 可能是由于用户的行为、偏好发生了改变。
      • 可能是采样的方式发生了改变。
      • 也可能仅仅是由于数据中心更新了服务器。

      由于这些变化,原来设定的超参数可能不再适用。

    3. 有两种超参数调整策略: