神经网络的容量

在设计神经网络时,当训练出的模型表现出欠拟合时,我们通常会尝试增加神经网络的层数或者某些层的神经元数目。这也被成为增加神经网络的容量(Capacity)。一直以来,我都认为这个容量指的是神经网络的大小,也就是神经元的个数。然而在读Deep Learning Book的第五章时,发现以前的理解是有问题的。这个容量其实应该是指一个神经网络的假设空间

假设空间

假设空间(hypothesis space) 是指一个机器学习算法可以生成的所有函数的集合。这个函数集合就代表了一个机器学习算法的拟合能力。比如,一个线性回归算法的数学表达式如下:

$$ y=\boldsymbol{x}\cdot\boldsymbol{W} $$

通过选择不同的$\boldsymbol{W}$,该算法可以模拟所有$\boldsymbol{x}$的线性组合,因此可以说线性回归算法的假设空间就是$\boldsymbol{x}$的所有线性函数。机器学习算法的目标就是在算法的假设空间中,寻找最符合待解决问题的函数。假如能够解决问题的函数不在算法的假设空间,算法无论如何也没办法找到解决方案。比如线性回归算法就不可能拟合一个一组符合$\sin(\boldsymbol{x})$函数的数据。

因此,一个算法的假设空间,决定了算法的能力边界。

神经网络容量与欠拟合

当神经网络模型的测试结果表现出欠拟合时,用假设空间来解释,可以理解为更符合训练数据的函数在当前神经网络的假设空间之外,所以神经网络只能收敛在一个当前假设空间中,最接近目标函数的一个解。

因此,要想解决欠拟合问题,就要扩大神经网络的假设空间。增加神经网络的层数,或者扩大某些层的神经元个数,都可以达到扩大假设空间的目的[1]。除此之外,引入非线性函数(比如SVM中的核函数),也是扩大假设空间的一种方式。

正规化(regularization)与过拟合

一个神经网络的假设空间越大,能够满足训练数据的函数也就越多。那么在所有满足训练数据的函数中,我们要选择哪一个作为问题的解呢?

我们可以通过正规化的方式,在多个候选解中选择一个符合我们需要的。换句话说,正规化让我们对假设空间中的函数有了倾向性。比如,对于线性回归,我们可以将模型的评判标准改为最小均方误差(MSE)和一个权值衰减部分的和:

$$ \mathit{J}(\boldsymbol{W}) = \mathrm{MSE}_{train} + \lambda \boldsymbol{W}^T \boldsymbol{W} $$

这个公式表明,对于同样能够满足训练数据的函数,我们更加倾向平方$\mathit{L}_2$范数更小的那一组权值。其中,$\lambda$表示我们倾向于更小权重值的意愿有多强烈。为什么选择平方$\mathit{L}_2$范数更小的权值呢?因为平方$\mathit{L}_2$范数更小,表明$\boldsymbol{W}$中的每一个元素都比较小,甚至接近于0。这意味着得到的函数曲线更加平滑,起伏更小。而平滑的曲线正好是我们在遇到曲线过拟合时希望得到的结果。这种给损失函数增加一个表示倾向性的部分的做法,叫做正规化(Regularization),是解决过拟合问题的重要工具。

总结

假设空间的概念让神经网络有了更容易理解的解释:神经网络算法就是要在其假设空间中,找到最适合训练数据的一个函数。如果最终没有找到合适的函数,要么是假设空间不够大,要么是寻找的方式不够好。而理论上已经证明,神经网络只要有足够多的神经元,就可以拟合任意曲线,这是神经网络算法能够成为通用解决方案的理论基础。剩下的,就是设计更好的寻找方式,能够从假设空间中找到最合适的那个函数。


  1. 带有一个隐层的神经网络,就可以实现拟合任意函数,一个不严谨但直观的证明参考这里