欠拟合、过拟合以及正则化

无论在深度学习还是奇迹学习建模当中都可能会遇到两种常见结果,一种是过拟合(over-fitting),另外一种是欠拟合(under-fitting).

过拟合与欠拟合的理解:


图1 欠拟合、正确拟合、过拟合线性回归的例子


图2 欠拟合、正确拟合、过拟合逻辑回归的例子

打个模型拟合的例子,假如需要建立一个识别狗狗的例子,需要对模型进行训练。

过拟合:

恰好训练样本中的所有训练图片都是二哈,那么经过多次迭代训练之后,模型训练好了,并且在训练集中表现很好。基本上二哈的所有特点都涵括进去,那么问题来了!假如我的测试样本是一只金毛呢?将一只金毛的测试样本放进识别狗狗的模型中,很有可能输出的结果是金毛不是一条狗(因为这个模型基本上都是按照二哈的特征去打造的)。所以这样就造成了模型过拟合,虽然在训练集上表现得很好,但是在测试集中表现的恰好相反,在性能的角度上是协方差(variance)过大,同样在测试集上的损失函数(cost function)会表现的很大。

欠拟合:

二哈被提取的特征比较少,导致训练出来的模型不能很好的匹配,表现的很差,因此二哈都无法识别。

解决办法:

  1. 增减模型的参数维度,可以选择增加或者减少特征数量的选择,来解决过拟合和欠拟合的问题。
  2. 增减多项式的维度,比如将加入高阶多项式来更好地拟合曲线,用以解决欠拟合,或者讲解去处理过拟合。
  3. 调整Regularization Parameter。在不改变模型参数维度和多项式维度的情况下,单纯的调整Regularization Parameter同样可以有效的改变模型对数据的拟合程度。

正则化:

假如我们采用梯度下降方法将模型中的损失函数不断减小,那么最终我们会在一定范围内求出最优解,最后损失函数不断趋近0.那么我们可以在所定义的损失函数后面加一项永不为0的部分,最后经过不断优化损失函数还是会存在。其实这就是所谓的“正则化”。


公式1:加入正则化公式的损失函数

 为正则化系数,当其过大时,则会导致后面部分权重比加大,那么损失函数过大,从而导致欠拟合

当其值过小时,甚至为0,导致过拟合。

对于神经网络的解决:

对于神经网络,参数膨胀原因可能是因为随着网络深度的增加,同时参数也不断增加,并且增加速度、规模都很大。那么可以采取减少神经网络规模(深度)的方法。也可以用一种叫dropout的方法。dropout的思想是当一组参数经过某一层神经元的时候,去掉这一层上的一部分神经元,让参数直经过一部分神经元进行计算。注意这里的去掉并不是真正意义上的去除,只是让参数不经过一部分神经元计算而已。

另外增大训练样本规模同样也可以防止过拟合。

猜你喜欢

转载自blog.csdn.net/weixin_38706928/article/details/80312910