搜索
搜 索
本版
文章
帖子
用户
图文精华
hadoop-2.6.0+zookeeper-3.4.6+hbase-1.0.0+hive-1.1.0完全分布 ...
首页
Portal
专题
BBS
面试
办公|编程助手
更多
登录
注册
用户组:游客
主题
帖子
云币
我的帖子
我的收藏
我的好友
我的勋章
设置
退出
导读
淘贴
博客
群组
社区VIP
APP下载
今日排行
本周排行
本周热帖
本月排行
本月热帖
会员排行
About云-梭伦科技
»
专题
›
交流区
›
人工智能AI
›
机器学习
›
完全理解正则【L1,L2】化及其作用
0
1
1
分享
完全理解正则【L1,L2】化及其作用
regan
发表于 2018-4-11 09:33:18
[显示全部楼层]
只看大图
阅读模式
关闭右栏
1
15305
本帖最后由 regan 于 2018-4-11 09:34 编辑
1.我们以线性分类来引入正则化的概念
例如要对输入的一张图片去做分类,判断是猫还是狗。那对于RGB图像32*32*3的大小的矩阵我们可以把它看reshape成一个3072大小的向量,对于向量中的每个像素看成线性方程的Xi,自然对每个Xi会有一个系数Wi,在训练的过程中不断调整W使其能正确的预测图片的分类。
Y = WX + b
模型训练好之后,可以通过Y = WX +b这个模型获取每个类别的分数。假设我们的最终分类类别有10个。
对于一个更具体的实例如下:
3*4 4 * 1 -》 3*1
为了方便说明,假设输入图片只有四个像素,每个像素对应的值形成一个X向量,用一个W矩阵和向量相乘再加上偏置项即可得到每个类别的分数。
经过计算可以看到预测为猫的分数是最低的。而预测为狗的分数是最高的,因此预测错误,这就产生了误差,在机器学习里面叫损失,我们要根据这个损失去调整权重矩阵W,以使得分类朝着猫的方向发展。
对于这类线性的模型,我们抽象出统一的线性方程f(Xi,W,b) = WXi + b
对于前面出现的预测出现的损失,我们需要找到一种衡量损失的方法。例如对于猫图片的分类。
第一列表示猫图片预测为猫的分数为3.2,预测为汽车的概率为5.1,预测为青蛙的概率为-1.7,很明显分类是错误的;第二列本身为汽车图片,预测为猫的分数为1.3,预测为汽车的分数为4.9,预测为青蛙的分数为2.0,分类正确;第三种青蛙的图片预测为猫的分数为2.2,预测为汽车的分数为2.5,预测为青蛙的分数为-3.1,很明显分类错误。
既然分类存在错误,我们需要找到一个衡量错误的方法,第一种衡量损失的方法为Hinge-loss折页损失,二维表现形式为一条折线,通用表达式如下:
如果被正确分类损失为0,否则损失为Sj-Syi+1。Sj表示预测为错误类别的得分,Syi表示预测为正确类别的得分。
由此定义,计算上面的分类的损失:
可得到青蛙预测的损失最大,而汽车预测正确,损失为0,猫预测成了汽车损失值为2.9.整体的损失为
2.9 + 0 + 10.9,整体平均损失为13.8 / 3. = 4.6,而我们的目标是使用这个损失去更新权重参数,使得损失值减小。
Hinge-loss损失函数完整定义如下:
虽然我们
可以通过损失值调整权重参数,但不同的权重参数会对结果有什么不同的影响呢?来看下面的例子:
分别有输入向量x,和权重参数w1,w2。
x'W1 = 1*1 + 1* 0 + 1*0 +1*0 = 1
x'W2 = 0.25 * 1 + 0.25 * 1+ 0.25 * 1+ 0.25 *1 =1
对比两个结果,都为1,但那个权重参数更好呢?如果把x想象成输入的图片,w1只关注了图片上的局部,而w2关注了整张图片,w1不具备泛化能力容易出现过拟合,而w2泛化能力更强且不容易过拟合到数据的局部特征。因此说权重参数也是会对结果产生影响的,怎样了避免或者说减少这种影响呢?这里就引出了
正则化
这个概念。正则化实际上就是将权重带来的损失添加到损失函数中,那怎样去定义权重损失呢?有两种最常见的方法就是L1和L2正则化。
L1正则化是指权值向量
w
中各个元素的
绝对值之和
,通常表示为
||w||
1
L2正则化是指权值向量
w
中各个元素的
平方和然后再求平方根
(可以看到Ridge回归的L2正则化项有平方符号),通常表示为
||w||
2
L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择
L2正则化可以防止模型过拟合(overfitting);一定程度上,L1也可以防止过拟合
现在加入权重参数的正则化项之后,整个损失函数变成如下的样子:
其中
为惩罚系数,用于调节分类损失和权重参数损失。
以后遇到正则化惩罚项,其实都是指的对权重参数的惩罚。不管是L1,还是L2.只需要记住L1和L2他们对模型的影响就可以了。
2.也许你已经懂了什么是正则化,什么是损失函数,其实损失函数除了Hinge-loss之外呢,还有一种叫常见的损失函数叫交叉熵损失。接下来我们看看它的神秘面纱。
上面对猫的分类中,分类都是以分数来衡量的。例如
那对于这种分数有什么不好的地方呢?直观上是没有归一和统一化,分数有大有小,还有负值。那能不能将这种分数直接以某种方式变成百分数比例呢?这就是softmax要做的,先来看下Softmax函数的定义:
其输入值为一个向量,向量中的每个值为任意的实数;输出值为一个向量且每个元素位于0~1之间,且元素之和为1。完美!这不就将得分变成了概率分布了吗!
公式中的
为e的得分次幂,使用e为底的幂运算进行了缩放,分母
为所有预测类别得分经过e为底的幂运算放缩后的和,可以把它看成归一化因子。得到了每个分类的概率,怎样用概率定义损失呢?概率越小,损失越大,概率越大,损失越小。基于这种关系选择-log不就可以完成了吗?因此最终每个类别的损失定义为:
这个损失也被称之为交叉熵损失。
接下来使用交叉熵损失来计算一下分类的损失。
可以看出概率值小的,最终损失值就越大!
好了最后对比下折页损失和交叉熵损失:
得到了总体的损失之后,我们就可以使用相应的策略来优化 相关的参数了,例如在神经网络中通过BP算法来更新W参数。
本帖被以下淘专辑推荐:
·
大数据
|
主题: 906, 订阅: 9
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
已有(1)人评论
电梯直达
正序浏览
天才的菇凉
发表于 2018-4-11 10:44:30
很直观
回复
使用道具
举报
显身卡
还有一些帖子被系统自动隐藏,点此展开
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
Hive
最佳新人
积极上进,爱好学习
热心会员
经常帮助其他会员答疑
发表新帖
regan
新手上路
关注
40
主题
194
帖子
33
粉丝
TA的主题
Spark性能优化(八):Shuffle调优
2019-12-16
Spark性能调优(六):数据本地性
2019-12-9
Spark性能调优(五):缓存与Checkpoint
2019-12-9
Spark性能调优(四):广播大变量
2019-11-28
Spark性能优化(三):序列化与压缩
2019-11-27
24小时热文
kafka面试题精选
Nebula Flink Connector 在实时 ETL 的实践
Apache Doris 用户案例集
国家电网公司主数据管理系统技术规范
企业的主数据建设方法论与实践
关闭
推荐
/2
中文版ChatGPT
1.无需魔法 2.提高编程效率 3.提高文档能力
查看 »
新手帮助
新手帮助:注册遇到问题,领取资源,加入铁粉群,不会使用搜索,如何获取积分等
查看 »
意见
反馈