论文笔记--On the Sentence Embeddings from Pre-trained Language Models

news2024/11/19 3:49:35

论文笔记--On the Sentence Embeddings from Pre-trained Language Models

  • 1. 文章简介
  • 2. 文章概括
  • 3 文章重点技术
    • 3.1 BERT模型的语义相似度能力分析
    • 3.2 Anistropic各向异性
    • 3.3 BERT-flow
    • 3.4 Flow-based model
  • 4. 文章亮点
  • 5. 原文传送门
  • 6. References

1. 文章简介

  • 标题:On the Sentence Embeddings from Pre-trained Language Models
  • 作者:Bohan Li, Hao Zhou, Junxian He, Mingxuan Wang, Yiming Yang, Lei Li
  • 日期:2020
  • 期刊:arxiv preprint

2. 文章概括

  近期的一些研究表明,传统的BERT模型产生的词向量空间成anisotropic(各向异性),在语义相似度任务上表现不好,甚至低于GloVe方法。为此,文章提出了BERT-flow,一种基于Gaussian latent变换的BERT系列模型,可以有效地将BERT产生的词向量空间映射到一个standard Gaussian latent space。BERT-flow在STS语义相似度任务上表现超过SOTA,且实验表明BERT-flow要优于其它已有的针对各向异性的解决方法。

3 文章重点技术

3.1 BERT模型的语义相似度能力分析

  首先简要回顾下BERT模型[1]。BERT模型采用了MLM和NSP两种目标来训练模型。所谓MLM,即Masked Language Modeling(掩码语言模型),BERT会随机的对15%的词表单词进行掩码,然后在实际训练时尝试根据被掩码单词的上下文预测这些掩码。具体公示可表示为 p ( x ‾ ∣ x ^ ) = ∑ t = 1 T m t p ( x t ∣ c t ) p(\overline{x}|\hat{x})=\sum_{t=1}^T m_tp(x_t|c_t) p(xx^)=t=1Tmtp(xtct),其中 x ^ t \hat{x}_t x^t表示被掩码的序列, x ‾ \overline{x} x表示被掩码的tokens,当 x t x_t xt被掩码时 m t = 1 m_t=1 mt=1,否则为 0 0 0,上下文 c t = x ^ c_t=\hat{x} ct=x^。公示中的条件概率 p ( x t ∣ x ^ ) p(x_t|\hat{x}) p(xtx^)可由softmax预测: p ( x ∣ x ^ ) = exp ⁡ h c T w x ∑ x ′ exp ⁡ h c T w x ′ (1) p(x|\hat{x}) = \frac {\exp h_c^T w_x}{\sum_{x'} \exp h_c^T w_{x'}}\tag{1} p(xx^)=xexphcTwxexphcTwx(1),其中 h c h_c hc时上下文的嵌入表示,由Transformer学习得到, w x w_x wx为token x x x对应的词向量。
  为了比较BERT的句向量相似度,我们可考虑 h c T h c ′ h_c^T h_{c'} hcThc。但上式中,没有显式出现 h c T h c ′ h_c^T h_{c'} hcThc,为此我们考虑 h c T w x h_c^T w_x hcTwx,即上下文和单词嵌入之间的点积。根据Yang[2],可以通过下式来近似 h c T w x h_c^T w_x hcTwx: h c T w x ≈ log ⁡ p ∗ ( x ∣ c ) + λ c = P M I ( x , c ) + log ⁡ p ( x ) + λ c h_c^T w_x\approx \log p^*(x|c) + \lambda_c = PMI(x, c) + \log p(x) + \lambda_c hcTwxlogp(xc)+λc=PMI(x,c)+logp(x)+λc,其中 P M I ( x , c ) = log ⁡ p ( x , c ) p ( x ) p ( c ) PMI(x, c) = \log \frac {p(x, c)}{p(x)p(c)} PMI(x,c)=logp(x)p(c)p(x,c)表示 x x x c c c之间的逐点互信息(Pointwise mutual information),常被用来近似单词级别的语义相似,可以视为 x , c x, c x,c同时出现的概率除以各自单独出现的概率,再取对数; log ⁡ p ( x ) \log p(x) logp(x)表示单词项; λ c \lambda_c λc表示上下文项。由此近似表达式我们可以看出,通过计算 h c T w x h_c^Tw_x hcTwx来估计语义相似度是有意义的。
  在BERT的预训练阶段,任意两个上下文 c , c ′ c, c' c,c的语义关系是可以通过它们各自和单词之间的关系来推断的。事实上,如果 c , c ′ c, c' c,c和相同的单词 w w w经常一起出现,那么它们很可能语义相似。如果 c , x c, x c,x同时出现,那么 h c , w x h_c, w_x hc,wx会比较接近,再由(1)式的正则项,我们有对其它 x ′ x' x h c , w x ′ h_c, w_x' hc,wx会远离;同理, 如果 c ′ , x ′ c', x' c,x同时出现,则 h c ′ , w x ′ h_c', w_x' hc,wx会比较接近, h c ′ , w x h_c', w_x hc,wx会远离。故而我们得到 h c ′ , h c h_c', h_c hc,hc会远离。总结下:即对不同的单词 x , x ′ x, x' x,x,它们的上下文 h c , h c ′ h_c, h_c' hc,hc也会比较远。
  按照上述推理,上下文之间的更新会彼此影响: h c h_c hc的更新可能会影响 h c ′ h_c' hc,同理 h c ′ h_c' hc的更新可能会影响 h c ′ ′ h_c'' hc′′。也就是说,上下文嵌入之间通过某种高阶的并现关系互相影响。

3.2 Anistropic各向异性

  文章尝试解释为什么BERT在语义相似问题上的表现不好。文章主要给出以下两点观测:

  • 单词频次会使嵌入空间发生偏移:文章计算了BERT单词嵌的平均l2范数。如下表所示,单词的频次越高,平均l2范数越小。说明BERT的嵌入空间很可能被单词频次所影响,从而造成上下文嵌入可能会被单词频次信息污染。
    word freq
  • 低频的单词在嵌入空间发散:文章计算了单词嵌入与其 k k k个最近的单词嵌入之间的平均l2距离和点积,如上表所示,单词频次越低,单词和其近邻的l2距离/点积越大,说明距离越远。即频次地的单词可能会稀疏发散。这种发散性可能会造成低频次单词在高维空间中间存在"holes",而BERT如果采用avg词向量方式表示句向量时,这些"holes"会印象影响嵌入空间的凸性,从而影响句向量的表达。

3.3 BERT-flow

  针对上述anistropy,文章提出一种校准方法BERT-flow:利用一个可逆变换将BERT的嵌入空间转化为一个标准高斯潜空间(standard Gaussian latent space,SGLS)。
  SGLS可以满足各向同性(isotropic)。事实上,一个SGLS的概率密度在各个角度上都是一致的,如果我们将SGLS的样本的2范数标准化为1 ,则样本服从一个高阶单位圆的均匀分布。将嵌入空间转化为一个各向同性的空间之后,我们可以压扁嵌入空间的较大的特征值(研究表明这些较大的特征向量很可能和单词频率有关),从而降低单词频率对嵌入空间的影响。此外,SGLS不存在holes,从而可以解决在这些holes附近句向量定义不好的问题。

3.4 Flow-based model

  为了得到上述的SGLS,我们希望建立一个从latent space Z \mathcal{Z} Z(即SGLS)到观测空间 U \mathcal{U} U(即BERT嵌入空间)的可逆变换,如下图所示。具体如下: z ∼ p Z ( z ) , u = f ϕ ( z ) z\sim p_{\mathcal{Z}}(z), u = f_{\phi}(z) zpZ(z),u=fϕ(z),其中 f f f为我们要找的可逆变换。根据变量变换理论,我们有 p U ( u ) = p Z ( f ϕ − 1 ( u ) ) ∣ d e t ∂ f ϕ − 1 ( u ) ∂ u ∣ p_{\mathcal{U}}(u) = p_{\mathcal{Z}}(f_{\phi}^{-1}(u)) |det \frac{\partial f_{\phi}^{-1}(u)}{\partial u}| pU(u)=pZ(fϕ1(u))detufϕ1(u)
flow
  最终得到模型要最大化似然函数 m a x ϕ E u = B E R T ( s e n t e n c e ) , s e n t e n c e ∼ D l o g p z ( f ϕ − 1 ( u ) ) + log ⁡ ∣ d e t ∂ f ϕ − 1 ( u ) ∂ u ∣ max_{\phi} \mathbb{E}_{u=BERT(sentence), sentence \sim \mathcal{D}} log p_z(f_{\phi}^{-1}(u)) + \log |det \frac{\partial f_{\phi}^{-1}(u)}{\partial u}| maxϕEu=BERT(sentence),sentenceDlogpz(fϕ1(u))+logdetufϕ1(u),其中 D \mathcal{D} D表示句子数据集。训练过程我们只训练flow的参数,即 f ϕ − 1 f_{\phi}^{-1} fϕ1部分,将BERT的参数冻结。为了得到 f ϕ − 1 f_{\phi}^{-1} fϕ1,文章参考Dinh等人的神经网络框架,保证 f ϕ f_{\phi} fϕ是可逆的。

4. 文章亮点

  文章论证了BERT在语义相似度任务上表现较差的原因,且提出了一种可以解决BERT各向异性的方案“BERT-flow“。BERT-flow在多个STS数据集上表现超过SBERT[2]等模型,得到了一种更接近于Golden standard的嵌入空间。
  实验表明,文章提出的BERT-flow方法相比于标准正则化(计算嵌入的均值方差之后正则)和NATSV(将Top特征值消除)方法相比效果更好,成为了解决BERT各向异性问题的SOTA方案。

5. 原文传送门

On the Sentence Embeddings from Pre-trained Language Model

6. References

[1] 论文笔记–BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
[2] Breaking the Softmax Bottleneck: A High-Rank RNN Language Model
[3] 论文笔记–Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks

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

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

相关文章

树莓派Pico|RP2040简介|PINOUT|点灯示例

文章目录 一、Pico简介:二、几个比较重要的git仓库:三、使用前必读:四、PINOUT五、点灯一、如何安装固件二.安装Thonny编程环境配置三、点亮板载的LED灯Pico点亮板载LED灯的代码:PicoW点亮板载LED灯的代码: 一、Pico简…

[LeetCode周赛复盘] 第 107 场双周赛20230624

[LeetCode周赛复盘] 第 107 场双周赛20230624 一、本周周赛总结6898. 字符串连接删减字母1. 题目描述2. 思路分析3. 代码实现 6895. 构造最长的新字符串1. 题目描述2. 思路分析3. 代码实现 6898. 字符串连接删减字母1. 题目描述2. 思路分析3. 代码实现 6468. 统计没有收到请求…

Linux系统之部署Dailynotes个人笔记管理工具

Linux系统之部署Dailynotes个人笔记管理工具 一、Dailynotes介绍二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本3.3 检查本地yum仓库状态 四、部署Node.js 环境4.1 下载Node.js安装包4.2 解压Node.js安装包4…

ThreadPoolExecutor的应用

前面描述的线程池的创建方式大都是Executors类中创建出来,基于ThreadPoolExecutor去new出来实现的。 我们为什么要自定义线程池 在线程池ThreadPoolExecutor中提供了7个参数,都作为非常核心的属性,在线程池去执行任务的时候,每个…

Nginx-Goaccess(实时日志服务)

goaccess的功能 1、使用webscoket协议传输(双向传输协议)2、基于终端的快速日志分析器3、通过access.log快速分析和查看web服务的统计信息、PV、UV4、安装简单、操作简易、界面炫酷5、按照日志统计访问次数、独立访客数量、累计消耗的带宽6、统计请求次…

物理引擎--Open Dynamics Engine(ODE)

物理引擎--Open Dynamics Engine--ODE 1 介绍1.1 概述1.2 代码1.3 wiki1.4 特征1.5 许可 2 安装使用3 概念3.1 背景3.2 刚体3.2.1 岛屿和禁用实体 3.3 一体化3.4 积分器3.5 关节和约束3.6 关节组3.7 关节误差和误差减少参数 (ERP) Joint error and the Error Reduction Paramet…

Scala函数式编程【从基础到高级】

目录 函数基础 基本语法 函数参数 函数至简原则 至简原则细节 函数高级 高阶函数 函数的3种高阶用法: 1、函数作为值传递 2、函数作为参数传递 匿名函数作参数传递 3、函数作为返回值传递 匿名函数的至简规则 高阶函数的应用 案例-将数组中的元素全部…

【LeetCode】 动态规划 刷题训练(三)

文章目录 931. 下降路径最小和题目解析状态转移方程完整代码 64. 最小路径和题目解析状态转移方程完整代码 174. 地下城游戏题目解析状态转移方程完整代码 931. 下降路径最小和 点击查看:下降路径最小和 给你一个 n x n 的 方形 整数数组 matrix ,请你找…

chatgpt赋能python:Python搜题软件:为你量身定制的智能搜索助手

Python搜题软件:为你量身定制的智能搜索助手 随着互联网的普及,我们每天需要面对海量的信息,其中包含了我们所需要的一切答案。但是,如何快速而准确地找到这些答案呢?这时候,一款智能化的搜题软件就非常有…

【不推荐】win 安装 rust 1.70 (MSVC)

目录 一、下载二、安装三、配置环境变量四、检查是否安装成功五、参考文章 一、下载 官网地址:https://www.rust-lang.org/zh-CN/ https://forge.rust-lang.org/infra/other-installation-methods.html 历史版本下载地址: 二、安装 注意:安…

Redis:redis基于各大实战场景下的基本使用

文章目录 前言String 命令实战1.业务缓存对应redis中的指令伪代码 2.分布式锁对应redis中的指令伪代码 3.限流对应redis中的指令伪代码 List 命令实战1.提醒功能对应Redis中的指令伪代码 2.热点列表对应Redis中的指令伪代码 Hash 命令实战1.用户资料缓存对应redis中的指令伪代码…

RabbitMQ学习笔记(尚硅谷)

文章目录 一. 消息队列1. 定义2. 作用2.1 流量消峰2.2 应用解耦2.3 异步处理 3. 分类4. MQ的选择5. RabbitMQ5.1 概念5.2 四大概念5.3 六大模式5.4 RabbitMQ 工作原理5.5 安装 6. 代码实现 二. Hello World (简单模式)1. 生产者代码2. 消费者代码 三. Work Queues (工作队列模式…

OUC编译原理实验报告 实验5:用Yacc设计语法分析器1 实验6:用Yacc设计语法分析器2

编译原理实验报告 实验5:用Yacc设计语法分析器1 实验6:用Yacc设计语法分析器2 中国海洋大学编译原理实验2023春 仅供同学参考思路 请勿直接抄袭 否则可能喜提0分 目录 文章目录 编译原理实验报告目录一.实验目的二.实验内容实验5实验6 三.实验要求实…

RISCV Reader笔记_2 RV32I

RV32I 完整的RV32I指令集可以用下面的式子中出现单词的首字母表示: 比如这一条: set less than {immediate} {unsigned} 也就是slt slti sltu sltiu这4个指令。 RISCV指令格式如下。R 寄存器操作,I 立即数或load访存,S store访…

C51单片机期末复习第八章单片机接口技术

一 总线: 传送同类信息的连线 三总线: 地址总线AB,数据总线DB,控制总线CB 目录(ppt给的没啥用,乱还不全): 8.1 单片机的系统总线 8.2 简单并行I/O口扩展 8.3 可编程并行I/O口扩展 8.4 D/A转换与DAC0832应用 8…

稀疏表:最大公约数

问题描述 给定一个数组, 每次操作可以选择数组中任意两个相邻的元素 x , y x, y x,y 并将其 中的一个元素替换为 gcd ⁡ ( x , y ) \operatorname{gcd}(x, y) gcd(x,y), 其中 gcd ⁡ ( x , y ) \operatorname{gcd}(x, y) gcd(x,y) 表示 x x x 和 y y y 的最大公约数。 请…

MIT 6.S081 教材第五章内容 -- 中断与设备驱动--下

MIT 6.S081 教材第五章内容 -- 中断与设备驱动--下 引言关于RISC-V特权级架构说明RISC-V特权模式OpenSBI介绍RISC-V启动过程RISC-V中的异常M模式下的异常1. 硬件中断的处理(以时钟中断为例)2. M模式下的异常相关寄存器3. 同步异常的处理 S模式下的异常1.…

chatgpt赋能python:Python散点图介绍:如何用Python绘制散点图?

Python散点图介绍:如何用Python绘制散点图? Python是一门流行的编程语言,用于解决各种问题和编写各种应用程序。其中,数据可视化是Python应用程序中非常重要的组成部分。散点图是最常用的数据可视化图形之一,它能够清…

拓扑排序:神经网络

题目链接 神经网络 题目大意 在兰兰的模型中,神经网络就是一张有向图,图中的节点称为神经元,而且两个神经 元之间至多有一条边相连,下图是一个神经元的例子: 图中, X 1 — X 3 X_1—X_3 X1​—X3​是信…

从类加载到双亲委派:深入解析类加载机制与 ClassLoader

目录 前言Class 文件介绍如何生成 class 文件观察 Bytecode 方法class 文件到底是什么样的呢? Class 加载、链接、初始化加载、类加载器双亲委派Launcher 核心类ClassLoader 相关源码ClassLoader 相关问题自定义简单 ClassLoader自定义加密 ClassLoader打破双亲委派…