常用损失函数

常用简单损失函数汇总

损失函数的作用:简单来说损失函数就是用来**衡量模型模型预测的好坏。**损失函数可以很好得反映模型与实际数据差距的工具,真实值与预测值差别越大,Loss越大,我们的优化的目标就是减小Loss

1.Cross Entropy Loss(CE、交叉熵损失,常用于分类任务中)

(16条消息) Pytorch 的损失函数Loss function使用详解_Wanderer001的博客-CSDN博客

(16条消息) 交叉熵损失函数原理详解_Cigar-CSDN博客_交叉熵损失函数

交叉熵损失,也叫Log Loss(两者等价,标签为{-1, 1}时为log loss, 标签为{0, 1}时为交叉熵)

信息量:某事件发生的概率越大,所包含的信息量越小,比如”太阳从东边升起“,这句话就更废话一样没什么信息量。反之不确定性因素越大,信息量也越大,比如”2022年中国队成功进入世界杯“,这句话包含的信息量就比较大。计算公式:
I ( X ) = − l o g ( P ( x ) ) I(X)=-log(P(x)) I(X)=log(P(x))
这里$I(x) 表 示 信 息 量 , 表示信息量, P(X)$表示事件发生的概率。

信息熵:表示所有信息量的期望
H ( x ) = − ∑ i = 1 n P ( x 1 ) l o g ( P ( x 1 ) ) H(x)=-\sum_{i=1}^{n}P(x_{1})log(P(x_1)) H(x)=i=1nP(x1)log(P(x1))
对于只有两种可能的事件比如掷硬币,二分类问题熵的计算方式:
H ( x ) = − ∑ i = 1 n P ( x 1 ) l o g ( P ( x 1 ) ) = − P ( X ) l o g ( P ( X ) ) − ( 1 − P ( X ) l o g ( 1 − P ( x ) ) H(x)=-\sum_{i=1}^{n}P(x_{1})log(P(x_1))=-P(X)log(P(X))-(1-P(X)log(1-P(x)) H(x)=i=1nP(x1)log(P(x1))=P(X)log(P(X))(1P(X)log(1P(x))
相对熵(KL散度):描述两个概率分布之间的差异
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g ( p ( x i ) / q ( x i ) ) D_{KL}(p||q)=\sum_{i=1}^{n}p(x_i)log(p(x_i)/q(x_i)) DKL(pq)=i=1np(xi)log(p(xi)/q(xi))
交叉熵

将相对熵中 l o g ( p ( x i ) / q ( x i ) ) log(p(x_i)/q(x_i)) log(p(xi)/q(xi))拆开为: l o g ( p ( x i ) ) − l o g ( q ( x i ) ) log(p(x_i))-log(q(x_i)) log(p(xi))log(q(xi))
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g ( p ( x i ) / q ( x i ) ) D_{KL}(p||q)=\sum_{i=1}^{n}p(x_i)log(p(x_i)/q(x_i)) DKL(pq)=i=1np(xi)log(p(xi)/q(xi))

= ∑ i = 1 n p ( x i ) l o g ( p ( x i ) ) − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) =\sum_{i=1}^{n}p(x_i)log(p(x_i))-\sum_{i=1}^{n}p(x_i)log(q(x_i)) =i=1np(xi)log(p(xi))i=1np(xi)log(q(xi))

= − H ( p ( x ) ) + [ − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) ] =-H(p(x))+[-\sum_{i=1}^{n}p(x_i)log(q(x_i))] =H(p(x))+[i=1np(xi)log(q(xi))]

不难看出前者为信息熵,后者为交叉熵。KL散度 = 交叉熵 - 信息熵

交叉熵公式:
H ( p , q ) = [ − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) ] H(p,q)=[-\sum_{i=1}^{n}p(x_i)log(q(x_i))] H(p,q)=[i=1np(xi)log(q(xi))]

在机器学习训练网络时,输入数据与标签常常已经确定,那么真实概率分布 P ( x ) P ( x ) P(x)也就确定下来了,所以信息熵在这里就是一个常量。由于KL散度的值表示真实概率分布$P ( x ) 与 预 测 概 率 分 布 与预测概率分布 Q ( x ) $之间的差异,值越小表示预测的结果越好,所以需要最小化KL散度,而交叉熵等于KL散度加上一个常量(信息熵),且公式相比KL散度更加容易计算,所以在机器学习中常常使用交叉熵损失函数来计算loss就行了。

2.Contrastive Loss(对比损失)

(16条消息) 深度学习方法(十九):一文理解Contrastive Loss,Triplet Loss,Focal Loss_Bin 的专栏-CSDN博客

增大类间差异并且减小类内差异

这种损失函数可以有效的处理孪生神经网络中的paired data的关系。

欧氏距离:欧式距离表示两个文本向量在空间之间的距离,如果距离很小说明样本相似;反过来,两个文本越相似,那么它们之间的欧式距离越小;以三维空间为例
A ( x 1 , y 1 , z 1 ) 、 B ( x 2 , y 2 , z 3 ) 的 欧 氏 距 离 d 为 : A(x_1,y_1,z_1)、B(x_2,y_2,z_3)的欧氏距离d为: A(x1,y1,z1)B(x2,y2,z3)d

d = ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 + ( z 2 − z 1 ) 2 d=\sqrt{(x_2-x_1)^2+(y_2-y_1)^2+(z_2-z_1)^2} d=(x2x1)2+(y2y1)2+(z2z1)2

对比损失表达式:
L = 1 / 2 N ∑ n = 1 N y d 2 + ( 1 − y ) [ m a x ( m a r g i n − d , 0 ) ] 2 L=1/2N\sum_{n=1}^{N}yd^2+(1-y)[max(margin-d,0)]^2 L=1/2Nn=1Nyd2+(1y)[max(margind,0)]2
当y=1(即样本相似)时,损失函数只剩下 L = 1 / 2 N ∑ n = 1 N y d 2 L=1/2N\sum_{n=1}^{N}yd^2 L=1/2Nn=1Nyd2,即原本相似的样本,如果在特征空间的欧式距离d较大,则说明当前的模型不好,计算出损失L大。而当y=0时(即样本不相似)时,损失函数为 ( 1 − y ) [ m a x ( m a r g i n − d , 0 ) ] 2 (1-y)[max(margin-d,0)]^2 (1y)[max(margind,0)]2,即当样本不相似时,其特征空间的欧式距离反而小的话,模型不好,计算出损失值L大;这也正好符号我们的要求即模型不好时损失L要大。其中margin是一个超参,相当于是给loss定了一个上届(margin平方),如果d大于等于margin,那么说明已经优化的很好了,loss=0了。

3.Mean Squared Error(均方误差损失)

均方差损失函数是预测数据和原始数据对应点误差的平方和的均值。

M S E = 1 / N ( y ′ − y ) 2 MSE=1/N(y'-y)^2 MSE=1/N(yy)2

一般不配合sigmoid函数使用,而交叉熵损失函数一般可以配合sigmoid和softmax函数使用。

4.Mean Absolute Error(平均绝对误差)
M A E = 1 / N ∑ i = 1 N ∣ y i − f ( x i ) ∣ MAE=1/N\sum_{i=1}^{N}|y^i-f(x^i)| MAE=1/Ni=1Nyif(xi)
平均绝对误差常用于回归任务中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ee-redbull

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值