通过负样本挖掘炼出更强Embedding模型

一句话总结:Conan-Embedding模型,旨在通过利用更多和更高质量的负样本来提升嵌入模型的能力。

论文原文: https://arxiv.org/pdf/2408.15710

研究方法

图片

预训练阶段:

  • 使用标准数据过滤方法(参考Internlm2)对数据进行预处理。
  • 使用bge-large-zh-v1.5模型进行评分,丢弃评分低于0.4的数据。
  • 使用InfoNCE损失函数和In-Batch Negative方法进行训练,公式如下:其中,表示正样本的查询,表示正样本的段落,表示同一批次中其他样本的段落,视为负样本。

监督微调阶段:

  • 将任务分为检索和语义文本相似性(STS)两类。

  • 检索任务使用InfoNCE损失函数,公式如下:

    其中,表示查询,表示正样本,表示负样本。

  • STS任务使用CoSENT损失函数,公式如下:

    其中,是温度参数,是余弦相似度函数。

  • 动态硬负样本挖掘:

    • 记录每个数据点的当前平均负样本得分。
    • 每100次迭代后,如果得分乘以1.15小于初始得分且绝对值小于0.8,则认为该负样本不再具有挑战性,并进行新一轮的硬负样本挖掘。

图片

跨GPU平衡损失:

  • 在每个前向-损失-反向-更新周期内,以平衡的方式引入每个任务,以获得稳定的搜索空间并最小化单次模型更新方向与全局最优解之间的差异。
  • 对于检索任务,确保每个GPU有不同的负样本,同时共享相同的查询和正样本;对于STS任务,增加批次大小以包含更多案例进行比较。公式如下:其中,是查询和正文本之间的评分函数,通常定义为余弦相似度,是共享查询和正文本的GPU数量,是温度参数,设置为0.8。

图片

实验设计

数据集:

  • 在预训练阶段,收集了0.75亿对文本数据,分为标题-内容对、输入-输出对和问答对等类别。
  • 在微调阶段,选择了常见的检索、分类和STS任务的数据集。

实现细节:

  • 使用BERT作为基础模型,并通过线性层将维度从1024扩展到1792。
  • 使用AdamW优化器和学习率1e-5进行预训练,批量大小为8,使用64个Ascend 910B GPU进行训练,总时长为138小时。
  • 微调阶段使用相同的优化器参数和学习率,批量大小为4(检索任务)和32(STS任务),使用16个Ascend 910B GPU进行训练,总时长为13小时。

结果与分析

  • CMTEB结果:

    • Conan-Embedding模型在CMTEB基准测试中的平均性能为72.62,超过了之前的最先进模型。
    • 在检索和重排序任务中,Conan-Embedding模型表现出显著的性能提升,表明增加的负样本数量和质量使模型能够看到更具挑战性的负样本,从而增强了其召回能力。
  • 消融研究:

    • 动态硬负样本挖掘和跨GPU平衡损失显著优于直接使用标准InfoNCE损失和CoSENT损失进行微调的方法。
    • Conan-Embedding模型在检索和重排序任务中的表现尤为突出,进一步验证了该方法的有效性。

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

Graph Embedding是一种将图中的节点映射到低维向量空间的技术。通过Graph Embedding,我们可以将图中的节点表示为具有语义信息的向量,从而方便进行机器学习和数据挖掘任务。Graph Embedding可以用于图数据的可视化、节点分类、链接预测等任务。 在给定的引用中,提到了两种Graph Embedding的方法:DeepWalk和Struc2Vec。 1. DeepWalk是一种基于随机游走的Graph Embedding方法。它通过在图中进行随机游走来模拟节点之间的邻近关系,并将游走序列作为训练样本来学习节点的向量表示。具体步骤如下[^1]: - 从图中的每个节点开始,进行多次随机游走,得到游走序列。 - 使用Skip-gram模型训练节点的向量表示,使得节点的向量能够预测其周围节点出现的概率。 - 得到节点的向量表示,可以用于节点分类、链接预测等任务。 2. Struc2Vec是一种基于图的结构相似性的Graph Embedding方法。它通过考虑节点的邻居节点和邻居节点之间的关系来学习节点的向量表示。具体步骤如下: - 构建图的邻接矩阵,表示节点之间的连接关系。 - 使用随机游走的方式获取节点的邻居节点序列。 - 使用Skip-gram模型训练节点的向量表示,使得节点的向量能够预测其邻居节点出现的概率。 - 得到节点的向量表示,可以用于节点分类、链接预测等任务。 以上是关于Graph Embedding的简要介绍和两种常见方法的说明。如果你对具体的实现细节或其他相关问题感兴趣,请告诉我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值