基于对比学习的NN语言模型训练方法

背景

1)语言模型(language model,简称LM),是对语句的概率分布的建模。通俗来讲,就是判断一个语言序列是否是正常语句,即是否是“人话”。作为query理解的重要基础模块,主要应用于不完整query的识别、低质query打压等任务上。

语言模型建模:该任务就是预测每一个位置的词对应的下一个词是什么,最后将每个位置的概率输出相乘,从而对query质量进行打分。
图1:语言模型建模方式

2)对比学习是近年来比较火的自监督训练方式,最早用于CV领域。随着SimCSE模型问世,对比学习也在nlp领域受到较大关注,并取得不错的效果。

3)目前对比学习主要在NLU任务上进行改造,还没有在语言模型任务上进行改造的工作。因此本文尝试着将对比学习用于语言模型训练任务中。

方案

原训练方案的缺点

从图1中可以看出,“北”对应的正标签为“京”,其余为负标签。“京”对应的正标签为“气”, 其余为负标签。该方法会有以下几个问题:

  1. 负标签不够准确:以“北”为例,他的正标签是“京”。而负标签是词表中除了“京”以外的其他词,但这些所谓的负标签并不完全都是真正的负标签。比如“北海天气很好”也是个正常的句子,因此“海”也可以是“北”的正标签,而不是负标签。
  2. 负标签不够有区分度:以“天”为例,他的正标签是“气”,负标签包含一系列其他字,如“安”、“汽”、“坛”等,但这里面“汽”应该比其他两次字更负向,因为“北京天安门”、“北京天坛”都是正常的句子,而“北京天汽”的“汽”应该是错别字

现方案

针对「负标签不够准确」和「负标签不够有区分度」的问题,我们从「数据增强」和「损失函数改造」两个方面进行优化。

数据构造

首先针对「query不完整」的问题,设计了“随机位置删除”和“随机个数删除”的数据增强方式。“随机位置删除”表示可以从query的任意位置开始删除。“随机个数删除”表示可以删除任意字数。
例子如:比如完整query是“北京天气”,删除了最后一个位置的字后,query就是“北京天”。因此“天”对应的正标签就是“气”,负标签是“[eos]”。

图2:随机删除后的lstm建模方式,其中输出层的红色字体为正标签,绿色字体为我们构造的“删除”负标签
其次针对「query错别字」的问题,设计了“错别字替换”的数据增强方式。利用开源和公司积累的错别字词表,人工构造一批负标签。比如query“悬梁刺股的故事”, 那么“刺”的正标签为“股”。而错别字词表中刚好有“悬梁刺骨->悬梁刺股”,那么我们可以将“骨”作为“刺”的负标签,进行额外信号增强。当然当前错别字词表不可能覆盖所有的样本,所以也可以通过形近字和同音字来构建负样本,比如“脉搏跳动很快”,“脉”的负样本可以是“博”、“薄”等,只要是同音就可以。
图3:错别字替换后的lstm建模方式,其中输出层的红色字体为正标签,绿色字体为我们构造的“替换”负标签
这样构造的负标签置信度是比较高。因为在上下文语境中,几乎不可能出现同音字或同形字替换后,语义还是通顺的。比如“北京天气”,任何“qi”字(除了“气”)进行替换,都是语义不通顺的。

损失函数改造

我们设计的损失函数主要包含三部分:

  1. 语言模型loss:这是个多分类的loss,类别大小对应词表的大小,记住lm_loss。
    以“北京天气”为例,lm_loss = P(京|北) * P(天|北,京) * P(气|北,京,天) * P([eos]|北,京,天,气)。其中分母的相加次数对应类别大小(也即词表的大小)在这里插入图片描述
  2. 删除loss:这是个多分类的loss,类别大小可以自己设定(取决于我们构造了几个负标签),记做del_loss。比如“北京天气”,删除掉“气”,且我们只构造一个负标签“天->[eos]”,那么就是一个二分类任务,正标签为“天->气”。那么del_loss就表示为:在这里插入图片描述同时通过这种方式,我们可以实现loss的横向对比,具体看图2输出层的双箭头。
  3. 替换loss:这是个多分类的loss,类别大小可以自己设定(取决于我们构造了几个负标签),记做sub_loss。比如“北京天气”,替换“气”为“汽”,那么我们只构造一个负标签“天->汽”,那么就是一个二分类任务,正标签为“天->气”。那么sub_loss就表示为:在这里插入图片描述
    总loss为:total_loss = lm_loss + del_loss * scale1 + sub_loss * scale2
    其中,scale1,scale2为放大系数,放大系数的作用,主要是保证这三个loss的数值都在同一个量级上。
总结

通过“数据增强”和“损失函数改造”这两个模块,实现了对比学习的机制,把句法不完整和错别字信息显式的告诉模型,因此模型能更有效的捕捉到这些特征。

效果

使用3个测试集:

  • 测试集1:在query尾部随机删除一个字;
  • 测试集2:在query尾部随机删除一个词;
  • 测试集3:线上真实句法不完整的case

评价标准:若原始query评分高于加噪query则预测正确,否则预测错误。
效果对比
具体case:具体case
可以看到con_lm(对比学习+lm)的模型效果是远好于base model。同时通过具体case也可以看到对比学习确实是起到作用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值