损失函数之交叉熵

基本概念

        分类问题希望解决的是将不同的样本分到事先定义好的类别中。对于单个输出节点的神经网络,当这个节点的输出越接近0时,这个样本越有可能是不合格的;反之如果输出越接近1,则这个样本越有可能是合格的。然而这样的做法并不容易推广到多分类的问题。通过神经网络解决多分类问题最常用的方法是设置n个输出节点,其中n为类别的个数。对于每个样例,神经网络可以得到的一个n维数组作为输出结果。数组中的每一个维度(也就是每一个输出节点)对应一个类别。在理想情况下,如果一个样本属于类别k,那么这个类别所对应的输出节点的输出值应该为1,而其他节点的输出都为0。以识别数字1为例,神经网络模型的输出结果越接近[0,1,0,0,0,0,0,0,0,0]越好。那么如何判断一个输出向量和期望向量有多接近?交叉熵(cross entropy)是常用的评判方法之一。交叉熵刻画了两个概率分布之间的距离,它是分类问题中使用比较广的一种损失函数。
        交叉熵是一个信息论中的概念,它原本是用来估算平均编码长度的。给定两个概率分布p和q,通过q来表示p的交叉熵:
在这里插入图片描述
交叉熵刻画的是两个概率分布之间的距离,然而神经网络的输出却不一定是一个概率分布。概率分布刻画了不同事件发生的概率。当事件总数有限的情况下,概率分布函数p(X=x)满足:
在这里插入图片描述
        如何将神经网络前向传播得到的结果变成概率分布?Softmax回归就是一个非常常用的方法。Softmax回归本身可以作为一个学习算法来有优化分类结果,但是Tensorflow中,Softmax回归的参数被去掉了,它只是一层额外的处理层,将神经网络的输出变成一个概率分布。加上Softmax回归的神经网络结构图。
在这里插入图片描述
在这里插入图片描述

        因为交叉熵一般会与softmax回归一起使用,所以Tensorflow对这两个功能进行了统一的封装,提供了tf.nn.softmaax_cross_entropy_with_logits函数。比如可以直接通过以下代码来实现使用了softmax回归之后的交叉熵损失函数。

cross_entropy = tf.nn.softmaax_cross_entropy_with_logits(labels=y_,
     logits=y)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值