当前位置: 首页 > news >正文

bge-base embedder论文解读

  • 论文标题:C-Pack: Packed Resources For General Chinese Embeddings

  • 论文地址:https://arxiv.org/pdf/2309.07597

  • 论文发布时间:2023 年 9 月 14 日

本篇论文很多都是对工作量的叙述,技术性较弱,读起来 20 分钟就能看完。放心食用~

论文有开源的代码和 python 库FlagEmbedding,其代码库是我目前见过结构、优雅性最好的 py 包之一。

关于 BGE- C-Pack 需要掌握的知识

  1. BGE-base 系列模型结构

  2. BGE-base 系列模型训练流程

对于 BAAI 开源的整个 python 库FlagEmbedding,其提供的核心功能分为嵌入模型和重排模型,每种功能又分为 Encoder 和 Decoder,然后还可以根据技术再细分。

本篇论文就是下图中的BaseEmbedder模型的分支。

在这里插入图片描述

Abstract

论文的贡献是 C-Pack,一套能推动中文通用文本嵌入领域发展的资源包。C-Pack 包含三项关键资源。

  1. C-MTP 是一个大规模的文本嵌入训练数据集,它基于对海量无标注语料的整理以及高质量标注语料的整合。

  2. C-MTEB 是一个全面的中文文本嵌入基准,涵盖 6 项任务和 35 个数据集。

  3. BGE 是一个涵盖多种规模的嵌入模型系列。模型在 C-MTEB 上的表现超过了所有以往的中文文本嵌入模型,提升幅度超过 10%。

Introduction

在这里插入图片描述

各种各样的应用场景需要一个单一的统一嵌入模型,该模型能够在任何应用场景(例如问答、语言建模、对话)中处理各种用途(如检索、排序、分类)。然而,学习通用文本嵌入比学习特定任务的文本嵌入更具挑战性。以下因素至关重要:

  • 数据。通用文本嵌入的发展对训练数据提出了更高的要求,具体体现在规模、多样性和质量。

  • 训练。通用文本嵌入的训练取决于两个关键要素:一个合适的 backbone 编码器和一个恰当的训练方案。训练通用文本嵌入并非依赖单一算法,而是需要复合方案。具体而言,需要面向嵌入的预训练来准备文本编码器,需要结合复杂负采样的对比学习来提高嵌入的辨别能力,还需要基于指令的微调来整合文本嵌入的不同表示能力。

  • 基准。另一个先决条件是建立适当的基准,通过这些基准可以全面评估文本嵌入的所有必要能力。

近年来,该领域取得了持续进展,例如 Contriever、E5、GTR 和 OpenAI 文本嵌入。然而这些模型大多专注于以英语为中心的场景。相比之下,具有竞争力的通用中文嵌入模型十分匮乏。

为了应对上述挑战,论文提出了一个名为 C-Pack 的资源包,它从以下几个方面为通用中文嵌入的发展做出贡献。

  • C-MTEB(中文大规模文本嵌入基准)。该基准是作为 MTEB 的中文扩展而建立的。C-MTEB 收集了 35 个公开可用的数据集,这些数据集分属 6 类任务。

  • C-MTP(中文大规模文本对)。这是一个包含 1 亿个文本对的大规模训练数据集。该数据集的大部分内容来自海量网络语料库,例如百度百科、知乎以及中国的主要新闻网站。利用数据中丰富的结构化信息提取语义相关的文本对,如标题与文档、副标题与段落、问题与答案、问题与相似问题等。提取的数据会经过进一步清洗,用于文本嵌入的大规模弱监督训练。还整合了多种标记数据集,为文本嵌入的最终优化提供高质量的监督信号。

  • BGE(北京人工智能研究院通用嵌入模型)。提供了一系列训练良好的中文通用文本嵌入模型。有三种可选的模型规模:小型(2400 万参数)、基础型(1.02 亿参数)和大型(3.26 亿参数)。

  • 训练方案。论文还整合并优化了训练方法,以构建通用文本嵌入,包括面向嵌入的文本编码器的预训练、通用对比学习和特定任务微调。

C-Pack

Benchmark: C-MTEB

论文收集了总共 35 个与中文文本嵌入评估相关的公开数据集。所收集的数据集根据其可能评估的嵌入能力进行分类,评估任务分为 6 组:检索、重排序、STS(语义文本相似度)、分类、配对分类和聚类,每个类别下都有多个数据集。

  1. 检索。检索任务需要处理测试查询和一个大型语料库。对于每个查询,它会在语料库中找到最相似的前𝑘个文档。检索质量可以通过不同截断点的排序和召回率指标来衡量。NDCG@10 作为主要指标。

  2. 重排序。重排序任务会给出测试查询及其候选文档(1 个正面文档加 N 个负面文档)。对于每个查询,它会根据嵌入相似度对文档进行重排序。平均准确率(MAP)分数被用作主要指标。

  3. STS(语义文本相似度)。STS 任务是基于两个句子的嵌入相似度来衡量它们的相关性。使用给定的标签计算斯皮尔曼相关系数为主要指标。

  4. 分类。分类任务平均精度被用作主要指标。

  5. 句子对分类。该任务处理一对输入句子,其关系由二值化标签表示。通过嵌入相似度来预测这种关系,其中平均精度被用作主要指标。

  6. 聚类。聚类任务是将句子分组为有意义的簇。使用小批量 k 均值方法进行评估,批量大小为 32,k 等于小批量内的标签数量。V-measure 分数被用作主要指标。

Training Data: C-MTP

在这里插入图片描述

论文构建了最大的数据集 C-MTP,用于通用中文嵌入的训练。C-MTP 的数据来源于两个渠道。大部分数据基于对海量无标签数据的整理,即 C-MTP(无标签),包含 1 亿对文本。同时,小部分数据来自对高质量有标签数据的综合整合,即 C-MTP(有标签),约有 100 万对文本。数据收集过程简要介绍如下。

C-MTP(无标签)。寻找各种各样的语料库,从中可以从纯文本中提取丰富语义的成对结构。数据主要来源是开放网络语料库,对于每篇文章,都会提取诸如(标题、正文)、(副标题、段落)等结构,以形成文本对。此外,还从知乎、百科、新闻网站等其他网络内容中收集数据,这些数据补充了其他形式的文本对,特别是(问题、答案)、(标题改写)、(答案改写)等。除了公开的网络内容,还探索了其他公开的中文数据,例如 CSL(科学文献)、Amazon-Review-Zh(主题及其评论)、Wiki Atomic Edits(改写文本)、CMRC(机器阅读理解)、XLSUM-Zh(摘要)等。

C-MTP(有标签)。收集有标签的数据是为了进一步扩充训练数据。包含以下有标签的数据集:T2−RankingT^{2}-RankingT2Ranking、DuReader、mMARCO、CMedQA-v2、multi-cpr、NLI-Zh、cmnli 和 ocn li。总共有 838,465 对文本,包含了各种问答和释义模式。

Model Class: BGE

BGE-base 系列模型基于类 BERT 架构,经过三个阶段的训练。有三种规模可供选择:大型(含 3.26 亿参数)、基础型(含 1.02 亿参数)和小型(含 2400 万参数)。

Training Recipe

在这里插入图片描述

BGE 的训练方案包含三个主要部分:

1)使用纯文本进行预训练;

2)使用 C-MTP(无标签)进行对比学习;

3)使用 C-MTP(有标签)进行多任务学习。

预训练。模型在海量纯文本上进行预训练,以更好地支持嵌入任务。采用了 RetroMAE 中提出的 MAE 风格方法,该方法简单但高效。被污染的文本被编码为其嵌入,然后通过轻量级解码器从该嵌入中恢复出干净的文本:

min⋅∑x∈X−logDec(x∣eX~),eX~←Enc(X~)min \cdot \sum_{x \in X}-log Dec\left(x | e_{\tilde{X}}\right), e_{\tilde{X}} \leftarrow Enc(\tilde{X})minxXlogDec(xeX~),eX~Enc(X~)

通用微调。预训练模型通过对比学习在 C-MTP(无标签)上进行微调,旨在学习区分成对文本与其负样本:

min⋅∑(p,q)−loge(ep,eq)/τe(ep,eq)/τ+∑Q′e(ep,eq′)/τmin \cdot \sum_{(p, q)}-log \frac{e^{\left(e_{p}, e_{q}\right) / \tau}}{e^{\left(e_{p}, e_{q}\right) / \tau}+\sum_{Q'} e^{\left(e_{p}, e_{q'}\right) / \tau}}min(p,q)loge(ep,eq)/τ+Qe(ep,eq)/τe(ep,eq)/τ

其中,p 和 q 是成对文本,q′∈Q′q' \in Q'qQ是负样本,𝜏是温度。对比学习的一个关键因素是负样本。论文没有刻意挖掘难负样本,而是完全依赖批次内负样本,并采用较大的批次大小(高达 19,200)来提高嵌入的辨别能力。

特定任务微调。嵌入模型使用带标签的 C-MTP 进一步微调。带标签的数据集规模较小,但质量更高。然而,其中包含的任务类型不同,其影响可能相互矛盾。采用两种策略来缓解这一问题。

一方面,利用基于指令的微调,通过区分输入来帮助模型适应不同的任务。对于每个文本对,在查询侧附加一个特定任务指令It:q′←q+ItI_{t}:q' \leftarrow q+I_{t}Itqq+It。该指令是一个语言提示,用于明确任务的性质,例如“search relevant passages for the query”。

另一方面,更新负采样:除了批次内负样本外,为每个文本对挖掘一个难负样本。

Experiments

General Evaluation

在这里插入图片描述

论文的模型大幅超越了现有的中文文本嵌入模型。这不仅体现在平均性能上的压倒性优势,还在 C-MTEB 的大多数任务中都有显著提升。提升最明显的是检索任务,其次是 STS、句子对分类和重排序任务。

Detailed Analysis

先分析训练数据 C-MTP 的影响。

C-MTP 由两部分组成。1)C-MTP(无标签),用于通用微调;此阶段生成的模型称为中间检查点,记为 BGE-pretrain。2)C-MTP(有标签),在 BGE-pretrain 的基础上进一步进行特定任务微调;此阶段生成的模型称为最终检查点,记为 BGE-finetune。从实验结果中的观察,C-MTP(无标签)和 C-MTP(有标签)都对嵌入质量有显著贡献。

然后分析指令微调的影响。

在特定任务微调过程中对指令的运用,特定任务指令充当硬提示。它会区分嵌入模型的激活状态,使模型能更好地适应各种不同的任务。通过移除这一操作进行了消融研究,记为“w.o. Instruct”。

再分析预训练的影响。

论文使用专门预训练的文本编码器来训练 BGE,而不是使用像 BERT 和 RoBERTa 这样的常见选择。为了探究其影响,将预训练文本编码器替换为广泛使用的 Chinese-RoBERTa,记为“BGE w.o. pre-train”。

最终消融结果见表 3。

在这里插入图片描述

最后分析训练 batch 的影响。

论文训练方案的一个显著特点是,在对比学习中采用了较大的批次大小。根据以往的研究,嵌入模型的学习可能会受益于负样本数量的增加。由于依赖批次内的负样本,因此需要尽可能扩大批次大小。通过对批次大小(记为 bz)分别为 256、2028 和 19,200 的情况进行对比,发现随着批次大小的增加,嵌入质量有持续的提升。其中,检索性能的提升最为显著。这可能是因为检索通常是在大型数据库上进行的,此时嵌入需要具有高度的区分性。

在这里插入图片描述

http://www.dtcms.com/a/533743.html

相关文章:

  • 强化学习推荐系统:不同的探索策略——高斯探索策略(4.2)
  • 网站建设目标文档ps做任务挣钱的网站
  • 东莞在哪里学网站建设无形资产 网站开发
  • 高端学校网站建设公司网站搜索引擎排名分析
  • iis配置wordpressseo关键词推广公司
  • LeetCode 刷题【134. 加油站】
  • 哪些大型网站用python做的太原网络营销外包
  • 建设官方网站分享类网站源码
  • 大连网站流量优软件外包公司创业
  • 百度网站建设中心管理型网站建设费用明细
  • 排序数组(快速排序算法)
  • 安阳网站建设官网开发app的注意事项
  • 具身智能π0.5(pi0.5)模型在lerobot机械臂上复现
  • 成功的网站应该具备哪些要素wordpress恢复旧编辑器
  • 怎么做免费的网站商城以个人名义可以做网站吗
  • 网站开发总结性报告seo搜索优化是什么
  • 淄博手机网站营销型网站建设区别
  • 扬州有做义工的地方或网站嘛怎样设计电子商务网站的建设
  • 康复网站模板怎么做网站 组成
  • C语言的发展历史
  • 大数据和网站建设品牌餐饮加盟网站建设
  • 做企业规划的网站现在有专业做海鲜的网站没有
  • 【020】使用Google Test进行 C++ 单元测试:基于 CMake 和 FetchContent 的现代方法
  • 展开网站建设商城网站前台模板
  • 个人建站 wordpressuml电子商务网站建设文档
  • 做软件的网站phpwordpress防采集
  • 网站正在建设中 html 模板何做好网站建设销售
  • 数据库第三次项目实战
  • 合肥外贸网站建设公司排名网站建设项目实训报告
  • 免费网站的资源可以发公众号吗做产品表情的网站