正则化减小过度拟合

正则化

如果怀疑神经网络过渡拟合了数据,即存在高方差问题,正则化可是一个解决方案,另外一个方案则是准备大量数据,但是有些时候我们可能找不到那么多的数据或者数据获取成本较高,这时正则化是一个可靠的方法

正则化,可以减少网络过度拟合或减少网络延迟

作用原理

那逻辑回归函数作为例子,首先给出了一个成本函数

参数包含一些训练数据和不同数据中个体预测的损失

w和b是逻辑回归的两个参数

w是一个多维度参数矢量

b是一个实数 

在逻辑回归函数中加入正则化,即只需要加入正则化参数λ

其中||w||_{2}^{2},为w欧几里得范数的平方

此方法称为L2正则化,因为这里运用了欧几里得法线,被称为向量参数W的L2范数

为什么只正则化参数w而不正则化参数b呢

因为w通常是一个高维参数矢量,已经可以表达高偏差问题,w可能含有很多参数,不可能拟合所有参数,而b只是单个数字,如果加了b其实没有太大影响,因此可以省略掉

L2正则化是最常见的正则化类型,同时也有L1正则化,而L1正则化加的不是L2范数,以下是L1正则化

如果用的L1正则化,W最终会稀疏,也就是说W向量中会有很多0,从而是模型变得稀疏

λ是正则化参数,通常我们使用验证集或交叉验证来配置这个参数,尝试各种各样的数据,选择合适的参数,要考虑训练集之间的权衡,把参数正常值设为较小值,这样可以避免过拟合,λ是另外一个需要调整的超级参数

并且,在编写代码时,λ(lamda)是一个保留字段,因此我们需要进行区分,通常我们会写为lambd以免发生冲突,从而代替λ作为正则化参数

如何在神经网络中实现L2正则化

神经网络中含有一个成本函数,该函数包含有W[1],b[[1],......W[L]b[L]的所有参数

其中||w^{[l]}||^{2},被称为范数平方(矩阵范数),被定义为矩阵中所有元素的平方求和

w是一个n[l]*n[l-1]的的多维矩阵

n[l-1]:表示隐藏单元的数量

n[l]:表示l层单元的数量

||w^{[l]}||^{2}该矩阵范数也被称作,费罗贝尼乌斯范数,用下标F进行标注

在进行过正则化后,也需要对dw进行添加正则化

然后再计算w这个更新项,代入结果可得

L2范数正则化也被称为“权重衰减”,因为它就像梯度下降一样,w被更新为少了α*backprop输出的最初梯度值

为什么正则化可以减少过拟合

压缩L2范数或弗罗贝尼乌斯范数或者参数可以减少过拟合,直观上理解就是如果正则化λ参数设置得够大,权重矩阵W被设置为接近0的值,就是把多隐藏单元的权重设为0,于是基本上消除了这些隐藏单元的许多影响

就像下图当中的神经网络,被简化后变为了圈中的部分,变成了一个很小的网络,小到如同一个逻辑回归单元,可是深度却很大

从而神经网络会从下图当中右侧这种过拟合状态,逐步转变为左侧的高偏差状态,然后存在有一个λ会使得神经网络拟合实现一个中间态即“just right”,直观理解就是λ增加到足够大,w会接近0,直观上认为,其他的隐藏单元删除了,其实不然,只是这些节点的影响作用变小了,神经网络变简单了,这样便不容易发生过拟合

dropout正则化(随机失活)

原理

假设现在有下图这样一个存在过拟合的神经网络,这也是dropout所要处理的,dropout会遍历网络的每一层,并设置消除神经网络中节点的概率

假设网络中的每一层每个节点都已抛硬币的方式设置概率,每个节点得以保留或删除的概率都是0.5,设置完节点概率,我们会消除一些节点,然后删掉从该节点进出的连线,最后得到一个节点更少,规模更小的网络,然后用backprop进行训练

与L2相比,dropout的功能类似于L2正则化,与L2正则化不同的是,被应用的方式不同,dropout也会有所不同,甚至更适用于不同的输入范围

对于如上的神经网络而言, 每一层的keep-prob保留概率是要选择的参数,它代表每一层上保留单元的概率,所以不同层的keep-prob也可以变化

其中第二层为一个7*7的参数集,规模最大,为了预防过拟合,对于这一层,它的keep-prob值应该相对较低,对于其它层,过拟合的程度可能没那么严重,它的keep-prob可以高一点,如果在某一层,我们不需要担心过拟合,则keep-prob可以设置为1

从技术上讲,我们也可以对输入层应用dropout,有机会删除一个或多个特征,虽然现实中我们通常不这么做

数据扩增

假设正在拟合猫咪图片分类器,如果扩展数据来扩大训练集的成本过高,可以通过水平翻转,旋转等手段扩增数据集,额外生成假训练数据,和全新的数据比固然获得的信息没那么多,但是这样做的代价几乎为0,除了一些对抗性代价,通过这种方式扩增数据,进而正则化数据集,减少过拟合比较廉价

early stopping

运行梯度下降时,我们可以绘制训练误差,或者只绘制代价韩式J的优化过程,在训练集上用0-1记录分类误差次数,呈单调下降趋势,因为在训练过程中我们希望训练误差,代价函数J都在下降

通过early stopping不单可以绘制上述内容,还可以绘制验证集误差,它可以是验证集上的分类误差或验证集上的代价函数,逻辑损失和对数损失等

从中我们可以发现,验证集误差通常会先呈下降趋势,然后在某个节点上升,early stopping的作用是,神经网络已经在这个迭代过程中表现得很好了,然后停止训练,得到验证集误差

缺点:

优化代价函数和过拟合两个任务,early stopping不能独立处理,因为提早结束梯度下降,也就是结束了优化代价函数J,因为现在不再尝试降低代价函数J,所以代价函数J的值不够小,但同时不希望出现过拟合,没有采取不同的方式来解决上述两个任务,而是用同一种方式

优点:

只运行一次梯度下降,可以找出w的最小值,最大值和中间值,而无需尝试L2正则化超级参数λ的很多值

  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值