神经网络训练数据的一点理解

神经网络是通过梯度方反向传播来更新参数,所需的数据集一般分为训练数据和测试数据,其中训练的数据会根据有监督和无监督学习进行分类。

有监督学习

对于有监督学习,一般是给网络一个输入,然后再定一个网络应该的输出的数据,称为标签(label)。
然后输入数据X,会得到一组输出Y,将这个Y与X对应的Y_label进行对比,比较二者之间的差值(一般用mse或者交叉熵来刻画),然后通过这个差值去调整网络中的W和b参数(梯度反向传播调整参数),使得下一次输出的Y更加接近Y_label。

神经网络训练数据的一点理解_第1张图片

  • 一般来说,调整神经网络参数W和b是需要大量的数据的,所以我们需要训练数据,对于有监督学习,训练数据会分为数据(X)和标签(Y_label)两个部分,在训练完之后,我们需要查看网络训练的好不好,也就是查看网络在训练集上的准确率。
  • 另外,在训练集上的准确率高不能反映网络训练的好坏,需要在测试集上进行验证,即需要拿网络从来没有用过的数据去测试它,然后网络在测试集上的准确率。只有测试准确率高,才能说明网络训练的好。
  • 另外,我们在进行网络设计的时候,网络的层数,卷积核的大小等等参数刚开始也无从下手,不知道怎么去确定,这些参数叫做超参数。一般我们会用数据进行训练来不断尝试这些超参数的好坏,这里用到的数据叫验证集(注意,在验证超参数的好坏的时候,不能用训练集的数据,因为训练集已经参与了网络参数的调整过程),所以,一般流程如下:在用训练集训练完之后,用验证集去判断哪个超参数最好,选择最好的那组超参数,然后用测试集去测试网络训练的准确度。
  • 验证集一般从从训练集里面划分,例如把训练集划分为10,其中随机9分作为训练集,1份作为验证集,接着任选其余9份作为训练集,1份作为验证集,如此循环,反复去验证某一组超参数最优。

过拟合及抑制方法

过拟合

  当网络学习能力比较强,训练集的数据少,训练的次数多的时候,可能会导致网络学习的过于细枝末节,造成了网络在训练集上准确率很高,在测试集上准确率急剧下降。 这个现象就是过拟合。
  例如,现在我们只想对是非人类进行判断,一个简单的是非问题。当训练集只有5张图片且5个人全是带着帽子或者眼镜。网络通过反复学习后,可能出现的情况就是,它认为必须带帽子或者眼镜的人才被认为是人,换句话说,网络的泛化能力就不行了,它没有学到人类的通用特征,而是学到了一些更细枝末节的东西,然后它以这些细节去评判是非人类,这样在测试时准确率当然会急剧下降。
神经网络训练数据的一点理解_第2张图片
神经网络训练数据的一点理解_第3张图片
如图所示,当训练集和测试集精度比较接近时,认为网络训练没有问题,它没有发生过拟合。
当测试精度与训练精度差别很大时,认为网络发生过拟合。

抑制方法

  1. Dropout
  2. Batch Normalization
    Dropout:神经元之间的严重依赖关系会导致网络的泛化能力不强,这会造成过拟合。dropout在训练的正向传播时会以一定的概率关闭神经元(神经元一旦被关闭,则其不可能被激活,输出一直为0),从而来增强神经元的独立工作能力,来增强神经网络的泛化能力。然后这些神经元在测试的时候又全部打开。
    Batch Normalization:对输出的特征图,对数据进行均值变为0,方差变为1的归一化。可以极大的提升训练速度,加快收敛过程。

你可能感兴趣的:(深度学习)