美文网首页
第九章 过拟合

第九章 过拟合

作者: 晨光523152 | 来源:发表于2020-02-26 16:46 被阅读0次

    9.1 模型的容量

    模型的容量或表达能力是指模型拟合复杂函数的能力。一种体现模型容量的指标为模型的假设空间大小,即模型可以表示的函数集的大小。

    假设空间越大越完备,从假设空间中搜索出逼近真实模型的函数也就越有可能;反正,如果假设空间非常受限,就很难从中找到逼近真实模型的函数。

    但是过大的假设空间会增加搜索难度和计算代价,在有限的计算资源的约束下,较大的假设空间并不一定能搜索出更好的函数模型。由于观测误差的存在,较大的假设空间中可能包含了大量表达能力过强的函数,能够将训练样本的观测误差也学习进来,从而伤害了模型的泛化能力。

    9.2 过拟合与欠拟合

    过拟合(训练集表现好,测试集表现不好)
    当模型的容量过大时,网络模型除了学习到训练集数据的模态之外,还把额外的观测误差也学习进来,导致学习的模型在训练集上面表现较好,但是在未见的样本上表现不佳,也就是泛化能力偏弱。

    欠拟合(训练集表现不好,测试集也表现不好)
    当模型的容量过小时,模型不能够很好的学习到训练集数据的模态,导致训练集上表现不佳,同时在未见的样本上表现也不佳。

    9.3 数据集划分

    为了挑选模型超参数和检测过拟合现象,一般需要将原来的训练集再次切分为新的训练集和验证集,所以数据集分为:训练集,验证集,测试集三个子集。

    训练集\mathbb{D}^{train}用于训练模型参数,测试集\mathbb{D}^{test}用于测试模型的泛化能力,测试集中的样本不能参与模型的训练,防止模型"记忆"住数据的特征,损害模型的泛化能力。

    训练集和测试集采样自相同的数据分布。

    当数据集偏小时,为了测试集能够比较准确地测试出模
    型的泛化能力,可以适当增加测试集的比例。

    验证集用于选择模型的超参数(称为模型选择),它的功能包括:


    验证集的功能

    9.7 数据增强

    数据增强(Data Augmentation)是指在维持样本标签不变的条件下,根据先验知识改变样本的特征,使得新产生的样本也符合或者近似符合数据的真实分布。

    对于图中的人物图片,旋转,缩放,平移,裁剪,改变视角,遮挡某局部区域都不会改变图片的类别标签,因此针对图片数据,可以有多种数据增强方式。

    Tensorflow 中提供了常用图片的处理函数,位于 tf.image 子模块中。

    tf.image.resize可以实现图片的缩放功能

    我们将数据增强一般实现在预处理函数 prepocess 中。

    9.7.1 旋转

    tf.image.rot90(x,k=1)
    

    逆时针将 x 选择 k 个90°。

    9.7.2 翻转

    图片的翻转分为沿水平轴翻转和竖直轴翻转。

    在 TensorFlow 中,可以通过 tf.image.random_flip_left_right 和 tf.image.random_filp_up_down 实现。

    9.7.3 裁剪

    通过在原图的左右或者上下方向去掉部分边缘像素,可以保持图片主体不变,同时获得新的图片样本。

    在实际裁剪时,一般先将图片缩放到略大于网络输入尺寸的大小,在进一步裁剪到合适大小。

    e.g. 网络的输入大小为 224 x 224,那么我们先通过 resize 函数将图片缩放到 244 x 244 大小,再随机裁剪到 224 x 224 大小,利用tf.image.random_crop。

    9.7.4 生成数据

    通过生成模型在原有数据上学习到数据的分布,从而生成新的样本。

    9.7.5 其他方式

    添加高斯噪声,变换视角,随机擦除。


    其他方式

    其中两个防止过拟合的方法,因为我之前单独写过,所以不在这赘述,可以参考我之前写的文章,传送门如下:

    参考资料:https://github.com/dragen1860/Deep-Learning-with-TensorFlow-book

    相关文章

      网友评论

          本文标题:第九章 过拟合

          本文链接:https://www.haomeiwen.com/subject/xurvchtx.html