美文网首页
Indicator of Generalization

Indicator of Generalization

作者: 单调不减 | 来源:发表于2019-12-27 15:49 被阅读0次

    机器学习中至关重要的问题就是如何衡量模型的泛化能力,泛化能力的强弱直接度量了算法是否学习到了对任务真正重要的特征。

    在深度学习中,防止过拟合更是重中之重,因为神经网络的学习能力非常强,我们需要对其作出一定的限制。上图右上角就是一例,在假设函数集中,有多个函数可以完美拟合样本点,那么哪个泛化性能更好呢?

    最直接的想法当然是把训练好的模型放在测试集上跑一跑,哪个精度高就说明哪个泛化性能好。但有没有只依赖于训练集的指标可以衡量模型的泛化性能呢?这样一来我们就能在训练过程中把模型的泛化性能考虑进去(比如通过加入正则项等方式)。

    Sensitivity 的定义如上。神经网络本质上就是一个函数 f,将输出 y=f(x) 的各个维度对输入 x 的各个维度做偏导并计算这些偏导的平方和开根号,就得到了 Sensitivity。一般来说,Sensitivity 越大,泛化性能越差

    这其实是很直觉的一个结果,因为若这些偏导数中有某些很大,这就意味着输入在某些维度上的微小改变也将对输出的某些维度造成较大影响,也就是说模型对数据扰动(至少是某些维度上的扰动)是敏感的,因此泛化性能较差。

    上面是一个实践结果。可以看到,Sensitivity 在训练样本附近较低,而在训练样本之间的空白区域则较高。这和我们的直觉是相符的。

    除了 Sensitivity 这个指标,我们还有另一个指标同样可以在某种程度上衡量模型对泛化性能:

    Sharpness 表示网络训练结束时停在的极小值点附近 loss 函数的陡峭程度。一般来说,Sharpness 越大,泛化性能越差。

    这是因为测试集和训练集的分布往往并不会完全一致,对应的损失函数的极小值点可能也并不相同,如图中虚线所示,当训练结束时到达的极小值点附近较平坦时,意味着即使测试集上的 loss 函数比训练集上的 loss 函数稍微偏离一些,训练集上的极小值点对应的测试集上的 loss 也不会太大。当训练结束时到达的极小值点附近较陡峭时则不然。

    至于 Sharpness 如何定义,合理即可。上图给出了两种 Sharpness 的定义。

    相关文章

      网友评论

          本文标题:Indicator of Generalization

          本文链接:https://www.haomeiwen.com/subject/mrfdoctx.html