aihot  2017-10-14 10:54:18  深度学习 |   查看评论   

提早停止(Early Stopping)

Early Stopping

Early Stopping

  模型在测试集上的误差往往首先会随着测试集误差的减小而减小,但到了后期,模型就会倾向于通过过拟合来进一步降低自身在训练集上的误差,而这样的优化实际上是升高了模型在测试集上的误差的。所以我们可以通过提前停止训练来一定程度上避免过拟合。

正则化

  正则化的目的是为了防止过拟合,但是正则化为什么可以防止过拟合?

  正则化是在我们通常的损失函数后面加一个正则项,这个正则项实际上是一个对参数大小的惩罚项,那为什么正则项可以限制参数不能过大?

  因为正则项里面通常包含参数,而我们的优化目的又是尽可能的缩小损失函数函数值,所以在优化的过程中,我们就会让参数尽可能的小。那为什么参数小了就可以防止过拟合?我读的资料里面写的都是参数越大,模型越复杂,越容易过拟合,那为什么参数大了模型就越复杂?

  我们可以想一下,模型函数求导后的式子中是会保留有参数的,如果参数越大,也就意味着模型的导数越大,也就意味着模型曲线越不平滑,也就越容易通过各种扭曲去拟合噪声样本点,也即越容易发生过拟合。

  L0,L1,L2正则项是机器学习中常用的正则项:

  L0:指非零参数的个数。前面讲过正则项的目的是为了惩罚参数过大,在这里也就是希望零参数越多越好,非零参数越少越好;优化损失函数正好是限制了正则项过大,也即限制了非零参数的个数过多。但使用L0正则项有个问题,就是难以优化,所以一般不用。

  L1:

采用L1正则项

采用L1正则项

  L2:

采用L2正则项

采用L2正则项

  对于使用了L1、L2正则项的损失函数来说,往极小值处优化自身函数值实际上就限制了正则项不能过大,也就限制了w不能过大,也即防止了过拟合。

  L1会趋向于产生少量的特征,而其他的特征都是0,也即实现稀疏,只保留少量特征。而L2会选择更多的特征,这些特征都会接近于0。L2正则项也叫权重衰减,是最常用的正则项,而且带L2的回归,就是我们上篇文章所提到过的岭回归,上篇文章说『岭回归就是在原来最小二乘法式子求逆之前先加上一个阶数与样本数相同的对角矩阵,也即加上一个正则项,使矩阵为奇异的风险大降低,损失了无偏性,来换取高的数值稳定性』,里面的这个正则项,就可以理解为L2正则项。

Dropout

  Dropout也是防止过拟合的一种方法。基本原理很简单,就是训练时,每次更新参数之前,随机去掉网络中p%的神经元,也即更改了网络结构,让整个网络变得更简单。如果与前面的梯度下降结合起来,那就是每次使用训练集的一个新的mini-batch之前,都随机丢掉网络中p%的神经元,用剩下的神经元进行训练,进行参数更新。

  然后到使用测试集的时候,使用完整的网络,但所有权重统一乘以(1-p)%。因为训练时只用部分神经元就生成了较为合适的输出z,如果使用了全部的神经元而权重仍然使用训练时的权重,那结果可能就会变成zn倍。

  而且因为前面讲了是随机去掉网络中p%的神经元的,所以可能若干次训练的神经网络是会共享部分神经元的,当然也可能不共享,如果p较大的话。

  如果非要讲原理的话,我借用我在其他资料里面看到的,当一群人组队做事情的时候,如果每个人都想着,我的队友会干活的,那什么事情都完成不了;如果每个人都认为,我的队友不行,还是得靠我自己,那么事情会做的好的多:>

Network Structure

  有些神经网络的结构天然就是能防止过拟合的,比如CNN,池化过程避免了过拟合。

 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自浅谈深度学习基础(上)

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]