对比表征学习(二)Setence Embedding

news2025/2/6 20:02:39

参考翁莉莲的Blog,本章主要阐述句子嵌入(sentence embedding)

文本扩增

绝大部分视觉应用中的对比方法依赖于创造每个图像的增强版本,但是在句子扩增中会变得非常有挑战性。因为不同于图片,在扩增句子的同时非常容易改变句子本身的语义。

Lexical Edit(词汇编辑)

EDAEasy Data Augmentation;paper)定义了一组简单但有效的文本增强操作。给定一个句子,EDA随机选择以下四种操作:

  • 同义词替换(Synonym replacement):用同义词随机替换 n n n 个单词(不能是stop word)。

  • 随机插入(Random insertion):在句子的随机位置插入一个随机选择的非停用词的同义词。

  • 随机交换(Random swap):随机交换两个词,并重复此操作 n n n 次。

  • 随机删除(Random deletion):以一定概率 p p p 随机删除句子中的每个词。

其中 p = α p = \alpha p=α n = α × sentence_length n = \alpha \times \text{sentence\_length} n=α×sentence_length,按照直觉来看,长句子在吸收更多噪声同时能保持原始标签(原始句子的意思)。超参数 α \alpha α 大致指示一次增强可能改变的句子中的单词百分比。

研究表明,与没有使用EDA的基线相比,EDA能够在多个分类基准数据集上提高分类准确性。在较小的训练集上,性能提升更为显著。EDA中的所有四种操作都有助于提高分类准确性,但在不同的 α \alpha α 值下达到最优(参考下图)。

在这里插入图片描述

在上下文增强(Sosuke Kobayashi, 2018)中,位于位置 i i i 的单词 $ w_i $ 的替换可以从给定的概率分布 p ( ⋅ ∣ S ∖ { w i } ) p(\cdot | S \setminus \{w_i\}) p(S{wi})中平滑采样,该分布由双向语言模型如BERT预测。

Back-translation(回译)

CERT (Contrastive self-supervised Encoder Representations from Transformers;paper) 通过回译的方式来产生增强后的数据。不同语言的各种翻译模型可用于创建不同方式的数据增强。一但我们有了文本样本的噪声版本,就可以通过对比学习框架来训练sentence embedding

Dropout and Cutoff

Cutoff:Shen et al.(2020)受跨视图训练的启发,提出将截止值应用于文本增强。他们提出了三种截断扩增策略:

  • 标记符截断(Token cutoff)会删除一些选定标记符的信息。为确保没有数据泄露,输入(input)、位置(positional)和其他相关嵌入矩阵(embedding matrice)中的相应标记应全部清零
  • 特征截断删除一些特征列。
  • 跨度截断删除连续的文本块。

在这里插入图片描述

一个样本可以创建多个增强版本。在训练时,使用了额外的 KL-发散项来衡量不同增强样本预测之间的一致性。

SimCSE:Gao et al.;在无监督数据中学习时,只需通过句子本身进行预测,将dropout作为噪声。换句话说,他们将dropout视为文本序列的数据增强。一个样本只需输入编码器两次,这两个版本就是正对样本,而其他批次中的样本则被视为负对样本。这种方法感觉上与cutoff很相似,但dropout相对于cutoff处理更灵活。

在这里插入图片描述

相关内容可以参考阅读笔记 :Notes

Supervision from Natural Language Inference

在语义相似性任务中,未经任何微调的预训练 BERT 句子嵌入性能不佳。因此,我们不能直接使用原始的嵌入,而需要通过进一步微调来完善嵌入。

Natural Language Inference(NLI)任务是为句子嵌入学习提供监督信号的主要数据源,如 SNLI、MNLI 和 QQP。

Sentence-BERT

SBERT: (Reimers & Gurevych, 2019) 依赖于暹罗(Siamese)和三重(triplet)网络架构来学习句子嵌入,这样,句子的相似性就可以通过嵌入对之间的余弦相似性来估算。需要注意的是这个框架依赖于监督数据集。实验效果的好坏取决于数据集,所以没有一个较好的优势。

BERT-flow

如果嵌入是均匀分布在每一个维度中,那么嵌入空间就被认为是各向同性,反之则为各项异性。 Li et al, (2020) 在论文中表示,预训练的bert模型学习到了一个非平滑的各向异性的语义嵌入空间,所以导致了在没有进行微调的情况下,在语义相似任务中的垃圾表现。 根据经验,他们发现 BERT 句子嵌入存在两个问题: 词频会使嵌入空间产生偏差。高频词靠近原点,而低频词远离原点。低频词分布稀疏。低频词的嵌入往往离其 k-NN 邻近词较远,而高频词的嵌入则较为密集。BERT-flow通过归一化流将嵌入转化为平滑和各向同性的高斯分布。

在这里插入图片描述

U \mathcal{U} U 代表观察到的BERT句子嵌入空间, Z \mathcal{Z} Z 为期望的潜在空间,它是一个标准高斯分布。因此, p Z p_{\mathcal{Z}} pZ 是一个高斯密度函数,并且 f ϕ : Z → U f_{\phi} : \mathcal{Z} \rightarrow \mathcal{U} fϕ:ZU 是一个可逆变换:

z ∼ p Z ( z ) , u = f ϕ ( z ) , z = f ϕ − 1 ( u ) z \sim p_{\mathcal{Z}}(z), \quad u = f_{\phi}(z), \quad z = f_{\phi}^{-1}(u) zpZ(z),u=fϕ(z),z=fϕ1(u)

一个基于流的生成模型通过最大化 U \mathcal{U} U 的边际似然来学习这个可逆映射函数:

max ⁡ ϕ E u = BERT ( s ) , s ∼ D [ log ⁡ p Z ( f ϕ − 1 ( u ) ) + log ⁡ ∣ det ⁡ ∂ f ϕ − 1 ( u ) ∂ u ∣ ] \max_{\phi} \mathbb{E}_{u=\text{BERT}(s), s\sim \mathcal{D}} \left[ \log p_{\mathcal{Z}}(f_{\phi}^{-1}(u)) + \log \left| \det \frac{\partial f_{\phi}^{-1}(u)}{\partial u} \right| \right] ϕmaxEu=BERT(s),sD[logpZ(fϕ1(u))+log detufϕ1(u) ]

其中 s s s 是从文本语料库 D \mathcal{D} D 中采样的句子。只有流参数 ϕ \phi ϕ 在优化过程中被优化,而预训练的BERT中的参数保持不变。

BERT-flow已经被证明可以提高大多数语义文本相似性(STS)任务的性能,无论是否有NLI数据集的监督。因为学习用于校准的归一化流不需要标签,它可以利用整个数据集,包括验证集和测试集。

Whitening Operation

Su et al. (2021) 应用了白化操作来改善学习表示的各向同性,并减少句子嵌入的维度。

他们将句子向量的均值变换设置为0,协方差矩阵变换为单位矩阵。给定一组样本 { x i } i = 1 N \{x_i\}_{i=1}^N {xi}i=1N,让 x ~ i \tilde{x}_i x~i Σ ~ \tilde{\Sigma} Σ~ 为变换后的样本和相应的协方差矩阵:

μ = 1 N ∑ i = 1 N x i , Σ = 1 N ∑ i = 1 N ( x i − μ ) ( x i − μ ) T \mu = \frac{1}{N} \sum_{i=1}^N x_i, \quad \Sigma = \frac{1}{N} \sum_{i=1}^N (x_i - \mu)(x_i - \mu)^T μ=N1i=1Nxi,Σ=N1i=1N(xiμ)(xiμ)T

x ~ i = ( x i − μ ) W , Σ ~ = W T Σ W = I ,因此  Σ = ( W − 1 ) T W − 1 \tilde{x}_i = (x_i - \mu)W, \quad \tilde{\Sigma} = W^T \Sigma W = I \text{,因此 } \Sigma = (W^{-1})^T W^{-1} x~i=(xiμ)W,Σ~=WTΣW=I,因此 Σ=(W1)TW1

如果我们得到 Σ \Sigma Σ 的奇异值分解(SVD) U Λ U T U \Lambda U^T UΛUT,我们将有 W − 1 = Λ U T W^{-1} = \sqrt{\Lambda} U^T W1=Λ UT W = U Λ − 1 2 W = U \Lambda^{-\frac{1}{2}} W=UΛ21。注意,在SVD中, U U U 是一个正交矩阵,其列向量为特征向量, Λ \Lambda Λ 是一个对角矩阵,包含按顺序排列的正特征值。

可以通过只取 W W W 的前 k k k 列来应用降维策略,这种方法被称为 w h i t e n i n g − k whitening-k whiteningk

在许多 STS 基准测试中,无论是否有 NLI 监督,白化操作都优于 BERT-flow,并在 256 个句子维度上实现了 SOTA。

Unsupervised Sentence Embedding Learning

Context Prediction

Quick-Thought (QT)vectors (Logeswaran & Lee, 2018)将句子表征学习表述为一个分类问题:给定一个句子及其上下文,分类器根据其向量表征(“cloze test”)将上下文句子与其他对比句子区分开来。这样的表述去除了会导致训练速度减慢的 softmax 输出层。

在这里插入图片描述

f ( ⋅ ) f(\cdot) f() g ( ⋅ ) g(\cdot) g() 是两个将句子 s s s 编码成固定长度向量的函数。设 C ( s ) C(s) C(s) 为在 s s s 上下文中的句子集合, S ( s ) S(s) S(s) 是候选句子集合,包括只有一个真实上下文句子 s c ∈ S ( s ) s_c \in S(s) scS(s) 和许多其他非上下文负句子。Quick Thoughts模型学习优化预测唯一真实上下文句子 s c s_c sc 的概率。它本质上是在考虑句子对 ( s , s c ) (s, s_c) (s,sc) 为正样本对时使用NCE损失,而其他对 ( s , s ′ ) (s, s') (s,s) 其中 s ′ ∈ S ( s ) , s ′ ≠ s c s' \in S(s), s' \neq s_c sS(s),s=sc 作为负样本。

L Q T = − ∑ s ∈ D ∑ s c ∈ C ( s ) log ⁡ p ( s c ∣ s , S ( s ) ) = − ∑ s ∈ D ∑ s c ∈ C ( s ) log ⁡ exp ⁡ ( f ( s ) T g ( s c ) ) ∑ s ′ ∈ S ( s ) exp ⁡ ( f ( s ) T g ( s ′ ) ) \mathcal{L}_{QT} = -\sum_{s \in D} \sum_{s_c \in C(s)} \log p(s_c | s, S(s)) = -\sum_{s \in D} \sum_{s_c \in C(s)} \log \frac{\exp(f(s)^T g(s_c))}{\sum_{s' \in S(s)} \exp(f(s)^T g(s'))} LQT=sDscC(s)logp(scs,S(s))=sDscC(s)logsS(s)exp(f(s)Tg(s))exp(f(s)Tg(sc))

这个损失函数计算每个句子 s s s及其对应的上下文句子 s c s_c sc的对数概率,相对于所有候选句子的得分的归一化。这有助于模型学习区分正确的上下文句子与其他不相关的句子。

Mutual Information Maximization

IS-BERT (Info-Sentence BERT)(Zhang et al. 2020)采用基于相互信息最大化的自监督学习目标,以无监督方式学习良好的句子嵌入。

IS-BERT的工作流程如下:

  1. 使用BERT将输入句子 s s s 编码为长度为 l l l 的令牌嵌入 h 1 : l h_{1:l} h1:l
  2. 然后应用不同核大小(例如1, 3, 5)的1-D卷积网络来处理令牌嵌入序列以捕获n-gram局部上下文依赖性: c i = ReLU ( w ⋅ h i : i + k − 1 + b ) c_i = \text{ReLU}(w \cdot h_{i:i+k-1} + b) ci=ReLU(whi:i+k1+b)。输出序列被填充以保持输入的相同尺寸。
  3. i i i 个令牌的最终局部表示 F θ ( i ) ( x ) \mathcal{F}_\theta^{(i)}(x) Fθ(i)(x) 是不同核大小表示的拼接。
  4. 通过在令牌表示 F θ ( x ) = { F θ ( i ) ( x ) ∈ R d × l } i = 1 l \mathcal{F}_\theta(x) = \{\mathcal{F}_\theta^{(i)}(x) \in \mathbb{R}^{d \times l}\}_{i=1}^l Fθ(x)={Fθ(i)(x)Rd×l}i=1l 上应用时间平均池化层计算全局句子表示 ξ θ ( x ) \xi_\theta(x) ξθ(x)

由于互信息估计通常对于连续和高维随机变量来说是难以处理的,IS-BERT依赖于Jensen-Shannon估计器(Nowozin et al., 2016, Hjelm et al., 2019)来最大化 E θ ( x ) \mathcal{E}_\theta(x) Eθ(x) F θ ( i ) ( x ) \mathcal{F}_\theta^{(i)}(x) Fθ(i)(x) 之间的互信息:
I J S D ω ( F θ ( i ) ( x ) ; E θ ( x ) ) = E x ∼ P [ − sp ( − T ω ( F θ ( i ) ( x ) ; E θ ( x ) ) ) ] − E x ∼ P , x ′ ∼ P ~ [ sp ( T ω ( F θ ( i ) ( x ′ ) ; E θ ( x ) ) ) ] I_{JSD}^\omega(\mathcal{F}_\theta^{(i)}(x); \mathcal{E}_\theta(x)) = \mathbb{E}_{x \sim P}[-\text{sp}(-T_\omega(\mathcal{F}_\theta^{(i)}(x); \mathcal{E}_\theta(x)))] - \mathbb{E}_{x \sim P, x' \sim \tilde{P}}[\text{sp}(T_\omega(\mathcal{F}_\theta^{(i)}(x'); \mathcal{E}_\theta(x)))] IJSDω(Fθ(i)(x);Eθ(x))=ExP[sp(Tω(Fθ(i)(x);Eθ(x)))]ExP,xP~[sp(Tω(Fθ(i)(x);Eθ(x)))]
其中 T ω : F × E → R T_\omega : \mathcal{F} \times \mathcal{E} \rightarrow \mathbb{R} Tω:F×ER 是一个带参数 ω \omega ω 的可学习网络,用于生成判别器得分。负样本 x ′ x' x 是从分布 P ~ = P \tilde{P} = P P~=P 中采样的。 sp ( x ) = log ⁡ ( 1 + e x ) \text{sp}(x) = \log(1 + e^x) sp(x)=log(1+ex) 是softmax激活函数。

\mathcal{E} \rightarrow \mathbb{R}$ 是一个带参数 ω \omega ω 的可学习网络,用于生成判别器得分。负样本 x ′ x' x 是从分布 P ~ = P \tilde{P} = P P~=P 中采样的。 sp ( x ) = log ⁡ ( 1 + e x ) \text{sp}(x) = \log(1 + e^x) sp(x)=log(1+ex) 是softmax激活函数。

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

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

相关文章

刷题记录5.22-5.27

文章目录 刷题记录5.22-5.2717.电话号码的字母组合78.子集131.分割回文串77.组合22.括号生成198.打家劫舍---从递归到记忆化搜索再到递推动态规划背包搜索模板494.目标和322.零钱兑换牛客小白月赛---数字合并线性DP1143.最长公共子序列72.编辑距离300.最长递增子序列状态机DP12…

基于 Pre-commit 的 Python项目代码风格统一实践

背景信息 统一代码风格首先需要定义参照的规范,每个团队可能会有自己的规范,我们选择的规范是 yapf mypy isort,如果保证所有的研发人员都遵循相关规范呢? 鼓励 IDE 中对应的插件的安装,通过直接对应的插件&#x…

Java毕业设计 基于springboot vue考勤管理系统

Java毕业设计 基于springboot vue考勤管理系统 SpringBoot 考勤管理系统 功能介绍 员工 登录 个人中心 修改密码 个人信息 员工请假管理 员工出差管理 薪资管理 员工签到管理 公告管理 管理员 登录 个人中心 修改密码 个人信息 员工管理 员工请假管理 员工出差管理 薪资管理…

Linux修炼之路之自动化构建工具,进度条,gdb调试器

目录 一:自动化构建工具make/makefile 生成内容: 清理内容: 对于多过程的: 对于多次make: 特殊符号: 二:小程序之进度条 三:git的简单介绍 四:Linux调试器gdb 接…

2024年蓝桥杯B组C++——复盘

1、握手问题 知识点:模拟 这道题很简单。但是不知道考试的时候有没有写错。一开始的43个人握手,仅需要两两握手,也就是从42个握手开始,而非43.很可惜。这道题没有拿稳这5分。也很有可能是这5分导致没有进决赛。 总结&#xff1a…

调用萨姆索诺夫函数:深入探索函数的参数与返回值

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、萨姆索诺夫函数的引入与调用 二、如何获取函数的返回值 三、无参数与无返回值的函数调…

06_Tomcat

文章目录 Tomcat1.概念2.Tomcat安装3.Tomcat项目结构4.标准web项目结构5.Tomcat部署项目方式6.IDEA关联Tomcat6.1 构建tomcat和idea关联6.2 使用idea创建一个Javaweb工程6.3 使用idea将工程**构建**成一个app6.4 使用idea将构建好的app**部署**到tomcat中 Tomcat 1.概念 Tomc…

《浪姐》也搞live直播,真成综艺流量密码了?

继《歌手》之后,芒果的另一档综艺《浪姐》也将开启直播。 《乘风2024》官博宣布进行突击加场直播赛,姐姐们将面临全开麦live直播,摇人投票排在前十的姐姐获得live直播抢先权。 这是看《歌手2024》直播赛制火了,也想蹭个热度搞直…

拓展海外市场,助力中国海外运营企业实现全球化发展——工博科技SAP出海数字化解决方案

近年来,在全球化浪潮下,中国出海企业正从简单的产品扩张向更加成熟的跨国经营及全球化发展转变。中资企业要积极拓展国际市场、加大步伐融入全球的生态,打造韧性供应链,但面对风云变幻的国际形势,需要提高自身的风险管…

Java绩效考核系统源码 springboot员工绩效考核系统源码

Java绩效考核系统源码 springboot员工绩效考核系统源码-009 源码下载地址:https://download.csdn.net/download/xiaohua1992/89352195 项目介绍 本系统的功能分为管理员和员工两个角色 管理员的功能有: (1)个人中心管理功能&a…

基于Pytorch框架的深度学习ShufflenetV2神经网络十七种猴子动物识别分类系统源码

第一步:准备数据 17种猴子动物数据: self.class_indict ["白头卷尾猴", "弥猴", "山魈", "松鼠猴", "叶猴", "银色绒猴", "印度乌叶猴", "疣猴", "侏绒"…

DDR、LPDDR和GDDR的区别

1、概况 以DDR开头的内存适用于服务器、云计算、网络、笔记本电脑、台式机和消费类应用,支持更宽的通道宽度、更高的密度和不同的形状尺寸。 以LPDDR开头的内存适合面向移动和汽车这些对规格和功耗非常敏感的领域,提供更窄的通道宽度和多种低功耗运行状态…

node.js学习P3-P10

P3 npm package.json(package解读npm工具换镜像源) 一个package.json文件可以的作用 作为一个描述文件,描述了你的项目依赖哪些包 ,用来干什么的允许我们使用“语义版本规则”,指明你项目依赖的版本让你的构建更好的…

cin-getline缓存区

更多资源请关注纽扣编程微信公众号 cin.sync()清除缓存区 如果需要输入如下内容 3 This is C language. This is JAVA language. This is Python language. 写如下程序 #include<bits/stdc.h> using namespace std; string str[100]; int main(){int n;cin>&…

【Pandas】配合Numpy做数据异常值处理

1.四分卫间距确定数据范围 numpy.quantile(a, q, axisNone, outNone, overwrite_inputFalse, methodlinear, keepdimsFalse, *, interpolationNone)[source]计算指定轴的n分位数 参数q给定指定的几分位数&#xff0c;范围[0,1] import numpy as np import pandas as pd def …

每日一题——Python实现PAT甲级1029 Median(举一反三+思想解读+逐步优化)

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的方法 代码功能和结构点评 时间复杂度分析 空间复杂度分析 优化建议 我要更强…

【Text2SQL 论文】IncSQL:通过增量式生成 action 序列来得到 SQL

论文&#xff1a;IncSQL: Training Incremental Text-to-SQL Parsers with Non-Deterministic Oracles ⭐⭐⭐ ICLR 2019&#xff0c;arXiv:1809.05054, Microsoft Research 一、论文速读 本文提出了 IncSQL&#xff0c;一个使用 Non-Deterministic Oracles 思路的增量式 Text…

从零开始打造教育APP:在线教育系统源码与开发流程

很多人疑问&#xff0c;应该如何从零开始打造一个在线教育APP&#xff1f;今天&#xff0c;小编将详细为大家讲解在线教育系统的源码与开发流程。 一、需求分析 对于在线教育APP&#xff0c;需要要明确以下几点&#xff1a; 1.目标用户&#xff1a;明确APP的用户群体&#xf…

字符串和字符串函数(1)

前言&#xff1a; 字符串在C语言中比较特别&#xff0c;没有单另的字符串类型&#xff0c;想要初始化字符串必须用字符变量的数组初始化&#xff0c;但是在C语言标准库函数中提供了大量能对字符串进行修改的函数&#xff0c;比如说可以实现字符串的的拷贝&#xff0c;字符串的追…

判断dom元素是否滚动到底、是否在可视区域

概览 我们日常开发中&#xff0c;在面对懒加载、虚拟列表需求时&#xff0c;经常需要判断dom元素是否滚动到底、是否在可视区域。但是由于涉及的属性太多了&#xff0c;比如scrollTop、clientHeight、scrollHeight、getBoundingClientRect()等属性&#xff0c;现根据这两个场景…