还在用[CLS]?从BERT得到最强句子Embedding的打开方式!

文:涅生
编:兔子酱

你有尝试从 BERT 提取编码后的 sentence embedding 吗?很多小伙伴的第一反应是:不就是直接取顶层的[CLS] token的embedding作为句子表示嘛,难道还有其他套路不成?

nono,你知道这样得到的句子表示捕捉到的语义信息其实很弱吗?今天向大家介绍一篇来自于 CMU 和字节跳动合作,发表在 EMNLP2020 的 paper, 详尽地分析了从预训练模型得到 sentence embedding 的常规方式的缺陷和最佳打开方式,是一篇非常实用、轻松帮助大家用BERT刷分的文章。论文质量蛮高,分析和发现很有趣,通读之后感觉收获多多。

论文题目:
On the Sentence Embeddings from Pre-trained Language Models

论文链接:
https://arxiv.org/pdf/2011.05864.pdf

Github:
https://github.com/bohanli/BERT-flow

Arxiv访问慢的小伙伴也可以在 【夕小瑶的卖萌屋】订阅号后台回复关键词 【1224】 下载论文PDF~

背景

自2018年BERT惊艳众人之后,基于预训练模型对下游任务进行微调已成为炼丹的标配。然而近两年的研究却发现,没有经过微调,直接由BERT得到的句子表示在语义文本相似性方面明显薄弱,甚至会弱于GloVe得到的表示。此篇论文中首先从理论上探索了masked language model 跟语义相似性任务上的联系,并通过实验分析了BERT的句子表示,最后提出了BERT-Flow来解决上述问题。

为什么BERT的句子Embeddings表现弱?

由于Reimers等人之前已实验证明 context embeddings 取平均要优于[CLS] token的embedding。因而在文章中,作者都以最后几层文本嵌入向量的平均值来作为BERT句子的表示向量。

语义相似性与BERT预训练的联系

为了探究上述问题,作者首先将语言模型(LM)与掩盖语言模型(MLM) 统一为: 给定context(c)预测得到 token(x) 的概率分布,即

这里 是context的embedding, 表示 的word embedding。进一步,由于将 embedding 正则化到单位超球面时,两个向量的点积等价于它们的cosine 相似度,我们便可以将BERT句子表示的相似度简化为文本表示的相似度,即

另外,考虑到在训练中,当 c 与 w 同时出现时,它们对应的向量表示也会更接近。换句话说,context-context 的相似度可以通过 context-words 之间的相似度推出或加强。

各向异性嵌入空间

Jun Gao, Lingxiao Wang 等人在近几年的ICLR paper中有提到语言模型中最大似然目标的训练会产生各向异性的词向量空间,即向量各个方向分布并不均匀,并且在向量空间中占据了一个狭窄的圆锥体,如下图所示~

这种情况同样也存在于预训练好的基于Transformer的模型中,比如BERT,GPT-2。而在这篇paper中,作者通过实验得到以下两个发现:

  • 词频率影响词向量空间的分布:文中通过度量BERT词向量表示与原点 l_2 距离的均值得到以下的图表。我们可以看到高频的词更接近原点。由于word embedding在训练过程中起到连接文本embedding的作用,我们所需的句子表示向量可能会相应地被单词频率信息误导,且其保留的语义信息可能会被破坏。

  • 低频词分布偏向稀疏:文中度量了词向量空间中与K近邻单词的 l_2 距离的均值。我们可以看到高频词分布更集中,而低频词分布则偏向稀疏。然而稀疏性的分布会导致表示空间中存在很多“洞”,这些洞会破坏向量空间的“凸性”。考虑到BERT句子向量的产生保留了凸性,因而直接使用其句子embeddings会存在问题。

Flow-based 生成模型

那么,如何无监督情况下充分利用BERT表示中的语义信息?为了解决上述存在的问题,作者提出了一种将BERT embedding空间映射到一个标准高斯隐空间的方法(如下图所示),并称之为“BERT-flow”。而选择 Gaussian 空间的动机也是因为其自身的特点:

  1. 标准高斯分布满足各向同性

  2. 高斯分布区域没有“洞”,即不存在破坏“凸性”的情况

上图中 表示隐空间, 表示观测到的空间,f: 是可逆的变换。根据概率密度函数中变量替换的定理,我们可以得到观测变量的概率密度函数如下:

进一步,作者通过最大化BERT句子表示的边缘似然函数来学习基于流的生成模型,即通过如下的公式来训练flow的参数:

其中 表示数据集分布, 为神经网络。需要注意的是,在训练中,不需要任何人工标注! 另外,BERT的参数保持不变,仅有流的参数进行优化更新。其次,在实验中,作者基于Glow (Dinh et al., 2015)的设计(多个可逆变换组合)进行改动,比如将仿射耦合(affine coupling)替换为了加法耦合(additive coupling)。

实验及结果

论文的实验部分在7个数据集上进行衡量语义文本相似性任务的效果。

实验步骤:

  1. 通过句子encoder得到每个句子的向量表示。

  2. 计算句子之间的cosine similarity 作为模型预测的相似度。

  3. 计算Spearman系数。

实验结果:

上图汇报了sentence embeddings的余弦相似度同多个数据集上真实标签之间的Spearman等级相关性得分(),其中flow-target 表示在完整的目标数据集(train+validation+test)上进行学习,flow-NLI 表示模型在NLI(natual language inference)任务的测试,绿色箭头表示相对于BERT的baseline,模型的效果有提升,红色反之。

我们可以注意到模型的改进对于效果的提升还是很显著滴!文章同样还在无监督问答任务证明模型的有效性,并将BERT-flow得到的语义相似度同词法相似度(通过编辑距离来衡量)进行对比,结果同样证明模型在引入流的可逆映射后减弱了语义相似性与词法相似性之间的联系!具体信息大家可查阅paper~

小结

总之,这篇paper探究了BERT句子表示对于语义相似性上潜在的问题,并提出了基于流的可逆映射来改进在对应任务上的表现。想多了解的童鞋可以看看原文,相信你们也会喜欢上这篇paper!

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

 

[1] Nils Reimers and Iryna Gurevych. 2019. SentenceBERT: Sentence embeddings using siamese BERTnetworks. In Proceedings of EMNLP-IJCNLP.

[2] Ivan Kobyzev, Simon Prince, and Marcus A Brubaker. 2019. Normalizing flows: Introduction and ideas. arXiv preprint arXiv:1908.09257.

[3] Durk P Kingma and Prafulla Dhariwal. 2018. Glow: Generative flow with invertible 1x1 convolutions. In Proceedings of NeurIPS.

[4] Li, Bohan, et al. "On the Sentence Embeddings from Pre-trained Language Models." arXiv preprint arXiv:2011.05864 (2020).

[5]xxxxxtesttestksdjfkahsdjkfhakjsdfhajksdfhjkahdfjkahdasjdfh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479446.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 | BERT:Pre-training of Deep Bidirectional Transformers

论文笔记整理:王春培,天津大学硕士。链接:https://arxiv.org/pdf/1810.04805.pdf动机将预训练语言表示应用于下有任务现有两种策略:基于特征的和基于微调的。文章认为当前技术限制了预训练的能力,尤其是基于微调的方法…

欺诈检测相关论文

欺诈检测相关论文一、分类1、GEM2、HACUD3、MAHINDER4、Semi-GNN5、MvMoE6、AMG-DP7、AddGraph8、NetWalk9、DOMINANT10、GraphConsis11、PC-GNN12、TRUST二、类别不平衡一、分类 1、GEM 来自蚂蚁金服的论文,他们提出GEM模型,是一个异质图神经网络方法&a…

LeetCode 220. 存在重复元素 III(lower_bound)

文章目录1. 题目2. 解题1. 题目 给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。 示例 1:输入: nums [1,2,3,1], k 3, t 0 输出: tr…

Android自定义控件入门实践之雷达扫描控件

以前因为工作的关系,对于自定义控件用的少之又少,无非就是把几个控件放置到ViewGroup内部,然后提供开放方法,就成了一个所谓的自定义控件,但是这种小伎俩太简单,面试的时候这点东西根本Hold不住场&#xff…

论文浅尝 | 基于知识图谱注意力网络的商品推荐

论文笔记整理:康矫健,浙江大学计算机科学与技术系,硕士研究生。论文链接:https://arxiv.org/pdf/1905.07854.pdf发表会议:KDD 2019任务定义输入:协同过滤知识图谱具体来说包括两个部分,其一是用…

Java 动态调试技术原理及实践

断点调试是我们最常使用的调试手段,它可以获取到方法执行过程中的变量信息,并可以观察到方法的执行路径。但断点调试会在断点位置停顿,使得整个应用停止响应。在线上停顿应用是致命的,动态调试技术给了我们创造新的调试模式的想象…

非常适合初学者的机器学习的数学基础笔记.pdf

本文推荐一份机器学习数学基础专辑,非常适合初学者入门,文末提供下载。机器学习,需要一定的数学基础,也需要一定的代码能力。机器学习从业者数学基础不扎实,只会用一些工具和框架,相当于某些武术家只会耍套…

LeetCode 1094. 拼车

文章目录1. 题目2. 解题1. 题目 假设你是一位顺风车司机,车上最初有 capacity 个空座位可以用来载客。由于道路的限制,车 只能 向一个方向行驶(也就是说,不允许掉头或改变方向,你可以将其想象为一个向量)。…

MySQL的锁机制和加锁原理

原文链接:https://blog.csdn.net/qq_38238296/article/details/88362999 文章目录 MySQL的锁机制和加锁原理1.行锁2.表锁3.页锁4.乐观锁和悲观锁4.1悲观锁4.2乐观锁5.1InnoDB锁的特性 6.Record Lock、Gap Lock、Next-key Lock锁6.1.Record Lock6.2.Gap Lock6.2.​…

CVPR 2019轨迹预测竞赛冠军方法总结

背景 CVPR 2019 是机器视觉方向最重要的学术会议,本届大会共吸引了来自全世界各地共计 5160 篇论文,共接收 1294 篇论文,投稿数量和接受数量都创下了历史新高,其中与自动驾驶相关的论文、项目和展商也是扎堆亮相,成为本…

TSNE画图

TSNE画图 2D图 from sklearn.manifold import TSNE import matplotlib.pyplot as plt import numpy as np# 10条数据,每条数据6维 h np.random.randn(10, 6) # 使用PCA降维到2维 tsne TSNE(n_components2, initpca, random_state0) result_2D tsne.fit_transfo…

深入探讨:为什么要做特征归一化/标准化?

文 | shine-lee源 | CSDN本文解读了一项数据预处理中的重要技术——特征归一化,提出并解答了5个相关问题,同时分析了相关方法和适用场景。写在前面Feature scaling,常见的提法有“特征归一化”、“标准化”,是数据预处理中的重要技…

LeetCode 950. 按递增顺序显示卡牌(deque)

文章目录1. 题目2. 解题1. 题目 牌组中的每张卡牌都对应有一个唯一的整数。你可以按你想要的顺序对这套卡片进行排序。 最初,这些卡牌在牌组里是正面朝下的(即,未显示状态)。 现在,重复执行以下步骤,直到…

技术动态 | 知识图谱从哪里来:实体关系抽取的现状与未来

本文作者为:韩旭、高天宇、刘知远。转载自刘知远老师的知乎专栏,文章链接:https://zhuanlan.zhihu.com/p/91762831最近几年深度学习引发的人工智能浪潮席卷全球,在互联网普及带来的海量数据资源和摩尔定律支配下飞速提升的算力资源…

Android 兼容 Java 8 语法特性的原理分析

本文主要阐述了Lambda表达式及其底层实现(invokedynamic指令)的原理、Android第三方插件RetroLambda对其的支持过程、Android官方最新的dex编译器D8对其的编译支持。通过对这三个方面的跟踪分析,以Java 8的代表性特性——Lambda表达式为着眼点…

由Actvity启动模式之SingleInstance引起的坑的反思

以前对于Activity的启动模式只限于文字说明理解的层面,但最近的一个问题让我对启动模式有了更深的了解。 Activity有四大启动模式:standard,singleTop,singleTask,singleInstance,这些启动模式的特点就不在这里细说,主要说一下SingleInstanc…

“李宏毅老师对不起,我要去追这门美女老师的课了” ,台大陈蕴侬深度学习课程最新资料下载...

估计很多同学看到台大首先想到是李宏毅老师的“深度学习人类语言处理”课程,不过这次我们说的是台湾大学陈蕴侬老师的“应用深度学习”课程,这门课程我们之前推荐过,不过主要给大家推荐的是课程视频和课件资源。前段时间,我把这门…

超级好用的使用python批量更新MYsql,速度从一万条需要一天变道一万条需要10分钟左右

推荐网址:https://www.jb51.net/article/100747.html MySQL批量插入的语法为: UPDATE nine_tupleSET SENTI_VALUE CASE N_T_ID WHEN 1 THEN ‘1.57’ WHEN 2 THEN ‘1.3’ WHEN 3 THEN ‘1.2’ END WHERE N_T_ID IN (1,2,3)主要思想:将42W条…

论文浅尝 | 使用位置敏感的序列标注联合抽取实体和重叠关系

论文笔记整理:余海阳,浙江大学硕士,研究方向为知识图谱、自然语言处理。链接:https://wvvw.aaai.org/ojs/index.php/AAAI/article/view/4591动机之前的联合抽取实体以及实体间的关系的方法,主要是采用管道模型&#xf…

LeetCode 938. 二叉搜索树的范围和(二叉树遍历+搜索剪枝)

文章目录1. 题目2. 解题递归剪枝中序遍历循环剪枝1. 题目 给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和。 题目的意思,节点的值在[L, R]这个区间内,就加到结果里,求所有符合条件的…