©作者 | 林亿

单位 | 科大讯飞AI研究院

研究方向 | 对话系统

前言 

半年前 SimCSE 两次 dropout 的操作刷爆朋友圈,对比学习相关论文也席卷各大顶会顶刊;上次也总结了 ACL 2021 的一些对比学习文章。最近组内论文分享有同事分享了一篇亚马逊的工作,觉得还蛮有意思,效果也甚好。

论文标题:

Virtual Augmentation Supported Contrastive Learning of Sentence Representations

论文链接:

https://arxiv.org/abs/2110.08552

进入正题

首先思考一下,SimCSE 虽然操作简单,这其实意味着它还有很多的可操作空间,比如——如何进一步加大对困难样本信息的挖掘,从而进一步提升网络的性能。

这个道理就像考试,简单的题目大家都会,所以所有大家随便考考都可以考到 90 分,但是 90-100 分这个区间,就要考验大家对困难题目的理解了;如果我们平时学习一直反复写简单题目,忽略了难题的练习,那肯定是没办法在 90 分的基础上再多考几分的。

想让模型多见一些困难样本,有两种方式:

第一种方式就是充分挖掘现在的数据集,找出现在数据集内的困难样本,然后通过加大这些样本的权重或者出现的比例,强迫模型多关注这些难题,比如 SimCSE 内利用温度 τ 来控制对困难样本的关注度:

1. 分子是原始 case 两次 dropout 输出,其相似度一定较大,无太大随机性,即熵值较为固定;

2. 分母中包含一堆负样本,包括简单样本,困难样本等,不确定性高,熵值大;

3. 分母中困难样本定义为:其明明是负样本,其和原始 case 相似度却很大;那么分母一定是更关注困难样本,因为简单样本 loss 低;

4. 所以当 τ>1,相当于降低对困难样本的关注度,当 τ<1,则进一步扩大困难样本比重,更加关注困难样本。

比如简单负样本和原句相似度 0.1,困难样本和原句相似度 0.6,除以 τ=0.2 后,差距进一步扩大,模型会更关注困难样本;

或者利用方差等方式手动挑出来比较困难的样本,反复多加入几次迭代过程,具体在这里就不赘述了。

另一种方式就是创造更多的困难样本,常见的方式一般是人为分析数据后进行手工添加,可以配合一些仿射变换,如同义词替换、回译等;那么能不能像第一种方式那样,在训练过程中,让网络自己想办法去创建一些困难样本呢?

好了,本文的主角终于来了—— VaSCL,其会在网络训练的过程中自动创造一些虚拟的困难样本,为什么说是虚拟的,自然也是和 SimCSE 那样直接 dropout 出来的一堆“数据分布”一样,毫无章法且不讲道理但... 有效!

VaSCL 是怎么做的?

首先还是和 SimCSE 一样,一个 case 两次 dropout,然后最小化自身两次 dropout 的距离,并推远与其它样本的距离;即,SimCSE 原 loss 全部保留。

剩下就是怎么找出来困难样本。

1. 假设 batch 为 32,我们需要找出第一句话的困难样本,因为是无监督模型,除了第一句话自身,其余所有 case 都是负样本,那么模型输出特征向量和第一句话越相似的,其就越可能是第一句话的困难样本是吧?我们首先定义一个 k,在每个 batch 中找到每句话输出特征向量最近的 k 句话,后文称为这句话的 k 领域,后面就用这 k 句话创建第一句话的虚拟困难样本。

2. 假设第一句话经过模型输出的特征向量是 e,随便搞一个高斯白噪声 α,加上去,得到一个新的特征向量 e+α,理论上来说,这个新的特征向量和第一句话的意思应该还是相近的,因为是高斯白噪声,其不会对原始向量数据分布产生太大影响,这个过程大概可以模拟成这样:

e = e + np.random.standard_normal(y.shape) * 0.01

如果是给一张图片加上高斯白噪声,基本是看不出什么变化的。仔细看一下这个高斯白噪声的代码,好好想想,理论上按照这个公式,高斯白噪声一定不应该对原句的语义产生太大影响。

当然,实际上我们不是随便乱加一个高斯白噪声,我们期待我们有很多的高斯白噪声,然后再其中选取一个最优的高斯白噪声,可以使得第一句话加上这个噪声以后,即 e+α 和原来的特征向量 e,最远,但是第一句话 k 领域内的所有负样本加上这个噪声 α 后都和原句 e 更靠近了,这样的一个高斯白噪声可谓是坏事干尽了,迷惑性贼大!

所以当原句 e 加上这个最优的噪声 α,就得到了一个很强的困难样本!

这里有个问题,这个候选高斯白噪声集合哪里来,文章没有交代,理论上我们随机生成若干个作为备选,或者预设一个数值,每次训练过程中随机生成这么多个,再或者直接把这个噪声当成可训练参数或许也可以(但是按照原文的意思,似乎没有把这个 α 当成可训练参数);不过都是小问题,个人比较倾向在训练前指定数值 n。

3. 训练过程中 batch 中每句话的 loss:

首先保持 SimCSE 的损失:

  • 每句话的两次 dropout 靠近

  • 每句话和别的句子 dropout 拉远

然后是虚拟困难样本损失:按 2 的规则在高斯白噪声集里面找到一个最优的噪声 α,每句话加上其最优噪声得到这句话的虚拟困难样本,这句话的 k 领域内负样本也加上这句话的最优噪声,得到这句话 k 领域的虚拟困难负样本

  • 原句和其虚拟困难样本拉近

  • 原句/原句虚拟困难强样本分别与 k 领域内负样本 /k 领域虚拟困难负样本拉远

作者没有开源,但是其实按照 SimCSE 实际实现起来应该差不多,难度不大。

效果

更多阅读

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

亚马逊提出无监督虚拟增强句子表征学习框架,效果超越SimCSE相关推荐

  1. 声网纳斯达克上市、TikTok推出TikTok For Business、亚马逊推出无代码应用| Decode the Week...

    世事皆如此,没人喜欢改变. Decode the Week≠音视频技术周刊  News Briefing 1. Instagram将TikTok克隆版本"Reels"扩展至欧洲市场 ...

  2. 亚马逊云科技-游戏孵化营第一课学习心得

    亚马逊云科技-游戏孵化营第一课学习心得 介绍 开营宣讲 云端游戏的亚马逊主张 亚马逊云科技的优势 亚马逊云科技游戏的具体服务 构建一.探索云上游戏开发新思路 行业趋势 云计算助力游戏开发和团队协作 亚 ...

  3. ACL2020 | 线上搜索结果大幅提升!亚马逊提出对抗式query-doc相关性模型

    一只小狐狸带你解锁 炼丹术&NLP 秘籍 作者:机智的叉烧(OPPO算法工程师,擅长Query理解方向) 背景 搜索和推荐经常会被放在一起对比,其中最突出的区别就是搜索中存在query,需要充 ...

  4. 亚马逊欧洲站无货源好不好做?

    据有关统计,亚马逊欧洲和北美站有30%的卖家是来自中国.在亚马逊卖家中,西班牙站比例高达37%,其次是意大利站33%第三名是法国站32% 中国卖家占欧洲北美TOP 10000卖家中的比例 在亚马逊欧洲 ...

  5. 【架构】研究谷歌和亚马逊的微服务案例,我们能学习到的经验

    产品复杂度与日俱增.想继续按以前的节奏去演进产品变得越来越困难了,是时候寻找一种更好的方法了.微服务架构承诺可以让团队快速前进... 但与此同时也带来了一系列全新的挑战. 在为Enchant搭建微服务 ...

  6. CVPR 2020 | 北大Futurewei提出 GraphTER:无监督图变换共变表征学习

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟  报道  | 公众号 CVLianMeng 转载于 :机器之心 计算机视觉与模式 ...

  7. 干货!STABLE - 一种无监督高鲁棒性图结构学习框架

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 李宽: 中科院计算所(ICT)二年级硕士生.主要研究方向为图表示学习,工作主要围绕图神经网络的鲁棒性,动态图建模和半监督节点分类的类别不 ...

  8. 亚马逊AWS:用AI和机器学习让所有人受益

    如果在业界谈起AI人工智能和机器学习技术的发展历程,有一家云计算服务商的名字是绝对绕不开的,那就是亚马逊AWS. 在不久前召开的2018世界人工智能大会上,正是凭借在AI人工智能技术创新上的卓越表现, ...

  9. 清华大学迎来中国首位原创AI虚拟学生;百度造车:定价20万元以上;亚马逊面临 7.5 万项仲裁|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

最新文章

  1. 提交表单自动刷新_Web自动化测试:元素的基础操作和浏览器基础操作
  2. 算法笔记-经典链表操作案例
  3. python文件编译_我算是白学Python了,现在才知道原来Python是可以编译的
  4. winsock setsockopt 详解
  5. 1.PostgreSQL的学习
  6. 在一测试环境下的RAC出错解决
  7. 从TimeSpan说起
  8. P7515-[省选联考 2021A卷]矩阵游戏【差分约束】
  9. 牛客练习赛 57——manacher算法 树形dp?
  10. 小问题,对递归重复调用的改进,一起来分享
  11. 【离散数学】图的着色与对偶图
  12. servlet中doPost()和doGet()
  13. LeetCode刷题(23)
  14. 远程软件TeamViewer如何导出选项注册表文件?
  15. Visual Studio 2010 Win32 Usb HID 动态库创建
  16. 很多情侣看了以后,不在关机
  17. 基于matlab山脊线,山脊线山谷线提取实验报告.doc
  18. Kali metasploit 更新以及问题 Unable to find a spec satisfying metasploit-framework (>= 0) in the set.
  19. 使用Nexus添加jar包到私服里
  20. python能做些什么事_一起来看看Python能干什么?使用Python能做哪些事

热门文章

  1. 可视化神器背后的奥秘
  2. 炼丹神器!模型调参这门“玄学”,终于被破解了
  3. python中国内源_【文】Python更换国内镜像源
  4. php 打印变量内存地址_Python合集之Python变量
  5. java泛型bean copy list
  6. Windows和Linux环境下搭建SVN服务器
  7. Snort里如何将读取的包记录存到指定的目录下(图文详解)
  8. TestNG 入门教程
  9. p:commandButton vs h:commandButton
  10. LLBLGen 关于类型转换