数据太少而线性回归的自由度太多

数据挖掘 线性回归 梯度下降
2021-09-20 19:20:01

为了识别手写数字,我有一个完全连接的网络,仅包含 2 层:输入层(图像的所有像素)和输出层(0 或 1)。我使用最简单的线性回归进行训练(使用梯度下降)并获得了出色的结果。

然而,我刚刚意识到我的模型比数据点有更多的自由度。假设数据都是要识别的n个像素图片,那么自由度的个数就是n n+1。我使用 n=50,但我只使用了不到 20 个数据点(20 个训练图片)。从线性拟合/回归的角度来看,数据点的数量至少应该超过自由度的数量。但是现在在我的模型中发生了相反的情况,应该找不到解决方案。发生了什么

1个回答

好问题。解决方案在于了解权重如何影响模型的预测。我在这里掩盖了一堆问题,但大局才是最重要的。

理论

  1. 当你创建一个模型时,所有的权重都是伪随机初始化的。这解决了您没有足够的自由度来解决线性回归的问题。我们已经对权重进行了插值,我们的模型将在训练时只更新它需要的权重。
  2. 此外,您的模型可能会发现您的大部分权重都收敛到零。如果您使用的是 sklearn 的load_digits()功能,我记得每张图像中大约有一半只是白色像素。很可能有很大比例的像素在所有图像中都无关紧要(因此可能被分配为零的权重)。因此,您如何相信模型的预测的问题得到了解答,我们可以将关于自由度的陈述修改为:发现的统计趋势的数量不可能比数据样本的数量多很难衡量“发现的统计趋势的数量”,但随之而来的是有一个有限的数量,并且它们小于样本数量减 1。

例子

对于由具有权重的输入层和具有两个神经元的输出层组成的全连接浅层神经网络,每个输出神经元的激活函数的输入将类似于以下内容:

f(B1+i=1iWiIiA)=P

在哪里

  1. P是类概率,
  2. B1是输出层的偏差,
  3. Wi是特定神经元连接的权重,
  4. IiA是激活后连接神经元的输出(在本例中为像素值),并且
  5. f()是输出层神经元的激活函数。

如果我们没有初始化Wi对于某事/任何事,我们将无法求解方程(变量多于样本)。然而,通过随机初始化它们,方程立即变得可解,我们可以使用随机梯度下降或不同的算法来优化我们的权重。我希望这表明伪随机初始化Wi解决了自由度的数学问题。