【深度学习】详解 Softmax Cross Entropy Loss

目录

一、Softmax 

二、Cross Entropy Loss

三、Softmax Cross Entropy Loss


一、Softmax 

        Softmax 激活函数 常接在神经网络最后一层之后,以用于分类任务。相比于 Sigmoid 只能用于二分类,Softmax 还可用于多分类

        当然,这并不意味着 Softmax 总是优于 Sigmoid,还需要具体情况具体分析。例如,Softmax 在调整数值范围时,会影响数值间的相对关系,故有时各自独立约束数值范围的 Sigmoid 会更受欢迎。

        通常,Softmax 用于所有 预测值 (logits) 转换为 预测概率值 (probs),并约束在有意义的 (0, 1] 范围之间,且概率值之和为 1。

        例如,第 i 个类别的样本预测值 (logit) z_i,经 Softmax 得到的预测概率值 (prob) y_i 为:

        由于网络输出的预测值可能存在负值,故采用 指数处理,使得预测值总大于 0,既得到了符合实际意义的 (0, 1] 概率范围,又统一了量纲便于比较

        此外,由于是指数运算,往往也会因网络预测值过大造成 指数溢出 的情况 ,如 e^{66} 等就 指数爆炸 了。

        因此,通常还需增加一个数值处理,即 令每个预测值先减去最大预测值,再进行指数运算。例如,第 i 个类别的预测值 z_i 经 Softmax 处理和去最大值处理后,得到的预测概率值 y_i^{'} 为:

        为方便起见,后续说明仍使用未经减去最大预测值处理的 Softmax。


二、Cross Entropy Loss

注:上图的 CELoss 仅作用于黄色背景的预测概率值 y 及其 target,蓝色背景的 Softmax 并不属于 CELoss 

        在 单标签多分类 任务中,常用 交叉熵损失 (Cross Entropy Loss) 作为损失函数。

        设在某个 m 分类问题下,模型对第 i 个样本的 预测值 (logits) 为 z_i,经 Softmax 得到 预测概率值 (probs) 为 y_i,其 GroundTruth / Label / Target 为 \hat{y_i} \in C = \{ C_1, C_2, ... C_m \},则 第 i 个样本的交叉熵损失 L_{CE}^{i} 为 (如上图例子所示):

        注意,当使用 One-Hot 编码时可知,只有当前第 i 个样本的预测概率值 y_i 及其对应的真实标签为 \hat{y_i} = 1,故该项损失为L = -logy_i;而其余项因 \hat{y_j}=0, j \neq i 计算损失时均为 0。因此,单标签多分类任务下,每个样本仅属于一个类别,即只有一项损失不为 0。那么,第 i 个样本的交叉熵损失 L_{CE}^{i} 实际可表示为:

        因此,设 batch size = N,则 一个 batch 的交叉熵损失 L_{CE} 可表示为:


三、Softmax Cross Entropy Loss

        紧接上节,若将网络最后一个全连接层的 Softmax 操作单独提取出来,可得到针对 一个 batch 的预测值 (logit) z_i, i \in \{1,2,...N\} (而非预测概率值) 的 Softmax Loss 为

        举个例子,设在某三分类问题下 C = \{C_1, C_2, C_3\}, \left | C \right | = 3,对某一模型输入 N = 2 的 batch。

        其中样本 1 的模型预测值 z_1 = [0.3, 0.4, 0.8]^T, \hat{z_1} = C_1z_2 = [0.5, 0.7, 0.1]^T, \hat{z_2} = C_2,那么该 batch 的 Softmax Loss 为:

        实际操作中,通常会在网络最后一层接一个 Softmax,很多 paper 将 传统 Softmax loss 表示为如下形式:

        其中,W_j 和 b_j 是网络最后一个全连接层的第 j 个权重和偏置;W_{C_i} 和 b_{C_i} 则是馈入的深层特征 x_i 的 GT / Target / Label C_i 所对应的权重和偏置,简称 Target 权重 和 Target 偏置。

        简言之,Softmax Loss SoftmaxCross Entropy Loss 的关系是:将网络输出的预测值 (logit) 先用使用 Softmax 转换为预测概率值 (probs),再传入 Cross Entropy Loss 计算,就得到了最终的 Softmax Loss

        换言之,Softmax Cross Entropy Loss = Softmax + Cross Entropy Loss

  • 30
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值