Softmax、交叉熵损失、KL散度、多类支撑向量机损失

Softmax

在多分类任务中,神经网络最后一层计算的输出是每个类别的预测分数,为了让使模型输出每个类的概率,Softmax操作子对预测分数求指数,然后归一化。

交叉熵损失与KL散度

交叉熵损失是分类任务中的一种损失函数,用来衡量预测值和真实值这两个分布之间的差异程度。我们先来看几个概念,再来理解交叉熵损失。

假设向量 p 是Softmax之后的预测分布,向量 y 是真实分布,其中 pi,yi 分别是第i个类别的预测分数和真实分数,则:

  • 熵: H ( y ) = − ∑ i y i l o g ( y i ) H(y)=-\sum_iy_ilog(y_i) H(y)=iyilog(yi)
  • 交叉熵: H ( y , p ) = − ∑ i y i l o g ( p i ) H(y,p)=-\sum_iy_ilog(p_i) H(y,p)=iyilog(pi)
  • 相对熵: K L ( y ∣ ∣ p ) = − ∑ i y i l o g p i y i KL(y||p)=-\sum_iy_ilog\frac{p_i}{y_i} KL(y∣∣p)=iyilogyipi,又叫KL散度,度量两个分布之间的不相似性,由于不具有交换性,所以不能叫距离

经过公式推导不难得出三者之间有这样的关系: H ( y , p ) = H ( y ) + K L ( y ∣ ∣ p ) H(y,p)=H(y)+KL(y||p) H(y,p)=H(y)+KL(y∣∣p)。由于分类任务中,真实分布为one-hot形式,即向量y为类似[0,0,1,0,0]T的样子,因此我们能得到以下两点:

(1)H(y)=0,所以 H ( y , p ) = K L ( y ∣ ∣ p ) H(y,p)=KL(y||p) H(y,p)=KL(y∣∣p)

(2) H ( y , p ) = − l o g ( p i ) H(y,p)=-log(p_i) H(y,p)=log(pi),其中i为真实类别

衡量预测值和真实值之间的距离本质上应该使用相对熵,但是由于上面我们已经证明,在y为one-hot形式下,相对熵等于交叉熵,所以我们就直接用更简单的交叉熵作为损失函数,即公式(2)。当真实分布y不是one-hot形式时,就不能使用交叉熵损失。

交叉熵损失 vs 多类支撑向量机损失

多类支撑向量机损失要求预测结果中,正确类别的分数比其它类别的分数都高于1,则损失为0。而交叉熵损失,计算的是真实类别的预测概率的负对数,它要求预测对的概率尽可能大,而不是简单地比较分数。所以理论上交叉熵损失能够使预测结果更准确。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dreamingcoder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值