损失函数约束类间不一致性
损失函数约束类间不一致性及类内一致性
参考书籍: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 ]_{+}L
t
=∑[∥f(x
i
a
)−f(x
i
p
)∥
2
2
−∥f(x
i
a
)−f(x
i
n
)∥
2
2
+α]
+
∑ \sum∑表示一个batch内所有图像的损失和,x i a 、 x i p 、 x i n x_{i}^{a}、x_{i}^{p}、x_{i}^{n}x
i
a
、x
i
p
、x
i
n
为每次从训练数据中去除的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^2L
c
=∑∥x
i
−c
y
i
∥
2
2
。其中,x i x_ix
i
为一个样本,y i y_iy
i
为对应样本类别,c y i c_{y_i}c
y
i
为该类别中心。该损失函数可较好的解决类间内聚性。利用中心损失的同时,一般还会加上softmax损失以保证类间的可分性。所以,最终的损失函数包括softmax损失和中心损失。L = λ × L c + L s o f t m a x L=\lambda \times L_c+L_{softmax}L=λ×L
c
+L
softmax
.其中,λ \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}ω
y
i
T
x
i
+b
y
i
可转化为∣ ω y i ∣ ⋅ ∣ x i ∣ ⋅ c o s ( θ ) |\omega_{y_i}|\cdot|x_i|\cdot cos(\theta)∣ω
y
i
∣⋅∣x
i
∣⋅cos(θ),θ \thetaθ 为ω y i , x i \omega_{y_i},x_iω
y
i
,x
i
之间的角度。对输出归一化为s ⋅ ( c o s ( θ y i ) + m ) s\cdot(cos(\theta_{y_i})+m)s⋅(cos(θ
y
i
)+m)得到新的损失函数为
优点:不仅对权重进行了正则化,对特征也进行了正则化。
————————————————
版权声明:本文为CSDN博主「lovely_smile」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lovely_smile/article/details/109404895
损失函数约束类间不一致性相关推荐
- 迁移学习领域自适应:具有类间差异的联合概率最大平均差异
©PaperWeekly 原创 · 作者|张玮玮 学校|东北大学硕士生 研究方向|情感识别 论文标题:Discriminative Joint Probability Maximum Mean Dis ...
- 类间关系有很多种 UML
类间关系有很多种 UML 快速总结: 详情: 类间关系有很多种,在大的类别上可以分为两种:纵向关系.横向关系. 纵向关系就是继承关系 泛化(generalization): 实现(realizatio ...
- 线性判别分析(Linear Discriminant Analysis, LDA)(含类内散度矩阵 类间散度矩阵 全局散度矩阵推导
LDA算法概述: 线性判别式分析(Linear Discriminant Analysis, LDA),也叫做Fisher线性判别(Fisher Linear Discriminant ,FLD),是 ...
- 类间样本数量不平衡对分类模型性能的影响问题
我在做人脸检测试验的时候,发现了问题,别人的二分类器(判别是不是人脸)的阈值很高,大于90%点概率,而我的阈值要设置的很低10%点概率即认为是脸,经过观察,我的负样本数数量上比正样本数多的太多了,导致 ...
- 图像二值化----otsu(最大类间方差法、大津算法)(二)
转自:http://blog.stevenwang.name/ostu-threshold-56002.html OTSU算法也称最大类间差法,有时也称之为大津算法,被认为是图像分割中阈值选取的最佳算 ...
- OTSU算法(也称最大类间差法,有时也称之为大津算法)
在图像处理应用中二值化操作是一个很常用的处理方式,例如零器件图片的处理.文本图片和验证码图片中字符的提取.车牌识别中的字符分割,以及视频图像中的运动目标检测中的前景分割,等等. 较为常用的图像二值化方 ...
- 图像二值化之最大类间方差法(大津法,OTSU)
参考文章1:图像二值化与otsu算法介绍 参考文章2:python opencv cv2.threshold() (将固定级别的阈值应用于每个数组元素)ThresholdTypes 最大类间方差法(大 ...
- Ostu最大类间差方法
Ostu方法又名最大类间差方法,通过统计整个图像的直方图特性来实现全局阈值T的自动选取,其算法步骤为: 1) 先计算图像的直方图,即将图像所有的像素点按照0~255共256个bin,统计落在每个bin ...
- 【机器视觉学习笔记】大津法/Otsu最大类间方差法 最佳阈值处理(C++)
目录 概念 C++源码 OtsuThreshold 主函数 效果 完整源码 平台:Windows 10 20H2 Visual Studio 2015 OpenCV 4.5.3 本文所用源码修改自C+ ...
最新文章
- 英伟达颠覆CPU!Arm架构专为AI而生,性能超x86十倍
- c语言字符串文库总结,C语言字符串.ppt
- js(小程序或JavaScript)中[]、{}、()区别
- lucene学习笔记_学习Lucene
- Java学习的5个阶段,助大家步步攀升
- 解析Tensorflow官方PTB模型的demo
- SpringBoot的@Conditional和自动配置类生效
- 关于“WARN: SQL Error: 1366, SQLState: HY000”错误的解决方案
- 枚举编写单例是可以保证在多线程中的安全性
- 用ajax向处理页面传送路径问题解决方法
- pc电脑上浏览手机网站在线wap浏览器或模拟器软件
- java实现IP归属地查询
- js-页面需展示大量图片时,采用lyz.delayLoading.min.js,图片在屏幕时加载显示
- laytpl--前端数据绑定 (示例)
- golang bilibili直播弹幕姬
- VScode下使用MySQL
- 高性能的随机数算法std::mt19937
- Linux之ELF文件初探 ---(elf源码)
- 微信小程序-----身份证校验
- LeetCode189.轮转数组
热门文章
- oracle增量备份如何恢复,【Oracle】增量备份和全库备份怎么恢复数据库
- php函数默认参数不传值报错,php 关于函数参数的默认值
- fpga如何约束走线_FPGA中的CLOCK REGION和SLR是什么含义
- 编程求文件file1中数据的平均值,并将其与平均值最接近的数删除
- 如何基于Kubernetes构建完整的DevOps流水线
- Android——与查询联系人相关的3张表
- node.js——麻将算法(六)简易版麻将出牌AI1.0
- SQL Server 2012入门T-SQL基础篇:(1)环境准备
- Android--MP3播放器MediaPlayer
- mysql prepare原理