交叉熵和损失函数

熵,交叉熵和损失函数,在机器学习中,这些概念容易让人迷糊,基于现有的理解,简要做一下总结供参考,以后理解深刻了,在进行拓展。

熵作为一种测量信息量的一个度量,可以用意外程度的期望值来定义,其反应了系统的有序化程度。
假设一个事件发生的概率为p,则得知该消息的意外程度 log2(1p)
这个事件发生的概率越大,意外程度越小,包含的信息也越小。若一件事必然发生,概率为1,则意外程度为0,信息量为0.

假设对于一个不均匀的色子,其离散随机变量X可能取值 X={x1,x2,...,x6} ,每个取值发生的概率 p(X=xi) ,记为 pi pi 可称为意外程度,意外程度是一个随机变量,那么意外程度随机变量的期望值定义为:

H=i=1np(xi)logp(xi)=i6pi()=i6pilog(1/pi)

期望值H即是熵,或称香浓信息量,值越大,不确定度越大。
对于只有两种结果的一个事件,比如投不均匀的硬币,正面朝上为p,则熵可得:
H=plog(1p)(1p)log(p)

对H求导,当p=1/2时,熵H最大,无序度越大,不确定度越大,整个集合包含的信息量也越大。

在用比特来度量时:
若投硬币正面朝上,p=1/2,则log(2)=1,只需1bit就可表示两种结果
若投色子点数为1, p=1/6, 则log(6)=2.6,只需2.6bit就可表示六种结果。
换种角度来理解,给定一个分布p(x), 随机变量x来自p的分布,其可以用-log(p(x)) bit来编码。
则对于x这个随机变量来自p的所有取值,需要的编码bit数目为

H(p)=Exp[log(p(x))]=xp(x)log(p(x))

然而如果这个随机变量x取自一个分布q,但其实际上属于p分布, 则实际需要的编码bit数目为
H(p)=Exp[log(q(x))]=xp(x)log(q(x))

交叉熵

针对同一个事件,分别用两个概率分布p(代表真实概率)和q(代表模型概率)来度量信息量。交叉熵定义为:

H(p,q)=Ep[1/log(q)]=xp(x)log(q(x))=H(p)+DKL(p||q)

其可用来度量p(假定为给定标签), q(假定为预测值)的相似程度,
H(p)值固定时, 此时H(p,q)等价于 DKL(p||q)
DKL(p||q)=i[plog(pq)]

表示用q来逼近p时信息的损失程度(可以理解为距离,但并不是真正的距离 D(p||q)D(q||p) ), q=0时, p必须为0, p=q时,损失最小

损失函数

交叉熵在机器学习中,一般用来定义损失函数,当这个事件只有两种结果p={y,1-y}, q=y˙,1y˙ ,交叉熵:

H(p,q)=sum1ipilog(qi)=ylog(y˙))(1y)log(1y˙)

则对应于logistic regression的损失函数(计算所有样本 m个的交叉熵平均值)为:
H(p,q)=1mi=1mj=01H(pj,qj)=1mim[yilog(y˙i)+(1yi)log(1y˙i)]=1mi=1m(j=1)1log[pi=j|xi;θ]

其中, y˙i=p(yi=j|xi;θ)=h(xi;θ) ,代表一个样本输出概率值
交叉熵为正数>0, 当实际输出 y˙i 靠近期望的输出 yi 时,交叉熵靠近0.
将其拓展到softmax损失函数的定义为:
J(θ)=1mi=1mj=1k1{yi=j}logeθTjxikl=1eθTlxi+λ2i=1kj=0nθij=1mi=1mj=1k1{yi=j}log[p(yi=j)|xi;θ]+λ2i=1kj=0nθij

θjJ(θ)=1mi=1m[xi(1{yi=j})p(yi=j|xi;θ)]+λθj

交叉熵代价函数的引入,主要是为了弥补二次代价函数的不足,二次代价函数权值和偏置更新需要乘以激活函数的偏导项,而sigmoid函数很容易饱和,饱和时,其偏导数趋向于0,从而导致权值和偏置更新缓慢甚至不跟新,交叉函数其梯度中没有了偏导数,其权值更新速度会更快。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值