损失函数---交叉熵,及tesorflow与keras中的实现

交叉熵基本概念

参考:https://www.jianshu.com/p/47172eb86b39
在这里插入图片描述

参考链接:https://www.jianshu.com/p/47172eb86b39

如何计算多分类交叉熵

在机器学习中,将ground truth当作一个分布(P),将预测作为另一个分布(q),假设有cnum个类别(三分类问题cnum=3, 四分类问题cnum=4),那么就有:

H ( p , q ) = − ∑ i = 1 c n u m p ( c i ) log ⁡ q ( c i ) H(p, q)=-\sum_{i=1}^{cnum} p\left(c_{i}\right) \log q\left(c_{i}\right) H(p,q)=i=1cnump(ci)logq(ci)

例子:
假设有一个三分类问题,某个样例的正确答案是(1,0,0)。某模型经过Softmax回归之后的预测答案是(0.5,0,4,0.1),那么这个预测和正确答案直接的交叉熵是:
H ( ( 1 , 0 , 0 ) , ( 0.5 , 0.4 , 0.1 ) ) = − ( 1 × log ⁡ 0.5 + 0 × log ⁡ 0.4 + 0 × log ⁡ 0.1 ) ≈ 0.3 \mathrm{H}((1,0,0),(0.5,0.4,0.1))=-(1 \times \log 0.5+0 \times \log 0.4+0 \times \log 0.1) \approx 0.3 H((1,0,0),(0.5,0.4,0.1))=(1×log0.5+0×log0.4+0×log0.1)0.3

如果另外一个模型的预测是(0.8,0.1,0.1),那么这个预测值和真实值的交叉熵是:
H ( ( 1 , 0 , 0 ) , ( 0.8 , 0.1 , 0.1 ) ) = − ( 1 × log ⁡ 0.8 + 0 × log ⁡ 0.1 + 0 × log ⁡ 0.1 ) ≈ 0.16 \mathrm{H}((1,0,0),(0.8,0.1,0.1))=-(1 \times \log 0.8+0 \times \log 0.1+0 \times \log 0.1) \approx 0.16 H((1,0,0),(0.8,0.1,0.1))=(1×log0.8+0×log0.1+0×log0.1)0.16

从直观上可以很容易知道第二个答案要优于第二个。通过交叉熵计算得到的结果也是一致的(第二个交叉熵的值更小)。

-----------------------------------------------------------------------------------------------------华丽的分割线--------------------

深入理解交叉熵函数及其在tensorflow和keras中的实现

https://www.cnblogs.com/hutao722/p/9761387.html
在这里插入图片描述

---------------------------分割线---------------------
参考:https://www.jianshu.com/p/47172eb86b39
在这里插入图片描述

由于sparse_softmax_cross_entropy_with_logits 不采用one_hot编码,所以不能体现多分类的概率分布 (只能指定为某一个类别,而不能体现为[0.2,0.7,0.1]这样的概率分布)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值