深度学习系列36:交叉熵笔记

1 熵

出现概率p越高的信息,编码长度L越短。这样的话,总的编码长度能够最小化。
L与p之间的关系可以用下图的二分搜索来展示。概率为p的实体,对应的编码长度为 log ⁡ 2 1 / p \log_2{1/p} log21/p能够将期望编码长度最小化。
在这里插入图片描述
熵则是编码长度的期望: H = − p log ⁡ 2 p H = -p\log_2{p} H=plog2p

2 交叉熵和KL散度

交叉熵用来计算非最优分布的期望编码长度
在这里插入图片描述
与最优编码之间的差值称为KL散度: D q ( p ) = H q ( p ) − H ( p ) D_q(p)=H_q(p)-H(p) Dq(p)=Hq(p)H(p)

一般预测模型中会使用softmax函数将列表转化为概率分布,用来计算交叉熵。

3. 交叉熵损失

二分类问题:假设我们有一堆猫和不是猫的图片,我们用 [ p 猫 , p 不 是 猫 ] [p_{猫}, p_{不是猫}] [p,p]的onehot表示作为输出。
针对一张猫的图片,真实的onehot应该是 [ 1 , 0 ] [1, 0] [1,0],因此交叉熵为: − l o g ( p 猫 ) -log (p_{猫}) log(p)
针对一张不是猫的图片,真实的onehot应该是 [ 0 , 1 ] [0, 1] [0,1],因此交叉熵为: − l o g ( 1 − p 猫 ) -log (1-p_{猫}) log(1p)
把所有图片求平均即可,可以表示为: − Σ i ( y i l o g p i + ( 1 − y i ) l o g ( 1 − p i ) ) / n -\Sigma_i (y_ilogp_i+(1-y_i)log(1-p_i))/n Σi(yilogpi+(1yi)log(1pi))/n,其中 y i y_i yi是标签(真的猫为1,假的猫为0)。
在二分类问题下的交叉熵损失又称为BCE-Loss。

我们来看下GAN中的判别损失:
第一步是训练判别器D,真实图片的损失为 − E ( l o g D ) -E(logD) E(logD),假图片的损失为 − E ( 1 − l o g D ( G ) ) -E(1-logD(G)) E(1logD(G))
第二步是训练生成器G,目标是经过D后被判别为真的,因此损失为 − E ( l o g ( D ( G ) ) ) -E(log(D(G))) E(log(D(G)))

4. InfoNCE

如果类别特别多,要计算softmax的话会非常耗时,因此改成NCE损失。抽象来说,就是:
原先要计算N分类的概率列表然后结合标签计算交叉熵,现在改成计算标签和预测结果是否匹配的2分类问题(负样本需要随机采样)。
InfoNCE则是将采样出来的k个负样本还是看做k个类,计算交叉熵。InfoNCE loss的任务是一个k+1类的分类任务,目的就是想把样本图片分到标签这个类里。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值