为了识别手写数字,我有一个完全连接的网络,仅包含 2 层:输入层(图像的所有像素)和输出层(0 或 1)。我使用最简单的线性回归进行训练(使用梯度下降)并获得了出色的结果。
然而,我刚刚意识到我的模型比数据点有更多的自由度。假设数据都是要识别的n个像素图片,那么自由度的个数就是n n+1。我使用 n=50,但我只使用了不到 20 个数据点(20 个训练图片)。从线性拟合/回归的角度来看,数据点的数量至少应该超过自由度的数量。但是现在在我的模型中发生了相反的情况,应该找不到解决方案。发生了什么
为了识别手写数字,我有一个完全连接的网络,仅包含 2 层:输入层(图像的所有像素)和输出层(0 或 1)。我使用最简单的线性回归进行训练(使用梯度下降)并获得了出色的结果。
然而,我刚刚意识到我的模型比数据点有更多的自由度。假设数据都是要识别的n个像素图片,那么自由度的个数就是n n+1。我使用 n=50,但我只使用了不到 20 个数据点(20 个训练图片)。从线性拟合/回归的角度来看,数据点的数量至少应该超过自由度的数量。但是现在在我的模型中发生了相反的情况,应该找不到解决方案。发生了什么
好问题。解决方案在于了解权重如何影响模型的预测。我在这里掩盖了一堆问题,但大局才是最重要的。
理论
load_digits()
功能,我记得每张图像中大约有一半只是白色像素。很可能有很大比例的像素在所有图像中都无关紧要(因此可能被分配为零的权重)。因此,您如何相信模型的预测的问题得到了解答,我们可以将关于自由度的陈述修改为:发现的统计趋势的数量不可能比数据样本的数量多。很难衡量“发现的统计趋势的数量”,但随之而来的是有一个有限的数量,并且它们小于样本数量减 1。例子
对于由具有权重的输入层和具有两个神经元的输出层组成的全连接浅层神经网络,每个输出神经元的激活函数的输入将类似于以下内容:
在哪里
如果我们没有初始化对于某事/任何事,我们将无法求解方程(变量多于样本)。然而,通过随机初始化它们,方程立即变得可解,我们可以使用随机梯度下降或不同的算法来优化我们的权重。我希望这表明伪随机初始化解决了自由度的数学问题。