机器学习中的正则化

在机器学习的过程中我们会经常看到“正则化”这个词,比如我们看一些书籍、一些视频或者老师们讲课说的:给损失函数加一个正则化项,相当于给它一个惩罚...”等等,就给人一种很迷的感觉。

 对此,在网上看到过一些关于什么是正则化的文章,经过整理加上自己的理解就在这里记录下来。

打个比方:假设我们的模型就是一只 蚊子,我们要训练它去模拟空中的一些点的整体路径:
我们空中的点也分为训练集和测试集,蚊子去学习训练集的路径,然后闭上眼睛,按照自己学习到的那个路径去预测测试集的点是否在路径上。

https://img1.sycdn.imooc.com/5d53753900015cf608520386.jpg

首先,蚊子自以为聪明灵活,自由自在地飞翔,它轻轻松松地经过了所有训练集的点(相当于我们在训练模型),结果如下:

https://img2.sycdn.imooc.com/5d53753c0001b6ba05890391.jpg

蚊子都经过了所有的点,看起来效果挺不错的。接下来我们通过测试集看看训练出来的模型效果如何:

https://img1.sycdn.imooc.com/5d5375400001bc3508750371.jpg

给蚊子蒙上眼睛,很可惜蚊子在测试集上一个点都没有经过。

对于上面的结果我们称之为over fitting(过拟合)!因为每个数据都带有随机性,你不能学的太认真,正所谓“你认真,就输了”。

但是蚊子也没办法,它也不知道怎么“不认真”,于是我们来想办法,强迫它别那么较真。

于是我们想了一个办法:我们设计了一个 挂坠给蚊子挂上,这样蚊子飞起来就有些费劲了,没办法自由自在上蹿下跳地飞行了,这也就是大家常常听说的“惩罚项”,因为身上有个挂坠,你蚊子上下飞就很费力,于是限制了蚊子的乱动
https://img4.sycdn.imooc.com/5d5375440001a66e03240147.jpg

通过给蚊子一个挂坠我们在次到训练集上来训练蚊子,如下所示:

https://img3.sycdn.imooc.com/5d5375470001dcec06110419.jpg

由于受到挂坠的影响,蚊子不能像之前那样自由飞行,为了节省力气不得不选择离这些点比较近的路线来飞行,这样每次经过下一个点的时候就能以更短的距离到达。

接下来我们通过给蚊子添加挂坠训练出来的模型再次到测试集上进行训练:
https://img3.sycdn.imooc.com/5d53754c0001b32e07750437.jpg

给蚊子添加挂坠测试出来的结果就是不一样,这次的成绩就好多了。蚊子很惊喜,感叹这挂坠好神奇。所以我们将这个给蚊子添加挂坠的动作称为“正则化”

当然,举例子是为了容易理解,具体的原理可能会有差别。
具体的正则化,就是在前面所说的“给损失函数加一个正则化项(挂坠)”,挂坠怎么设计,是很复杂的,不能太重也不能太轻,而且说不定还要随时变动,这里的细节就不深究了,我们直接看看常见的正则化方法:

假设我们的损失函数 J(w,b)=avg(L(y,y'))
这里由于不方便打公式,所以我用avg来表示求所有训练样本损失的平均值,
正则化项一般采用L2正则化,也就是给J加上一个 (λ/2m) * sum(w^2),也就是所有w的平方和,再乘以λ/2m,m是样本量。
综合起来就是:J(w,b)=avg(L(y,y')) + (λ/2m) * sum(w^2)

这样一来,我们在用梯度下降的时候,求J对w的偏导,你会发现dw变大了,而我们的更新法则为w-->w-α·dw,因此最终选择的 参数w会变得更小参数更小,对于模型来说,就意味着更加简单,于是我们的目的就达到了。

 

目前暂时对正则化的理解就这么多,通过后续的深度研究会继续更新下自己对正则化的一些不足之处。
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值