博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
L1、L2规则化
阅读量:2354 次
发布时间:2019-05-10

本文共 503 字,大约阅读时间需要 1 分钟。

如何看待L1、L2规则化

将它们视为loss函数中引入了惩罚项。

我们的目的是希望求出在参数值取多少时,loss函数是最小的;但是引入L1、L2规则化算子后(这时就变成拉格朗日函数),相当于给参数的取值套了个“紧箍咒”:

不再像原来那样可以自由自在地随便给参数取值

原因在于我们可以看到L1、L2都恒大于0,而我们的目标是要求得min

这正是regularization(规则化)的来由(有的翻译为正则化,感觉不够贴切)。

我们还可以从另一个角度看待:

loss函数是希望参数取值往其极小值方向去;

规则化是希望往其中心点去
两者就像两个人在拔河,最后找到了一个平衡点,就是最后的参数值
红箭头代表努力方向
注意加入规则化会使得loss函数的等值线(上图彩色线)发生变化,实际是在新的目标函数下求解。

为什么L2规则化可以防止过拟合

L2规则化

->求得的参数值小
->不会因为输入值的微小偏差,导致输出发生巨大变化(克服了ill condition)。(这就是好的泛化)

关于L2的其他

L2将函数转为了λ-stronglyconvex(强凸):

“强凸”的话,就能对情况做一些控制,我们就可以得到一个更好的近似解。

Ref

你可能感兴趣的文章
const的常见用法
查看>>
crontab使用手册
查看>>
虚继承与虚基类的本质
查看>>
函数式编程
查看>>
GitHub上整理的一些工具
查看>>
python range 与xrange的区别
查看>>
算法-最长递增子序列
查看>>
最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
查看>>
回文字符序列
查看>>
inline函数必须在头文件中定义吗?
查看>>
内存泄漏检查工具valgrind使用方法
查看>>
Solution of Codility
查看>>
java解析XML的四种方式及比较
查看>>
单例模式(java)详细
查看>>
策略模式(java)
查看>>
java线程中信号量Semaphore类的应用
查看>>
如何设置CentOS为中文显示
查看>>
Nginx配置
查看>>
php-fpm配置
查看>>
Centos 系统时间与当前时间相差和时区解决办法
查看>>