【机器学习】正则化

既在训练上表现良好又在测试集上表现良好的能力称为泛化,欠拟合是指深度学习模型在训练上表现差,过拟合是指深度学习模型在训练上表现良好、在测试上表现差。
正则化的思想就是在目标函数中引入额外的信息来惩罚过大的权重参数,通常只对权重做正则惩罚,而不对偏置做正则惩罚。正则化项是损失函数的附加标准,以确保不会过度拟合。
在这里插入图片描述
这样做的目的是:权重不应该过大,如果权重太大,特征上小小的变化就会引起预测较大的改变;也不希望给某个特征过大的权重,因为如果它有太大的权重,就会有很大的影响,其他的特征就起不到应有的作用;我们也希望无用的特征其权重为0.

正则化项有多种计算方式:
L1正则:绝对值求和
L2正则:平方和
区别在于:平方和权重给予较大值更多的惩罚

p-范数:p次方和再开p次方根。
较小的p,p<2时会产生稀疏的向量,较大的p突出大的权重。1-范数具有特征选择的功能。

在这里插入图片描述

总结:

  • L1很受欢迎,因为它往往导致稀疏解决方案(即大量零权重),但是他不可导,因此仅适用于梯度下降求解法。
  • L2很受欢迎,因为对于某些损失函数,可以直接求解(不需要梯度下降,但通常仍然需要迭代求解)。
  • Lp不太受欢迎,因为对权重缩减不够。

【通用名称】

  • 最小二乘:平方损失
  • 岭回归:L2正则化的平方损失
  • Lasso回归:L1正则化的平方损失
  • 弹性回归:L1和L2正则化平方损失的组合
  • 逻辑斯蒂回归:logistic损失

【Batch Normalization】
在机器学习中,如果训练数据和测试数据都符合一定的状态分布,那么训练的模型能够较好地预测测试集上的数据;反之,训练的模型在测试集上的表现就会变差。在训练神经网络模型时,可以事先将特征去相关并使得它们满足一个比较好的分布,这样模型的第一层网络一般都会有一个比较好的输入特征,但是随着模型的层数加深,网络的非线性变换使得每一层的结果变得相关了,并且不再满足标准正态分布,更糟糕的事,可能这些隐藏层的特征分布已经发生了偏移。
为了解决这个问题,研究人员提出在层与层之间加入Batch Normalization层。训练时,BN层利用隐藏层输出结果的均值和方差来标准化每一层特征的分布,并且维护所有mini-batch数据的均值与方差,最后把样本的均值与方差的无偏估计量用于测试时使用。
鉴于在某些情况下非标准化分布的层的特征可能是最优的,标准化每一层的输出特征反而会使得网络的表达能力变得不好,BN层加上了两个可学习的缩放参数和偏移参数以便模型自适应地去调整层的特征分布。

Batch Normalization是一种非常简便而又实用的加速收敛速度技术,其作用如下:

  • 使得模型训练收敛的速度更快
  • 模型隐藏输出特征的分布更稳定,更利于模型的学习

【Dropout】
Dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率暂时将其从网络中丢弃,这样可以让模型更加健壮,因为它不会依赖某些局部的特征(因为局部特征有可能被丢弃)。

在实践中,通过把神经元的输出置为0来关闭神经元,具体的步骤如下:

  1. 建立一个维度和本层神经元相同的矩阵D
  2. 根据概率(keep_prob)将D中的元素设置为0,设置为0的神经元表示该神经元失效,不参与后续的计算。
  3. 将本层激活函数的输出与D相乘作为新的输出
  4. 新的输出将除以keep_prob,以保证训练和测试满足同一分布,这样在测试中Dropout就可以参加计算来。

除了上述的正则化方法外,还有一些正则化方法也很常用,包括数据集增强、噪声健壮性、多任务学习和提前终止等。

参考资料:
1.PyTorch机器学习从入门到实战
2.机器学习与人工智能-浙江大学-中国大学mooc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值