一文看懂softmax loss

softmax loss

1.softmax函数

softmax函数是一种常用的激活函数,通常用于多分类任务中。给定一个向量,softmax函数将每个元素转化为一个介于0~1之间的概率值,并且所有元素的概率之和为1。softmax函数的定义如下:
softmax ⁡ ( z ) i = e z i ∑ j = 1 K e z j \operatorname{softmax}(z)_i=\frac{e^{z_i}}{\sum_{j=1}^Ke^{z_j}} softmax(z)i=j=1Kezjezi
其中 z z z是输入向量, K K K是向量的维度。softmax函数的作用是将输入的原始分数(通常称之为logits1)转化为表示各个类别概率的分布。

2.交叉熵损失函数

交叉熵损失函数是用来衡量两个概率分布之间的差异性的一种度量方式。在深度学习中,常用交叉熵损失函数来衡量模型预测的概率分布与真实标签的分布之间的差异,从而作为优化目标来训练模型。

对于二分类问题,交叉熵损失函数的定义如下
Binary Cross Entropy Loss = − 1 N ∑ i = 1 N [ y i log ⁡ ( p i ) + ( 1 − y i ) log ⁡ ( 1 − p i ) ] \text{Binary Cross Entropy Loss}=-\frac1N\sum_{i=1}^N\left[y_i\log(p_i)+(1-y_i)\log(1-p_i)\right] Binary Cross Entropy Loss=N1i=1N[yilog(pi)+(1yi)log(1pi)]
其中 y i y_i yi是真实标签, p i p_i pi是模型预测的概率值, N N N是样本数。

对于多分类问题,交叉熵损失函数的定义如下
Cross Entropy Loss = − 1 N ∑ i = 1 N ∑ k = 1 K y i , k log ⁡ ( p i , k ) \text{Cross Entropy Loss}=-\frac1N\sum_{i=1}^N\sum_{k=1}^Ky_{i,k}\log(p_{i,k}) Cross Entropy Loss=N1i=1Nk=1Kyi,klog(pi,k)
其中 y i , k y_{i,k} yi,k是第 i i i 个样本属于第 k k k 个类别的真实标签, p i , k p_{i,k} pi,k 是模型预测的第 i i i 个样本属于第 k k k 个类别的概率值, N N N 是样本数, K K K 是类别数。

3.softmax loss损失函数(重点)

softmax loss是深度学习中最常见的损失函数,完整的叫法为 Cross-entropy loss with softmax。softmax loss 由Fully Connected Layer,Softmax Function和Cross-entropy Loss组成。

Alt

softmax loss就是将softmax函数和交叉熵损失函数结合在了一起
Softmax Loss = − 1 N ∑ i = 1 N ∑ k = 1 K y i , k log ⁡ ( exp ⁡ ( z i , k ) ∑ j = 1 K exp ⁡ ( z i , j ) ) \text{Softmax Loss}=-\frac1N\sum_{i=1}^N\sum_{k=1}^Ky_{i,k}\log\left(\frac{\exp(z_{i,k})}{\sum_{j=1}^K\exp(z_{i,j})}\right) Softmax Loss=N1i=1Nk=1Kyi,klog(j=1Kexp(zi,j)exp(zi,k))
其中 y i , k y_{i,k} yi,k 是第 i i i 个样本属于第 k k k 个类别的真实标签,当样本 i i i 属于类别 k k k 时, y i , k = 1 y_{i,k}=1 yi,k=1;否则, y i , k = 0 y_{i,k}=0 yi,k=0 z i , k z_{i,k} zi,k 是样本 i i i 关于类别 k k k 的得分logits, N N N 是样本数, K K K 是类别数。

4.带有temperature参数的softmax loss

带有温度参数 T T T 的 softmax loss的损失函数如下:
Loss = − 1 N ∑ i = 1 N ∑ k = 1 K y i , k log ⁡ ( exp ⁡ ( z i , k / T ) ∑ j = 1 K exp ⁡ ( z i , j / T ) ) \text{Loss}=-\frac1N\sum_{i=1}^N\sum_{k=1}^Ky_{i,k}\log\left(\frac{\exp(z_{i,k}/T)}{\sum_{j=1}^K\exp(z_{i,j}/T)}\right) Loss=N1i=1Nk=1Kyi,klog(j=1Kexp(zi,j/T)exp(zi,k/T))

参考

1.Large-Margin Softmax Loss for Convolutional Neural Networks

2.Softmax Loss推导过程以及改进

3.深度学习中的温度参数(Temperature Parameter)是什么?

😃😃😃


  1. logits就是一个向量,该向量下一步通常被输入到激活函数中,如softmax、sigmoid中。 ↩︎

  • 28
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
softmax loss是一种常用的损失函数,它主要用于多分类任务中,特别适用于神经网络模型的训练。在PyTorch中,可以使用torch.nn.CrossEntropyLoss来实现softmax losssoftmax loss的目标是将输入的预测概率分布与真实标签的概率分布进行比较,通过最小化两者之间的交叉熵损失来优化模型。 具体实现softmax loss的步骤如下: 1. 首先,将模型的输出通过softmax函数转换为概率分布,使得各个类别的概率值在0到1之间,并且概率之和为1。 2. 然后,将真实标签转换为one-hot编码形式的向量。 3. 最后,计算模型输出与真实标签之间的交叉熵损失。 在PyTorch中,可以使用torch.nn.CrossEntropyLoss函数来计算softmax loss。这个函数会自动进行softmax操作,并且接受模型输出和真实标签作为输入。它会将模型输出转换为概率分布,并计算与真实标签之间的交叉熵损失。 以下是一个使用softmax loss的简单示例代码: ``` import torch import torch.nn as nn # 模型输出 outputs = torch.tensor([[0.2, 0.3, 0.5], [0.8, 0.1, 0.1]]) # 真实标签 targets = torch.tensor([2, 0]) # 定义softmax loss loss_fn = nn.CrossEntropyLoss() # 计算损失 loss = loss_fn(outputs, targets) print(loss) ``` 这段代码中,模型输出`outputs`是一个2x3的张量,表示两个样本在三个类别上的预测概率。真实标签`targets`是一个长度为2的张量,表示两个样本的真实类别。通过调用`nn.CrossEntropyLoss()`函数并传入模型输出和真实标签,即可计算出softmax loss

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值