softmax损失函数

信息熵

首先我们来介绍一下信息熵。信息熵又叫KL散度,是信息的平均编码长度。给定信息出现的概率向量 p = ( p 1 , p 2 , . . . , p n ) p = (p_1,p_2,...,p_n) p=(p1,p2,...,pn),其中 p i p_i pi为第 i i i条信息出现的概率,那么信息的平均编码长度为 H ( p ) = ∑ i n p i log ⁡ 1 p i H(p)=\sum_i^np_i\log\frac{1}{p_i} H(p)=inpilogpi1。举一个例子,比如现在要用为8个字符进行编码,每个字符出现的概率为 1 / 8 1/8 1/8,用Huffman树可求出最短编码方案,此时的Huffman树为:
Alt
可以计算出各点的深度为 log ⁡ 1 p i \log\frac{1}{p_i} logpi1,再乘上期望求和便是信息熵。当然,公式中 log ⁡ 1 p i \log\frac{1}{p_i} logpi1指的是只看概率 p i p_i pi而不了解其他信息概率时,该信息编码在对应的Huffman树中最大可能达到深度,因为有可能只有两个信息,一个信息出现概率为7/8,另外一个为1/8,这时候的深度就是1。但是无论概率分布是怎么样的,深度不可能超过 log ⁡ 1 p i \log\frac{1}{p_i} logpi1

交叉熵

交叉熵是针对两个概率向量 p p p q q q而言的,公式为 H ( p , q ) = ∑ i = 1 n p i log ⁡ 1 q i H(p,q)=\sum_{i=1}^np_i\log\frac{1}{q_i} H(p,q)=i=1npilogqi1。他指的是在信息出现的概率分布为 p p p的情况下,不用 p p p导出的Huffman树进行编码,而是用另外的一个概率分布 q q q导出的Huffman树进行编码的编码长度,而这种编码方案并不是最优的编码方案, H ( p , q ) ≤ H ( p ) H(p,q)\leq H(p) H(p,q)H(p)

softmax损失函数

接下来我们看如何用交叉熵构建损失函数。比如在多类型分类问题中,对每个类别我们会得到一个评分(可正可负),要使用交叉熵构建损失函数首先要将这些得分转化成概率分布(都是正值)。最著名的方法就是使用softmax。通过softmax可以得到一个概率分布,且是非线性的,更重要的是容易求导。假设得分向量为 z z z,转化后的概率向量为 y y y,那么sofrtmax做的就是令 y i = e z i / ∑ j = 1 n e z j y_i=e^{z_i}/\sum_{j=1}^ne^{z_j} yi=ezi/j=1nezj。之后交叉熵损失函数为 L = ∑ y i ^ log ⁡ 1 y i L=\sum\hat{y_i}\log{\frac{1}{y_i}} L=yi^logyi1,这里 y i y_i yi是网络估计为第i类的概率,而 y i ^ \hat{y_i} yi^是真实的概率分布,一般状况下训练样本属于哪一类是确定的, y ^ \hat{y} y^向量里只有一项是1其他都是0,因此损失函数 L L L最终只会保留求和里面的一项,即 L = log ⁡ 1 y i ^ L=\log{\frac{1}{y_{\hat{i}}}} L=logyi^1,其中 i ^ \hat{i} i^是样本属于的类别。这样的交叉熵损失函数就叫做softmax损失函数。在模型训练过程中就是通过对损失函数求导,用梯度下降降低损失函数,这意味着分布 y y y越接近 y ^ \hat{y} y^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值