SimCSE构造正负样本对与损失
引言
思考了半天苏神的SimCSE(https://github.com/bojone/SimCSE/blob/main/eval.py),遂记录在此,帮助有需要的同学理解。
原文无监督方法
在原文的a图中,我们可以知道在一个batch中,输入的n个文本都是不相关的,而正样本对是通过对相同样本dropout2次得到的,每一次使用不同的dropout mask。
正负样本对构造方法
我们可以发现,在生成样本数据的时候,每一个相同的样本连续生成了2次,由于每个样本使用的dropout mask不一样,因此在一个minibatch中,连续的两个样本形成正样本对,非连续的样本对形成负样本对
SimCSE损失
def simcse_loss(y_true, y_pred):"""用于SimCSE训练的loss"""# 构造标签idxs = K.arange(0, K.shape(y_pred)[0])idxs_1 = idxs[None, :]idxs_2 = (idxs + 1 - idxs % 2 * 2)[:, None]y_true = K.equal(idxs_1, idxs_2)y_true = K.cast(y_true, K.floatx())# 计算相似度y_pred = K.l2_normalize(y_pred, axis=1)similarities = K.dot(y_pred, K.transpose(y_pred))similarities = similarities - tf.eye(K.shape(y_pred)[0]) * 1e12similarities = similarities * 20loss = K.categorical_crossentropy(y_true, similarities, from_logits=True)return K.mean(loss)
核心的损失代码如上所示,上述代码想要构造出如下的正确标签:
我们可以通过构建一个0到n的数组,并将两两前后反转的方式,得到上述正确标签:
这是上述代码y_true的构造方式,由于我们不需要自己与自己相似度,即对角线上的值,因此采用将logits置为负无穷,使得其指数为0,对损失无影响,similarities = similarities - tf.eye(K.shape(y_pred)[0]) * 1e12
。
对比损失
对比损失的核心公式如图所示,其本质上是一个交叉熵损失:
C E = − l o g e t ∑ i e i CE = -log\frac{e^t}{\sum_ie^i} CE=−log∑ieiet
因此可以在计算好相似度除以温度系数之后,采用交叉熵损失的方式来进行计算
SimCSE构造正负样本对与损失相关推荐
- 目标检测中如何定义正负样本,和正负样本在学习过程中loss计算起的作用
如何定义正负样本,和正负样本在学习过程中loss计算起的作用 正负样本定义 分类和回归head如何学习和利用划分后的正负样本(loss如何计算) 正负样本在分类中loss计算的处理 正样本在bbox ...
- 【CV】PAA论文解读:在物体检测中利用概率分布来将anchor分配为正负样本
本文转自|AI公园 导读 又一篇anchor匹配策略的文章,不过确实是简单有效,在ATSS上只需要很小的修改就可以提升性能.GFL2在框的预测上用上了概率分布,这里又在anchor匹配上用上了概率分布 ...
- 正负样本比率失衡SMOTE
目录 正负样本比率失衡SMOTE 背景 公式 python实现 代码的使用方法 正负样本比率失衡SMOTE 背景 这几天测试天池的优惠券预测数据在dnn上面会不会比集成树有较好的效果,但是正负样本差距 ...
- 解决one-stage目标检测正负样本不均衡的另类方法--Gradient Harmonized
正负样本不均衡问题一直是One-stage目标检测中被大家所诟病的地方,He Keming等人提出了Focal Loss来解决这个问题.而AAAI2019上的一篇论文<Gradient Harm ...
- Yolov3-v5正负样本匹配机制
本文来自公众号"AI大道理". 什么是正负样本? 正负样本是在训练过程中计算损失用的,而在预测过程和验证过程是没有这个概念的. 正样本并不是手动标注的GT. 正负样本都是针对于 ...
- 总结论文中正负样本的选择
对正负样本的选择 1.ssd:设置一个阈值(0.5),大于这个阈值的框为正样本,其它框作为负样本鉴定为背景.但是负样本还是远大于正样本,因此采用了难样本挖掘.难样本挖掘的具体操作是计算出所以负样本的损 ...
- 关于正负样本不平衡问题的解决方法收集整理
参考文献 1.如何解决机器学习中数据不平衡问题 2.Learning from imbalanced data 原文 3.对于正负样本不均衡的解决方法 4.2中论文的翻译总结 一. 问题背分析 1.背 ...
- 正负样本不均衡的解决办法
转载自:http://blog.csdn.net/lujiandong1/article/details/52658675 这几年来,机器学习和数据挖掘非常火热,它们逐渐为世界带来实际价值.与此同时, ...
- YOLOv7 | 模型结构与正负样本分配解析
如有错误,恳请指出. Yolov7的原作者就是Yolov4的原作者.看论文的时候看到比较乱,这里可能会比较杂乱的记录一下我觉得有点启发的东西.对于yolov7的代码,我也没有仔细的看,只是大概的看了下 ...
最新文章
- objdump与readelf
- redhat7企业版linuxlinux基本操作
- C++后继有人——D语言
- Bootstrap4默认样式不对胃口?教你使用NPM+Webpack+SASS来定制
- 5 秒创建 k8s 集群[转]
- VC++设置软件断点和“XXX已停止工作“对话框
- 4道Python基础字典练习题
- apache代理IIS的80端口实现共存
- 1151压力变送器型号_日本进口横河EJA530E压力变送器型号解读!
- 使用双指针可能只需要遍历一趟哦(洛谷P1147题题解,Java语言描述)
- python沿中心线绘制矩形_间隙填充轮廓/线 - python
- 在Linux平台使用Firefox 登陆EBS r12环境
- 数据从mysql迁移至oracle时知识点记录(一)
- 阶段3 2.Spring_04.Spring的常用注解_5 自动按照类型注入
- 【云周刊】第200期:云栖专辑 | 阿里开发者们的第6个感悟:享受折磨
- vmrc安装出现:未能安装 HCmon 驱动程序 (Failed to install the HCmon driver)
- Autodesk 3ds Max 渲染之后保存页面卡死问题
- outlook 您的组织策略阻止我们为您完成此操作 解决办法
- maya餐具图片_有哪些价格低但是逼格高很文艺又实用的物品呢?
- 跑深度模型的显卡_不止显卡!这些硬件因素也影响着你的深度学习模型性能