分类中交叉熵损失函数的推导

        一般我们在做分类任务中会在模型的最后加入一层softmax去预测样本对于每个类别的概率,然后通过交叉熵损失函数去计算loss,但是交叉熵损失函数为什么能让模型work呢?为什么计算交叉熵损失函数时要把样本标签变成一个one-hot向量呢?下面我们就来讨论一下。

        首先我们来描述一下问题:X=\left \{ (x_i,y_i) \right \}_{1}^{N}表示真实分布中N个样本,x_i表示其中的一个随机变量,y_i\epsilon \left \{ 1,2,... ,M\right \}表示随机变量x_i的类别标签,M表示总共有M个类别,求新采样的样本 x_{N+1}属于哪一个类别?

        对于这个分类问题,我们一般希望构建一个概率模型,这个概率模型会预测样本在M个类别上的概率,那么M个概率中最大的那个类别标签就是样本的标签。假设q_\phi (c|x)就是我们要构建的概率模型,\phi为模型中需要学习的参数,x为输入的样本,c\epsilon \left \{1,2,3,...,M \right \}为类别标签变量,再假设p(c|x)为样本x在所有类别标签上的真实条件概率分布。下面我们希望概率模型q_\phi (c|x)尽可能的与真实分布p(c|x)接近,很容易想到KL散度就可以刻画这两个分布的接近程度:

D_{KL}(p(c|x)||q_\phi (c|x))=E_{p(c|x)}p(c|x)-E_{p(c|x)}q_\phi (c|x) 

由于真实分布是恒定的,所以右边第一项是一个常数,最小化KL散度相当于最小化右边第二项,所以目标函数变为:

L_\phi (x)=-E_{p(c|x)}q_\phi (c|x)

由于变量c是离散的,所以目标函数展开有:

L_\phi (x)=-\sum _{c=1}^{M}p(c|x)q_\phi (c|x)

这就是我们大名鼎鼎的交叉熵损失函数了,下面对这个损失函数进行一下说明。求和里面第一项p(c|x)表示样本x属于c类别的真实概率,在真实样本-标签中,如果x_i属于y_i类别,那么该样本对应的y_i类别概率为1,即p(y_i|x_i)=1,在其他类别上的概率为0,所以计算交叉熵损失函数时要把样本标签变成一个one-hot向量,为1的分量表示该样本属于该类别的概率为1,否则为0。最后最小化上面的目标函数,就可以求出我们模型的参数了。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值