天天看点

避免过拟合

欠拟合和过拟合

欠拟合是指在训练集和测试集(或验证集)上模型效果都不好,一般由于模型能力不足导致;过拟合是指模型在训练集上表现好,而在测试集上表现不好,一般由于模型过度拟合了训练集中的噪声导致。本文主要讨论解决过拟合问题的方法。

L2正则化

无论机器学习还是深度学习,L2正则化项都用于限制参数W过大,它被累加在代价函数之中。

避免过拟合

代价函数J除了计算每个实例的误差L,还加入网络中每层参数W的2范数的平方,并用λ作为参数,当λ较大时,就需要W接近0,才能得到较小的代价函数,这样一些无关紧要的参数就变成了0,从而减少了模型的复杂度,以及压缩后模型的规模。另外,较小的W也使层之间传递的数据变小,这样在使用sigmoid和tanh激活函数时,数据刚好集中在中间类似线性变换的一段,使非线性变换的结果类似线性变换。由于多个线性组合叠加相当于单个线性层,因此也倾向于简化模型。

如果使用L1正则化,参数矩阵将变得稀疏,根据经验,一般L2效果更好。L2正则化方法可用于简化决策,但不适用于需要复杂决策的问题。使用该方法时,需要尝试多个λ值。

Dropout方法

Dropout方法是扔掉网络中的一些连接, 使结果不依赖于某个特定结点,从而构成更健壮的网络。

避免过拟合

具体方法是将层中一定比例的参数置为0,反向传播时也不调节这些参数。需要注意的是,在调试和预测阶段一般不使用Dropout。如果在调试时也随机去掉连接,则不能保证每次实验结果一致,导致无法比较模型修改前后的效果,预测时则需要尽可能地使用网络功能,因此也不能去掉连接。

归一化层

其它方法

  • 增加训练数据,在数据不足时,加入变形后的数据(旋转、裁剪、水平翻转)。
  • Early stopping:当模型在验证集上不再下降时,停止迭代。
  • 修改模型结构:训练样本过小,模型参数过多也是造成过拟合的原因,可尝试修改模型结构。