2020-12-21

一.交叉熵损失
1.交叉熵是一个信息论中的概念,它原来是用来估算平均编码长度的。给定两个概率分布p和q,通过q来表示p的交叉熵为
在这里插入图片描述
注意,交叉熵刻画的是两个概率分布之间的距离,或可以说它刻画的是通过概率分布q来表达概率分布p的困难程度,p代表正确答案,q代表的是预测值,交叉熵越小,两个概率的分布约接近

那么,在神经网络中怎样把前向传播得到的结果也变成概率分布呢?Softmax回归就是一个非常有用的方法。(所以面试官会经常问你,为什么交叉熵经常要和softmax或者Sigmoid一起使用?)
假设原始的神经网络的输出为,那么经过Softmax回归处理之后的输出为:
在这里插入图片描述
这样就会出现我们所要的概率

1.很多人都在问Softmax和Sigmoid到底有什么区别和联系?
(1)首先Sigmoid是基于单值进行映射,具体来说,就是你想要Sigmoid的一,二,三乃至高阶张量都不会彼此干扰,每个值都会对自己负责!eg: 可以用来二分类
(2)Softmax是基于整个维度上进行映射,具体来说,将你想要的一,二,三乃至高阶张量都会收到彼此的影响,每个值都会收到整体的影响!eg:可以进行多分类
(3)话不多说,咱们来看代码,从下面可以清晰的看出来Sigmoid中每个值是独立的,而Softmax会考虑你所选维度的整体值即和为1

tensor = torch.Tensor([1.0, -1, 0.1, -0.1])
print(torch.sigmoid(tensor))
print(torch.softmax(tensor,dim=0))

在这交叉熵损失会分为二分类交叉熵和多分类交叉熵损失:
多分类交叉熵:在这路由于全部取最高概率则不会出现二分类交叉熵中的分类情况(0,1)

Pytorch实现:

torch.nn.CrossEntropyLoss(weight=None, ignore_index=-100, reduction='mean')

args:weight (Tensor, optional) – 自定义的每个类别的权重. 必须是一个长度为 C 的 Tensor,用来平衡分布不均的数据
ignore_index (int, optional) – 设置一个目标值, 该目标值会被忽略, 从而不会影响到 输入的梯度。
reduction-三个值,none: 不使用约简;mean:返回loss和的平均值; sum:返回loss的和。默认:mean

二分类交叉熵:

Pytorch实现:
(1)torch.nn.BCELoss(weight=None, reduction='mean')2)torch.nn.BCEWithLogitsLoss(weight=None, reduction='mean', pos_weight=None)

上述中(1)是你已经Sigmoid(2)是该损失函数帮你Sigmoid

二.均方差损失
均方差损失函数常用在最小二乘法中。它的思想是使得各个训练点到最优拟合线的距离最小(平方和最小)。均方差损失函数也是我们最常见的损失函数
其中,a代表网络输出结果,之所以用2N是为了BP求导时和平方进行约分便于计算

Pytorch中的实现

torch.nn.MSELoss(reduction='mean')
args:reduction-三个值,none: 不使用约简;mean:返回loss和的平均值; sum:返回loss的和。默认:mean。

三.L1和Smooth-L1损失
对于目标检测中的回归问题,最初大多采用均方误差损失 ∣ ∣ y − f ( z ) ∣ ∣ 2 ||y-f(z)||^2 ∣∣y−f(z)∣∣
2
,这样反向传播对w或者b求导时仍存在 y − f ( z ) y-f(z) y−f(z) 。那么当预测值和目标值相差很大时,就容易造成梯度爆炸

Pytorch中的实现:
torch.nn.L1Loss(reduction='mean')
平滑后的L1损失更加鲁棒
torch.nn.SmoothL1Loss(reduction='mean')

从上面可以看出平滑后的L1损失在梯度太大时会限制到(-1,1)即smooth L1 在 x 较小时,对 x 的梯度也会变小,而在 x 很大时,对 x 的梯度的绝对值达到上限 1,也不会太大以至于破坏网络参数。

四.KL 散度损失
计算 input 和 target 之间的 KL 散度。KL 散度可用于衡量不同的连续分布之间的距离, 在连续的输出分布的空间上(离散采样)上进行直接回归时 很有效.

Pytorch中:
torch.nn.KLDivLoss(reduction='mean')

转载
https://blog.csdn.net/qq_39426225/article/details/103326882?ops_request_misc=&request_id=&biz_id=102&utm_term=%25E6%258D%259F%25E5%25A4%25B1%25E5%2587%25BD%25E6%2595%25B0%25E4%25BB%25A3%25E7%25A0%2581&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-6-103326882.nonecase

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值