[论文笔记]SGPT: GPT Sentence Embeddings for Semantic Search

server/2024/10/20 8:53:33/

引言

解码器Transformer的规模不断壮大,轻松达到千亿级参数。同时由于该规模,基于提示或微调在各种NLP任务上达到SOTA结果。但目前为止解码器Transformer还无法应用在语义搜索或语句嵌入上。

为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。

作者提出了SGPT方法来解决这一问题,代码开源在 https://github.com/Muennighoff/sgpt

1. 总体介绍

现阶段主要依赖于类似BERT的仅编码器Transformer编码句嵌入以提供语义搜索。因为目前尚未清楚如何从解码器中提取语义嵌入。但这种做法的好处是明显的:

  • 性能 解码器的参数量巨大,这有可能产生SOTA结果;
  • 节省计算 只需要维护解码器架构,只训练一个大规模解码器并将其重用于搜索可以节省成本;

image-20241003093940066

图1: 给定一个查询 q q q,文档 d 1 − 3 d_{1-3} d13,SGPT通过分数 s 1 − 3 s_{1-3} s13对文档进行排序。(a)Cross-Encoder拼接查询和文档然后一起编码。分数是对数概率。(b)Bi-Encoder分别对查询和文档进行编码,生成的文档向量 v 1 − 3 v_{1-3} v13可以缓存起来然后可以在新查询进来的时刻 t c t_c tc被访问。分数是预先相似度。

在本篇工作中,我们提出SGPT将仅解码器应用于语义搜索并提取有语义的句子嵌入。区分四种设置:Cross-Encoder、Bi-Encoder、对称以及非对称。

2. 相关工作

Cross-Encoder同时对查询和文档进行编码。

Bi-Encoder分别对查询和文档进行编码。有研究者提出了一个基于GPT的Bi-Encoder cpt-text。

Cross-Encoder往往优于Bi-Encoder,但速度较慢。

非对称搜索意味着查询和文档不可互换。

对称搜索意味着查询和文档可以互换。

3. SGPT Cross-Encoder

3.1 非对称搜索

给定查询 q q q和文档语料库 D D D,对最有可能的文档 d ∗ d^* d感兴趣,使用贝叶斯理论可以表示为:
d ∗ = arg ⁡ max ⁡ d ∈ D P ( d ∣ q ) = arg ⁡ max ⁡ d ∈ D P ( q ∣ d ) P ( d ) P ( q ) = arg ⁡ max ⁡ d ∈ D P ( q ∣ d ) P ( d ) (1) d^* = \arg \max_{d \in D}P(d|q) = \arg \max_{d\in D} \frac{P(q|d)P(d)}{P(q)} = \arg \max _{d \in D} P(q|d)P(d) \tag 1 d=argdDmaxP(dq)=argdDmaxP(q)P(qd)P(d)=argdDmaxP(qd)P(d)(1)
由于文档的长度是可变的且计算 P ( q ∣ d ) P(q|d) P(qd) P ( d ∣ q ) P(d|q) P(dq)容易,因此我们给定嵌入提示 P P P的文档标记,计算查询标记 q i , ⋯ , n q_{i,\cdots,n} qi,,n的联合概率为 p ( q i , ⋯ , q n ∣ p 1 , ⋯ , p i − 1 ) p(q_{i},\cdots,q_n|p_1,\cdots,p_{i-1}) p(qi,,qnp1,,pi1)。因为 P ( d ) P(d) P(d)通常在语料库 D D D中不会变化,而忽略 P ( d ) P(d) P(d)

在实践中使用对数概率——模型输出的softmax的对数。

3.2 对称搜索

image-20241003203141697

表3: Quora上的SGPE-CE(Cross-Encoder)对称搜索结果。来自{query}的对数概率之和作为重排名分数。从{doc}左侧截断过长的标记。重排名前100的文档,分数为nDCG@10。

使用§3.1中相同的方法,但调整对称搜索的提示。如表3所示。

4. SGPT Bi-Encoder

4.1 对称搜索

由于自回归解码器Transformer的因果注意掩码,即每个位置的token只能感知到其之前的信息。因此,只有最后一个token关注了序列中的所有标记。SGPT提出使用位置加权池化方法为后面的标记赋予更高的权重:
v = ∑ i = 1 S w i h i where w i = i ∑ i = 1 S i (2) v = \sum_{i=1}^S w_ih_i \quad \text{where} \quad w_i = \frac{i}{\sum_{i=1}^S i} \tag 2 v=i=1Swihiwherewi=i=1Sii(2)
S S S是序列长度; h i h_i hi是第 i i i个隐藏状态; v v v是查询或文档嵌入。

我们将加权均值池化与最后一个标记池化进行比较,其中最后一个标记的隐藏状态是嵌入或常规的均值池化。

使用批内负样本进行监督对比学习,给定查询-文档对 { q ( i ) , d ( i ) } i = 1 M \{q^{(i)},d^{(i)}\}_{i=1}^M {q(i),d(i)}i=1M,优化损失函数:
J CL ( θ ) = 1 M ∑ i = 1 M log ⁡ exp ⁡ ( τ ⋅ σ ( f θ ( q ( i ) ) , f θ ( d ( i ) ) ) ) ∑ j = 1 M exp ⁡ ( τ ⋅ σ ( f θ ( q ( i ) ) , f θ ( d ( j ) ) ) ) (3) J_\text{CL}(\theta) = \frac{1}{M} \sum_{i=1}^M \log \frac{\exp(\tau \cdot \sigma(f_\theta(q^{(i)}), f_\theta(d^{(i)})))}{\sum_{j=1}^M \exp(\tau \cdot \sigma(f_\theta(q^{(i)}), f_\theta(d^{(j)})))} \tag 3 JCL(θ)=M1i=1Mlogj=1Mexp(τσ(fθ(q(i)),fθ(d(j))))exp(τσ(fθ(q(i)),fθ(d(i))))(3)
f θ f_\theta fθ是SGPT模型,输出固定大小的向量; σ \sigma σ是余弦相似度; τ \tau τ是一个温度参数,设为 20 20 20,相当于除以 0.05 0.05 0.05。在训练和推理期间,将序列长度限制为75个标记。

4.2 非对称搜索

遵守§4.1中同样的设置。对于非对称搜索,将模型序列长度限制为300个标记。增加括号使模型区分查询和文档,将查询 q q q的标记增加两个中括号作为 [ q 0 − n ] [q_{0-n}] [q0n],文档使花括号 { d 0 − n } \{d_{0-n}\} {d0n}

5. 结论

这篇工作介绍了SGPT,提出对GPT模型进行修改,将它们用于语义搜索的Cross-或Bi-编码器。

SGPT-BE使用位置加权均值得到最先进的句子嵌入,可以用于语义搜索或其他嵌任务。

SGPT-CE提取预训练GPT模型的对数概率产生无监督的最先进的搜索结果,但只能用于语义搜索。

B任务和实验细节

B.1 提示

image-20241003211401103

image-20241003211415639

总结

⭐ 作者提出了利用仅编码器的类GPT架构来产生句子嵌入以支持语义检索和其他嵌入任务。在Bi-Encoder设置中,使用位置加权平均池化来得到具有语义信息的句子嵌入。在Cross-Encoder设置中,提取预训练GPT模型的对数概率产生无监督结果。


http://www.ppmy.cn/server/127405.html

相关文章

IP 数据包分包组包

为什么要分包 由于数据链路层MTU的限制,对于较⼤的IP数据包要进⾏分包. 什么是MTU MTU相当于发快递时对包裹尺⼨的限制.这个限制是不同的数据链路对应的物理层,产⽣的限制. • 以太⽹帧中的数据⻓度规定最⼩46字节,最⼤1500字节,ARP数据包的⻓度不够46字节,要在后⾯补填 充…

java判断ip是否为指定网段

前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 一、IP地址介绍 1.1 IP(IPv4) IP是Internet Protocol的缩写,即网际协议,它是计算机…

英语不好可以学编程吗?

目录 一、编程语言的词汇学习二、错误调试与英文阅读能力三、技术文档的翻译问题四、编程英文难度有限 在探讨编程学习与英语能力提升之间的关系时,我们可以从多个维度来分析这一现象。 一、编程语言的词汇学习 编程语言的构建往往基于英语,因此&#x…

C#中的结构

结构是几个数据组成的数据结构 1)结构是一种值类型,用来封装一组相关的变量 2)想方法传递结构时候,通过值传递的方式进行传递 3)结构的实例化可以不用new 4)结构的构造函数必须带参数 5)不…

iOS--RunLoop原理

前言 曾经在写项目的时候遇到过这么一个问题。: 项目中添加了一个tableview,然后还有一个计时器,当滑动tableview的时候会阻塞计时器,你得执行这么一段代码后,计时器才能正常运行。 RunLoop.current.add(timer, for…

滚雪球学Oracle[5.1讲]:Oracle数据库管理与维护

全文目录: 前言0. 上期回顾1. 用户与权限管理1.1 数据库安全模型的设计1.2 角色的分层与权限继承管理1.3 复杂环境中的权限审计与管理 2. 数据库备份与恢复基础2.1 备份策略的设计与实施2.2 增量备份与差异备份的配置2.3 使用RMAN进行灾难恢复 3. 数据库性能监控与优…

15分钟学 Python 第34天 :小项目-个人博客网站

Day 34: 小项目-个人博客网站 1. 引言 随着互联网的普及,个人博客已成为分享知识、体验和见解的一个重要平台。在这一节中,我们将使用Python的Flask框架构建一个简单的个人博客网站。我们将通过实际的项目来学习如何搭建Web应用、处理用户输入以及管理…

民峰:助力投资者实现财务自由

在复杂多变的金融市场中,选择一个值得信赖的投资平台是每位投资者成功的关键。民峰凭借其丰富的市场经验、创新的技术和优质的客户服务,成为众多投资者的优选。本文将深入分析民峰的核心优势,帮助投资者在瞬息万变的市场中把握财富增值的机会…