在训练数据集上,如果训练次数不够,模型未能充分学习到训练样本的普遍特征,这种情况被称为欠拟合。相反,对于拥有大量参数的复杂模型,经过多次训练后,可能会将训练数据中的噪声也纳入模型参数中。这会导致模型在训练数据上的表现很好,但在未知数据上的预测效果较差,这种情况被称为过拟合。
“四个参数可以拟合出大象。”这句话出自冯·诺伊曼的名言,恩瑞克·费米曾引用它来提醒戴森反思研究工作的物理意义和数学自洽。2010年,一篇发表在《物理学期刊》上的文章展示了如何用四个复参数来描绘大象。
过拟合的问题在于,模型通过大量的参数捕捉到了训练数据中的细节特征,包括噪声。这种“偏见”使得模型在面对新数据时,泛化能力较差。为了解决这个问题,可以通过增加罚项来控制模型复杂度,从而减少过拟合的风险。
罚项通常被称为L2正则化项,其中λ是根据模型复杂度设定的罚项系数,0.5是一个常数,用于简化计算。||w||表示权值参数w的L2范数。
感知机模型在处理线性可分样本时表现出色,但对于非线性可分问题则无能为力。通过引入隐藏层,可以将模型去线性化,使其能够处理非线性可分样本的分类识别问题。
隐藏层中的节点代表从输入特征中抽取的更高层次的特征。这些节点通过激活函数产生输出。这里我们采用ReLU(Rectified Linear Units)作为激活函数,因为它具有单侧抑制、宽阔的激活边界和稀疏的激活性等特点。
随着网络深度的增加,ReLU的作用愈加显著,有助于提取重要的特征。尽管ReLU函数在某些点不可导,但其反向传播的梯度仍然可以计算。
为了缓解过拟合问题,我们在总损失中加入了正则化项。在反向传播过程中,权值矩阵W的梯度也会相应增加正则化部分。
引入隐藏层后,新增加的隐藏层包含M个节点,以及对应的权值矩阵W1和偏置b1。隐藏层到输出层的参数仍保留,只是名称变为了W2和b2。
隐藏层到输出层的参数梯度计算方法不变,以隐藏层输出的M个元素数组h作为输入。
对W1和b1的梯度计算同样适用。通过梯度下降法不断更新参数,最终可以达到极小化损失函数的目的。
你可以在GitHub上找到上述算法的Python实现。在这个实现中,我们不借助任何计算框架,在原有的全连接神经网络基础上增加了正则化处理,并引入了一个隐藏层,使模型能够处理非线性可分特征,进一步提高了识别效果。
通过设置单隐藏层500个节点,模型在验证集上的识别正确率稳定在98%以上。随着隐藏层的增加,神经网络能够在复杂的输入样本上提取更多特征,进而提升识别效果。
然而,增加隐藏层也会带来新的挑战,如训练效率降低和过拟合风险增加。接下来,我们将引入卷积核(Convolutional Kernel),使模型变成卷积神经网络(CNN),以应对这些挑战。
以上是对具有隐藏层的全连接神经网络的介绍,希望对你有所帮助。