首页 > 代码库 > 神经网络的容量
神经网络的容量
https://pure-earth-7284.herokuapp.com/2016/09/07/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%E7%9A%84%E5%AE%B9%E9%87%8F/
在设计神经网络时,当训练出的模型表现出欠拟合时,我们通常会尝试增加神经网络的层数或者某些层的神经元数目。这也被成为增加神经网络的容量(Capacity)。一直以来,我都认为这个容量指的是神经网络的大小,也就是神经元的个数。然而在读Deep Learning Book的第五章时,发现以前的理解是有问题的。这个容量其实应该是指一个神经网络的假设空间。
假设空间
假设空间(hypothesis space) 是指一个机器学习算法可以生成的所有函数的集合。这个函数集合就代表了一个机器学习算法的拟合能力。比如,一个线性回归算法的数学表达式如下:
通过选择不同的WW,该算法可以模拟所有xx的线性组合,因此可以说线性回归算法的假设空间就是xx的所有线性函数。机器学习算法的目标就是在算法的假设空间中,寻找最符合待解决问题的函数。假如能够解决问题的函数不在算法的假设空间,算法无论如何也没办法找到解决方案。比如线性回归算法就不可能拟合一个一组符合sin(x)sin?(x)函数的数据。
因此,一个算法的假设空间,决定了算法的能力边界。
神经网络容量与欠拟合
当神经网络模型的测试结果表现出欠拟合时,用假设空间来解释,可以理解为更符合训练数据的函数在当前神经网络的假设空间之外,所以神经网络只能收敛在一个当前假设空间中,最接近目标函数的一个解。
因此,要想解决欠拟合问题,就要扩大神经网络的假设空间。增加神经网络的层数,或者扩大某些层的神经元个数,都可以达到扩大假设空间的目的[1]。除此之外,引入非线性函数(比如SVM中的核函数),也是扩大假设空间的一种方式。
正规化(regularization)与过拟合
一个神经网络的假设空间越大,能够满足训练数据的函数也就越多。那么在所有满足训练数据的函数中,我们要选择哪一个作为问题的解呢?
我们可以通过正规化的方式,在多个候选解中选择一个符合我们需要的。换句话说,正规化让我们对假设空间中的函数有了倾向性。比如,对于线性回归,我们可以将模型的评判标准改为最小均方误差(MSE)和一个权值衰减部分的和:
这个公式表明,对于同样能够满足训练数据的函数,我们更加倾向平方L2L2范数更小的那一组权值。其中,λλ表示我们倾向于更小权重值的意愿有多强烈。为什么选择平方L2L2范数更小的权值呢?因为平方L2L2范数更小,表明WW中的每一个元素都比较小,甚至接近于0。这意味着得到的函数曲线更加平滑,起伏更小。而平滑的曲线正好是我们在遇到曲线过拟合时希望得到的结果。这种给损失函数增加一个表示倾向性的部分的做法,叫做正规化(Regularization),是解决过拟合问题的重要工具。
总结
假设空间的概念让神经网络有了更容易理解的解释:神经网络算法就是要在其假设空间中,找到最适合训练数据的一个函数。如果最终没有找到合适的函数,要么是假设空间不够大,要么是寻找的方式不够好。而理论上已经证明,神经网络只要有足够多的神经元,就可以拟合任意曲线,这是神经网络算法能够成为通用解决方案的理论基础。剩下的,就是设计更好的寻找方式,能够从假设空间中找到最合适的那个函数。
神经网络的容量