损失函数和正则化

参考:

https://www.cnblogs.com/LXP-Never/p/10918704.html
https://blog.csdn.net/Heitao5200/article/details/83030465
https://zhuanlan.zhihu.com/p/35893078
https://zhuanlan.zhihu.com/p/36794078
 

https://zhuanlan.zhihu.com/p/147579819  (PyTorch 12.正则化)

L2 正则化通过 weight decay 参数来控制

作为损失函数

L1范数损失函数

  L1范数损失函数,也被称之为平均绝对值误差(MAE)。总的来说,它把目标值y(n)y(n)与估计值y^(n)y^(n)的绝对差值的总和最小化。

LossMAE=1N∑n=1N|y(n)−y^(n)|LossMAE=1N∑n=1N|y(n)−y^(n)|

# tensorflow
tf.reduce_mean(tf.abs(logits - labels))
# numpy
np.sum(np.abs(logits-labels))

L2范数损失函数

  L2范数损失函数,也被称为均方误差MSE, mean squared error),总的来说,它把目标值YiYi与估计值f(xi)f(xi)的差值的平方和最小化。

LossMSE=1N∑n=1N(y(n)−y^(n))2LossMSE=1N∑n=1N(y(n)−y^(n))2

L1损失函数L2损失函数
鲁棒不是很鲁棒
不稳定性稳定解
可能多个解总是一个解

  总结一下:L2范数loss将误差平均化(如果误差大于1,则误差会放大很多),模型的误差会比L1范数来得大,因此模型会对样本更加敏感,这就需要调整模型来最小化误差。如果有个样本是一个异常值,模型就需要调整以适应单个的异常值,这会牺牲许多其他正常的样本,因为这些正常的样本的误差比这单个的异常值的误差小。

复制代码

# ----- tensorflow ----- #
tf.reduce_mean((labels-logits) ** 2)
# 或者使用 mean_squared_error 函数
tf.losses.mean_squared_error(labels, logits)
# ----- numpy ----- #
np.sum(np.square(y_true-y_pre))

复制代码

RMSE损失函数

  RMSE损失函数也称为均方根误差(Root Mean Square Error,RMSE),RMSE 能综合MSE和MAE的优缺点,对对特大或特小误差非常敏感,能使得模型趋于最优。

LossRMSE==1N∑n=1N(y(n)−y^(n))2−−−−−−−−−−−−−−−−−⎷LossRMSE==1N∑n=1N(y(n)−y^(n))2

作为正则化

  我们经常会看见损失函数后面添加一个额外项,一般为L1-norm,L2-norm,中文称作L1正则化和L2正则化,或者L1范数和L2函数。

  L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。防止模型过拟合而加在损失函数后面的一项。

L1正规化

  L1范数符合拉普拉斯分布,是不完全可微的。表现在图像上会有很多角出现。这些角和目标函数的接触机会远大于其他部分。就会造成最优值出现在坐标轴上,因此就会导致某一维的权重为0 ,产生稀疏权重矩阵,进而防止过拟合。

最小平方损失函数的L1正则化

L1正则化是指权值向量ww中各个元素的绝对值之和

L2正规化

  L2范数符合高斯分布,是完全可微的。和L1相比,图像上的棱角被圆滑了很多。一般最优值不会在坐标轴上出现。在最小化正则项时,可以是参数不断趋向于0,最后活的很小的参数。

  在机器学习中,正规化是防止过拟合的一种重要技巧。从数学上讲,它会增加一个正则项,防止系数拟合得过好以至于过拟合。L1与L2的区别只在于,L2是权重的平方和,而L1就是权重的和。如下:

最小平方损失函数的L2正则化

L2正则化是指权值向量ww中各个元素的平方和然后再求平方根

作用

L1正则化

  • 优点:输出具有稀疏性,即产生一个稀疏模型,进而可以用于特征选择;一定程度上,L1也可以防止过拟合
  • 缺点:但在非稀疏情况下计算效率低

L2正则化

  • 优点:计算效率高(因为存在解析解);可以防止模型过拟合(overfitting)
  • 缺点:非稀疏输出;无特征选择

稀疏模型和特征选择:稀疏性我在这篇文章有详细讲解,如果特征符合稀疏性,说明特征矩阵很多元素为0,只有少数元素是非零的矩阵,表示只有少数特征对这个模型有贡献,绝大部分特征是没有贡献的,或者贡献微小(因为它们前面的系数是0或者是很小的值,即使去掉对模型也没有什么影响),此时我们就可以只关注系数是非零值的特征。这就是稀疏模型与特征选择的关系。

文献[1]解释了为什么L1正则化可以产生稀疏模型(L1是怎么样系数等于0的),以及为什么L2正则化可以防止过拟合,由于涉及到很多公式,想要详细了解的同学,请移步

区别

1、L1正则化是模型各个参数的绝对值之和

  L2正则化是模型各个参数的平方和的开方值

2、L1会趋向于产生少量的特征,而其他的特征都是0,产生稀疏权重矩阵。

  L2会选择更多的特征,这些特征都会接近于0

再讨论几个问题

1.为什么参数越小代表模型越简单?

  越是复杂的模型,越是尝试对所有样本进行拟合,包括异常点。这就会造成在较小的区间中产生较大的波动,这个较大的波动也会反映在这个区间的导数比较大。

  只有越大的参数才可能产生较大的导数。因此参数越小,模型就越简单。

2.实现参数的稀疏有什么好处?

  因为参数的稀疏,在一定程度上实现了特征的选择。一般而言,大部分特征对模型是没有贡献的。这些没有用的特征虽然可以减少训练集上的误差,但是对测试集的样本,反而会产生干扰。稀疏参数的引入,可以将那些无用的特征的权重置为0.

3.L1范数和L2范数为什么可以避免过拟合?

  加入正则化项就是在原来目标函数的基础上加入了约束。当目标函数的等高线和L1,L2范数函数第一次相交时,得到最优解。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值