还在用[CLS]?从BERT得到最强句子Embedding的打开方式!
点击上方“AI遇见机器学习”,选择“星标”公众号
重磅干货,第一时间送达
文:涅生
编:兔子酱
你有尝试从 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~
背景![](/assets/blank.gif)
自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 生成模型![](/assets/blank.gif)
那么,如何无监督情况下充分利用BERT表示中的语义信息?为了解决上述存在的问题,作者提出了一种将BERT embedding空间映射到一个标准高斯隐空间的方法(如下图所示),并称之为“BERT-flow”。而选择 Gaussian 空间的动机也是因为其自身的特点:
标准高斯分布满足各向同性
高斯分布区域没有“洞”,即不存在破坏“凸性”的情况
上图中
表示隐空间, 表示观测到的空间,f: 是可逆的变换。根据概率密度函数中变量替换的定理,我们可以得到观测变量 的概率密度函数如下:
进一步,作者通过最大化BERT句子表示的边缘似然函数来学习基于流的生成模型,即通过如下的公式来训练flow的参数:
其中
表示数据集分布, 为神经网络。需要注意的是,在训练中,不需要任何人工标注! 另外,BERT的参数保持不变,仅有流的参数进行优化更新。其次,在实验中,作者基于Glow (Dinh et al., 2015)的设计(多个可逆变换组合)进行改动,比如将仿射耦合(affine coupling)替换为了加法耦合(additive coupling)。
实验及结果![](/assets/blank.gif)
论文的实验部分在7个数据集上进行衡量语义文本相似性任务的效果。
实验步骤:
通过句子encoder得到每个句子的向量表示。
计算句子之间的cosine similarity 作为模型预测的相似度。
计算Spearman系数。
实验结果:
上图汇报了sentence embeddings的余弦相似度同多个数据集上真实标签之间的Spearman等级相关性得分(
),其中flow-target 表示在完整的目标数据集(train+validation+test)上进行学习,flow-NLI 表示模型在NLI(natual language inference)任务的测试,绿色箭头表示相对于BERT的baseline,模型的效果有提升,红色反之。
我们可以注意到模型的改进对于效果的提升还是很显著滴!文章同样还在无监督问答任务证明模型的有效性,并将BERT-flow得到的语义相似度同词法相似度(通过编辑距离来衡量)进行对比,结果同样证明模型在引入流的可逆映射后减弱了语义相似性与词法相似性之间的联系!具体信息大家可查阅paper~
小结![](/assets/blank.gif)
总之,这篇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
欢迎关注我们,看通俗干货!
还在用[CLS]?从BERT得到最强句子Embedding的打开方式!相关推荐
- 正确的「记事本」打开方式:能渲染3D图像,还能玩贪吃蛇
金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 渲染3D图像,一个「记事本」就够了. 最近,GitHub上一名叫"Kyle Halladay"的小哥,便上传了这样一个项 ...
- matlab的开方算法_正确的「记事本」打开方式:能渲染3D图像,还能玩贪吃蛇
金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 渲染3D图像,一个「记事本」就够了. 最近,GitHub上一名叫"Kyle Halladay"的小哥,便上传了这样一个项 ...
- 自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 基于BERT模型微调实现句子分类
自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 基于BERT模型微调实现句子分类 目录 基于BERT模型微调实现句子分类案例实战 Installing the H ...
- 基于朴素贝叶斯和预训练Bert模型的中文句子情感分类实践
基于朴素贝叶斯和预训练Bert模型的中文句子情感分类实践 1.任务介绍 本次实践选题为AI研习社2019年9月份举办的中文对话情感分析任务,并在原任务基础上进行了拓展.任务首先给定一中文语句数据集 ...
- 陈丹琦带着清华特奖学弟发布新成果:打破谷歌BERT提出的训练规律!这个庆祝方式太学神了吧...
萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 新晋斯隆奖得主如何庆祝? 公开最新研究成果算不算? 就在斯隆奖宣布当天,陈丹琦团队展示了最新的研究成果. 团队发现,经典NLP模型BERT提出的预 ...
- tensorflow 指定cpu 但是还会运行 gpu_PyTorch VS TensorFlow 谁最强?这是标星 15000+ Transformers 库的运行结果...
点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 作者 | Lysandre Debut译者 | 陆离出品 | AI科技大本营(ID: rgzn ...
- 如何让BERT拥有视觉感知能力?两种方式将视频信息注入BERT
一只小狐狸带你解锁NLP/ML/DL秘籍 老板老板,听说BERT是个瞎子 此话怎讲? 它能理解语言,但是理解不了小夕的自拍! video-BERT了解一下 喵喵喵? AI的三大核心板块(CV/Spee ...
- Bert系列:如何用bert模型输出文本的embedding
问题: 分类模型可以输出其文本的embedding吗?LM模型可以输出其文本的embedding吗?答案:可以. 假设你已经用自己的数据fine-tuing好模型. 主要工具设备型号: python3 ...
- wordpress 表格文字对齐_Word文字对齐还用空格键?OUT了,这3个文字对齐方式你值得拥有!...
今天,无意之间看都到一个同事还在用空间键对齐文字,顿时我惊讶到了,这都什么年头呀,还在用这样方式进行对齐,哎,真是无药可救了. 看好了,今天小编让你摆脱文字对齐烦恼,让你的效率也能够提升起来. 1.调 ...
最新文章
- Linux网络编程实例分析
- 下载服务 php,文件下载: 云---php服务---pc
- 深入理解 Android 的 IPC 机制--------Binder
- 【Python3_基础系列_012】Python3-异常与断言
- leetcode 767. Reorganize String | 767. 重构字符串(贪心+分桶+26路归并)
- LiveCoding
- 中国联通(网通)国家数据中心上海漕河泾IDC机房(五星级)
- Jquery一款非好的图片轮换效果
- windows下交换ctrl和capslock
- 中睿天下入选《2022年中国网络安全市场全景图》
- XMPP协议的工作原理
- clojure实现邮箱发送
- saltstack的NETAPI接口详讲
- 一些恶搞人的C++程序(千万别试,会哭的)
- Python 微信自动化工具开发系列02_自动获取微信多个好友聊天信息(2023年1月可用)
- 油猴Tampermonkey及其脚本的安装
- Output argument “yl“ (and maybe others) not assigned
- Unity添加Animation不播放
- 100+套大数据可视化模板
- Datatables实现表格行内编辑功能