损失函数约束类间不一致性

损失函数约束类间不一致性及类内一致性

参考书籍:Python深度学习-基于PyTorch
交叉熵损失函数对不同类之间的距离的区分性较小。原因:softmax具备分类能力但是不具备度量学习的特征,没法压缩同一类别。因此,研究者们提出了几种损失函数。
(1)三元组损失Triplet loss
三元组损失属于度量学习,通过计算两张图象之间的相似度,使得输入图像被归入到相似度大的图像类别中去。
L t = ∑ [ ∥ f ( x i a ) − f ( x i p ) ∥ 2 2 − ∥ f ( x i a ) − f ( x i n ) ∥ 2 2 + α ] + L_t=\sum [\left \| f(x_{i}^{a}) -f(x_{i}^{p}) \right \|_{2}^{2}-\left \| f(x_{i}^{a}) -f(x_{i}^{n}) \right \|_{2}^{2}+\alpha ]_{+} Lt=[f(xia)f(xip)22f(xia)f(xin)22+α]+
∑ \sum 表示一个batch内所有图像的损失和, x i a 、 x i p 、 x i n x_{i}^{a}、x_{i}^{p}、x_{i}^{n} xiaxipxin为每次从训练数据中去除的3张图像,前两项为同一类,第三项为不同类。||表示欧式距离。 [ ] + []_{+} []+表示当括号内值大于0时,为括号内值,否则取0。
优点:使用量化学习解决特征表示的类别间距问题;缺点:在训练过程中,对元组的选择的要求的技巧较高,而且要求数据集比较大。
(2)中心损失Center Loss
Center Loss用于压缩同一类别,为每个类别提供一个类别中心,最小化每个样本与其类别中心的距离。
L c = ∑ ∥ x i − c y i ∥ 2 2 L_c=\sum\|x_i-c_{y_i}\|_2^2 Lc=xicyi22。其中, x i x_i xi为一个样本, y i y_i yi为对应样本类别, c y i c_{y_i} cyi为该类别中心。该损失函数可较好的解决类间内聚性。利用中心损失的同时,一般还会加上softmax损失以保证类间的可分性。所以,最终的损失函数包括softmax损失和中心损失。 L = λ × L c + L s o f t m a x L=\lambda \times L_c+L_{softmax} L=λ×Lc+Lsoftmax.其中, λ \lambda λ用于平衡两种损失函数,该权重越大,生成的特征就会越具有内聚性。优点:训练得到的特征具有内聚性;缺点:当类别数目较多时(>10000)时,内存消耗大,对GPU的要求非常高。
(3)ArcFace损失additive angular margin loss该损失函数使用归一化的网络权重和偏差来计算损失函数,对原输出 ω y i T x i + b y i \omega_{y_i}^Tx_i+b_{y_i} ωyiTxi+byi可转化为 ∣ ω y i ∣ ⋅ ∣ x i ∣ ⋅ c o s ( θ ) |\omega_{y_i}|\cdot|x_i|\cdot cos(\theta) ωyixicos(θ), θ \theta θ ω y i , x i \omega_{y_i},x_i ωyi,xi之间的角度。对输出归一化为 s ⋅ ( c o s ( θ y i ) + m ) s\cdot(cos(\theta_{y_i})+m) s(cos(θyi)+m)得到新的损失函数为
arcloss优点:不仅对权重进行了正则化,对特征也进行了正则化。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值