ACL2023 | 面向信息检索的结构感知语言模型训练方法
作者 | 李欣泽、刘正皓等
单位 | 东北大学
来源 | 社媒派SMP
进NLP群—>加入NLP交流群
论文作者:
作者单位:
论文链接:
代码链接:
结构化数据(如代码、HTML 文档和商品描述)在文章、书籍和网页中无处不在。学习文本结构背后的语义信息来表示结构化数据,对于构建更完备的检索系统至关重要。如图 1,结构化数据检索任务,如代码检索和商品检索,要求模型根据用户查询检索结构化数据。稠密向量检索是一种常用的信息检索方法,通过在向量空间中对用户查询和结构化数据进行编码,并根据向量的相似度进行匹配,来返回用户所需要的结构化数据。
▲ 图1. 非结构化数据检索示例图
然而,大多数预训练语言模型缺乏结构感知预训练,无法为结构化数据检索提供有效的向量表示。相关工作提出了一些结构感知预训练方法,用于继续训练预训练语言模型使其具备结构感知能力,来更好地表示结构化数据。这些方法通常设计了特定的掩码策略,并使用掩码语言建模对预训练语言模型进行训练。
面向结构感知的语言模型预训练方法
▲ 图2. 结构感知预训练方法描述图。我们使用了结构数据对齐(SDA)和掩码实体预测(MEP)两种预训练方法。
针对结构数据检索,我们提出了面向结构感知的稠密向量检索方法(Structure Aware DeNse ReTrievAl, SANTA)。如图 2 所示,SANTA 设计了两个预训练任务:结构数据对齐(Structured Data Alignment,SDA)和掩码实体预测(Masked Entity Prediction,MEP)来继续训练预训练语言模型,使其对结构化数据更加敏感,更好地学习到结构化数据的表示。
1. 数据收集和处理:我们使用结构化和非结构化数据之间存在的自然对齐信号,代码-描述文档和商品描述-商品要点,来构造预训练数据对。对于代码,我们将一些代码标识符视为实体,如变量、函数名、外部库和方法,并且在 Python 和其它编程语言中分别使用 BytesIO 和 tree_sitter 来识别实体。对于商品描述,我们使用 NLTK 工具来识别同时出现在商品描述和标题中的名词及特殊名词,并将它们视为实体。
2. 结构数据对齐:我们计算编码后的非结构化数据与结构化数据之间的相似性得分,然后使用对比学习来继续训练语言模型。通过将两种模态数据对齐训练来指导语言模型优化向量空间。
▲ 公式1. 结构数据对齐。由批内负样本中采样的结构数据组成
▲ 公式2. 掩码实体预测
▲ 表1. 不同检索模型在代码检索和商品检索任务上效果
▲ 表2. 消融实验
如表 2 所示,在基线模型上增加 MEP 任务与之前表现几乎相同,说明单纯使用掩码语言模型方法对于结构化文本的表示学习几乎没有作用。但与 MEP 不同,SDA 任务在两个结构化数据检索任务中都取得了显著的改进。当同时使用两个预训练任务后,检索性能会进一步提高。这一现象表明 MEP 任务可以通过与 SDA 任务相结合为结构化数据提供更有效的向量表示。
▲ 图3. 不同预训练方法向量空间展示
总结
进NLP群—>加入NLP交流群
微信扫码关注该文公众号作者