从0到1:神经网络实现图像识别(四)

图灵汇官网

过拟合与正则化

在训练数据集上,如果训练次数不够,模型未能充分学习到训练样本的普遍特征,这种情况被称为欠拟合。相反,对于拥有大量参数的复杂模型,经过多次训练后,可能会将训练数据中的噪声也纳入模型参数中。这会导致模型在训练数据上的表现很好,但在未知数据上的预测效果较差,这种情况被称为过拟合。

“四个参数可以拟合出大象。”这句话出自冯·诺伊曼的名言,恩瑞克·费米曾引用它来提醒戴森反思研究工作的物理意义和数学自洽。2010年,一篇发表在《物理学期刊》上的文章展示了如何用四个复参数来描绘大象。

过拟合的问题在于,模型通过大量的参数捕捉到了训练数据中的细节特征,包括噪声。这种“偏见”使得模型在面对新数据时,泛化能力较差。为了解决这个问题,可以通过增加罚项来控制模型复杂度,从而减少过拟合的风险。

罚项通常被称为L2正则化项,其中λ是根据模型复杂度设定的罚项系数,0.5是一个常数,用于简化计算。||w||表示权值参数w的L2范数。

隐藏层(Hidden Layer)

感知机模型在处理线性可分样本时表现出色,但对于非线性可分问题则无能为力。通过引入隐藏层,可以将模型去线性化,使其能够处理非线性可分样本的分类识别问题。

隐藏层中的节点代表从输入特征中抽取的更高层次的特征。这些节点通过激活函数产生输出。这里我们采用ReLU(Rectified Linear Units)作为激活函数,因为它具有单侧抑制、宽阔的激活边界和稀疏的激活性等特点。

随着网络深度的增加,ReLU的作用愈加显著,有助于提取重要的特征。尽管ReLU函数在某些点不可导,但其反向传播的梯度仍然可以计算。

算法

为了缓解过拟合问题,我们在总损失中加入了正则化项。在反向传播过程中,权值矩阵W的梯度也会相应增加正则化部分。

引入隐藏层后,新增加的隐藏层包含M个节点,以及对应的权值矩阵W1和偏置b1。隐藏层到输出层的参数仍保留,只是名称变为了W2和b2。

隐藏层到输出层的参数梯度计算方法不变,以隐藏层输出的M个元素数组h作为输入。

对W1和b1的梯度计算同样适用。通过梯度下降法不断更新参数,最终可以达到极小化损失函数的目的。

实现

你可以在GitHub上找到上述算法的Python实现。在这个实现中,我们不借助任何计算框架,在原有的全连接神经网络基础上增加了正则化处理,并引入了一个隐藏层,使模型能够处理非线性可分特征,进一步提高了识别效果。

通过设置单隐藏层500个节点,模型在验证集上的识别正确率稳定在98%以上。随着隐藏层的增加,神经网络能够在复杂的输入样本上提取更多特征,进而提升识别效果。

然而,增加隐藏层也会带来新的挑战,如训练效率降低和过拟合风险增加。接下来,我们将引入卷积核(Convolutional Kernel),使模型变成卷积神经网络(CNN),以应对这些挑战。

参考文献

  1. 斯坦福大学课程CS231n: The Stanford CS class CS231n
  2. Jürgen Mayer, Khaled Khairy, Jonathon Howard. Drawing an elephant with four complex parameters. American Journal of Physics, 2010.

以上是对具有隐藏层的全连接神经网络的介绍,希望对你有所帮助。

本文来源: 图灵汇 文章作者: robotinside