深度学习(四)------------过拟合和欠拟合、梯度消失与梯度爆炸

训练误差(training error)和泛化误差(generalization error)

训练误差(training error):在训练数据集上表现出的误差,度量了模型对训练集拟合的情况。

泛化误差(generalization error):在任意一个测试数据样本上表现出的误差的期望值,度量了模型的泛化能力。

过拟合(overfitting)和欠拟合(underfitting)

模型的训练误差远小于它在测试数据集上的误差,我们称该现象为过拟合(overfitting)。其实就是所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越,导致在验证数据集以及测试数据集中表现不佳。

模型无法得到较低的训练误差,导致训练出来的模型不能很好地匹配,表现得很差,我们将这一现象称作欠拟合(underfitting)。

避免过拟合的方法:

针对过拟合问题,通常会考虑两种途径来解决:

减少特征的数量:

-人工的选择保留哪些特征;

-模型选择算法

正则化:

-保留所有的特征,但是降低参数的量/值;

-正则化的好处是当特征很多时,每一个特征都会对预测y贡献一份合适的力量;

 

梯度消失与梯度爆炸

层数比较多的神经网络模型在训练的时候会出现梯度消失(gradient vanishing problem)和梯度爆炸(gradient exploding problem)问题。梯度消失问题和梯度爆炸问题一般会随着网络层数的增加变得越来越明显。

例如,对于含有3个隐藏层的神经网络,梯度消失问题发生时,靠近输出层的hidden layer 3的权值更新相对正常,但是靠近输入层的hidden layer1的权值更新会变得很慢,导致靠近输入层的隐藏层权值几乎不变,扔接近于初始化的权值。这就导致hidden layer 1 相当于只是一个映射层,对所有的输入做了一个函数映射,这时此深度神经网络的学习就等价于只有后几层的隐藏层网络在学习。梯度爆炸的情况是:当初始的权值过大,靠近输入层的hidden layer 1的权值变化比靠近输出层的hidden layer 3的权值变化更快,就会引起梯度爆炸的问题。

随机初始化模型参数

在神经网络中,通常需要随机初始化模型参数。原因如下:

为了方便解释,假设输出层只保留一个输出单元o1o1(删去o2o2和o3o3以及指向它们的箭头),且隐藏层使用相同的激活函数。如果将每个隐藏单元的参数都初始化为相等的值,那么在正向传播时每个隐藏单元将根据相同的输入计算出相同的值,并传递至输出层。在反向传播中,每个隐藏单元的参数梯度值相等。因此,这些参数在使用基于梯度的优化算法迭代后值依然相等。之后的迭代也是如此。在这种情况下,无论隐藏单元有多少,隐藏层本质上只有1个隐藏单元在发挥作用。因此,正如在前面的实验中所做的那样,我们通常将神经网络的模型参数,特别是权重参数,进行随机初始化。

你可能感兴趣的:(机器学习)