布景

飞书智能问答运用于职工服务场景,致力于削减客服人力耗费的一起,以卡片的形式高效处理用户常识探究性需求。飞书智能问答整合了服务台、wiki 中的问答对,构成问答常识库,在归纳查找、服务台中以一问一答的办法将常识提供给用户。

作为企业级 SaaS 运用,飞书对数据安全和服务稳定性都有极高的要求,这就导致了练习数据存在严重的缺乏,且极大的依赖于公开数据而无法运用事务数据。在模型迭代进程中,依赖公开数据也导致模型练习数据存在与事务数据散布不一致的状况。经过和多个试点服务台的合作,在得到用户充沛授权后,以不接触数据的办法进行练习。即模型可见数据,但人工无法以任何办法获取明文数据。

依据以上原因,咱们的离线测验数据均为人工结构。因而在核算 AUC(Area Under Curve)值进行评价,会存在与事务数据散布不一致的状况,只能作为参阅验证模型的性能,但不能作为技能方针进行优化迭代。因而转而选用用户点击行为去佐证模型作用的是否呈现进步。

在事务落地的进程中,是否展现答案由模型核算的类似度决议。控制展现答案的 Threshold,会一起对点击率和展现率发生重大影响。因而为了避免 Threshold 的值对方针的搅扰,飞书问答选用 SSR(Session Success Rate)作为决议性方针去评价模型的作用。其核算办法如下,其间 total_search_number 会记录用户的每一次发问,search_click_number 会记录用户每一次发问后是否点击、及点击了第几个答案。

智能问答:基于 BERT 的语义模型

bot_solve_rate(BSR):用来评价机器人阻拦的作用,机器人阻拦越多的工单则会耗费越少的人力。

智能问答:基于 BERT 的语义模型

飞书智能问答模型技能

原始的 1.0 版别模型

问答服务最早选用的模型是 SBERT(Sentence Embeddings using Siamese BERT) 模型(1),也是业内遍及运用的模型。其模型结构如下所示:

智能问答:基于 BERT 的语义模型

经过将 Query 和 FAQ 的 Question 输入孪生 BERT 中进行练习,并经过二分类对 BERT 的参数进行调整。咱们能够离线的将一切的 question 转换为向量存在索引库中。在推理时,将用户的 Query 转换为 Embedding,并在索引库中进行召回。向量的类似度均选用余弦类似度进行核算,下文简称为类似度。

此方案相关于交互式模型,最大的长处在于文本类似度的核算时间与 Faq 的数量脱钩,不会线性增加。

改善的 2.0 版别模型

1.0 版别的模型在表明学习上的体现仍然不够好,首要体现在即便是不那么类似的两句话,模型依旧会给出相对较高的分数,导致全体的区分度很低。2.0 版别的模型考虑经过增加两句话的交互,从而取得更多的信息,能够更好的区分两句话是否类似。而且引入了人脸辨认的思维,让类似的内容散布愈加紧凑,不类似的内容类间距更大,从而进步模型的区分度。其结构如下所示:

智能问答:基于 BERT 的语义模型

相关于 1.0 版别的模型,2.0 版别愈加着重交互的重要性。在原先 concat 的基础上,新增了 u*v 作为特征,并增加了 interaction layer(本质上是 MLP layer)去进一步增强交互。除此之外,引入了 CosineAnnealingLR(2)和 ArcMarinLoss(3)去优化练习进程。除此以外,依据 Bert-Whitening(3)的试验启示,在 pooling 的时候选用了多种 pooling 的办法,去寻觅最优的成果。

CosineAnnealingLR

余弦退火学习率经过缓慢下降+突然增大的办法,在模型行将抵达部分最优的时候,能够“逃离”部分最优空间,而且进一步检索到更好的部分最优解。下图源自 CosineAnnealingLR 的 paper,其间 default 是 StepLR 的衰减,其他则为余弦周期性衰减,并在衰减为 0 时恢复最大值。

智能问答:基于 BERT 的语义模型

比较于传统的 StepLR 衰减,余弦退火的衰减办法,能够让模型更简单找到更好的部分最优解,下图模拟了 StepLR 和 CosineAnnealingLR 梯度下降进程(4):

智能问答:基于 BERT 的语义模型

同样的,因为余弦退火模型会找到多个部分最优,因而练习时间也会长于传统的 StepLR 衰减。另一方面,因为学习率的突然增大,会导致 loss 的上升,因而在练习进程中 Early Stopping 的控制能够依据 Steps 而不是 Epoches。

在服务台落地场景中,不同的服务台的语义空间显着不同,不同的服务台数据量(包括正负例份额)也存在较大的差异,模型不可避免的存在 bias,余弦退火能够必定程度处理这个问题。

ArcMarinLoss

选用 Arcface 丢失函数的灵感来自 SBERT 论文中的 TripletLoss,其最早被用于人脸辨认中。但是,TripletLoss 依赖于三元组输入,构建模型的当时不存在这样的条件去获取数据,因而沿着思路找到了 ArcMarginLoss:最新用于人脸辨认的丢失函数,在人脸辨认领域到达了 SOTA,在 Softmax 基础上在对各类间距离进行了加强。

智能问答:基于 BERT 的语义模型

但是,咱们无法像人脸辨认那样,将语义分红 Group,并对 Group 进行 N 分类。NLP 相关问题远比人脸辨认要杂乱得多,练习数据也难以像人脸辨认那样取得。但咱们仍然能够经过二分类,将相关/不相关这两类拆分的更开。

试验成果

依据 AB 试验的成果,1.0 版别模型和 2.0 版别模型的方针如下所示:

Top1 SSR Top10 SSR Top1 Click Rate BSR
相对进步 +7.75% +6.43% +1.24% +3.55%

其间 Top1 SSR 仅仅只考虑点击第一位的 SSR,而 Top10 SSR 则是点击前 10 位的 SSR。因为关于用户的一次请求,最多只会召回 10 个类似的成果,因而 Top10 SSR 就是全体的 SSR。

Top1 Click Rate 是指在点击的条件下,点击第一条信息的概率是多少,即 Top1SSR/Top10SSR。

由上表能够看出,全体的 SSR 呈现了显着的上升,且 Top1 的点击占比也呈现了小幅进步。因而从事务方针来推测 2.0 版别的模型显着好于 1.0 版别的模型。BSR 作为事务侧最关心的方针,受到用户行为和产品战略的影响很大,但经过 AB 试验也能够看出,新的模型经过机器人阻拦的工奇数显着上升,能够削减下游客服人力的耗费。

融化试验

针对 ArcMarginLoss 的作用进行融化试验,在其他条件都不变的状况下,选用相同的人工测验集,别离选用 ArcMarginLoss 和 CrossEntropyLoss 进行模型练习。

在这里选用 AUC 的原因,是为了观测:

ArcMarginLoss CrossEntropyLoss
AUC 的值 0.925 0.919

因而经过融化试验能够看出,ArcMarginLoss 尽管在测验集上有少许进步,但进步并不显着。原因可能是用于人脸辨认练习模型的 ArcMarginLoss 通常以海量类似图片作为一个 label 去进行练习,而在此任务的数据为两句间联系的 0/1 分类,导致其和人脸辨认方针并不相同,无法发生较好的作用。

依据 Contrastive Learning 的 3.0 版别

2.0 版别的模型尽管缓解了分数相对会集的问题,但仍然无法处理数据全体散布不均匀的问题(正负样本 1:10),即正样本的数量远小于负样本,导致模型更倾向于学习负样本的内容。3.0 版别的模型学习了 Contrastive Learning 的思维,将二分类问题转化为 N 分类问题,负样本不再是多个 Item 从而确保模型会更好的学习到正样本的内容。

Contrastive Learning

在 3.0 版别的模型中,参阅了最新的论文 SimCSE(5),将 Contrastive Learning 的思维引入了模型中并进行练习。其思维利用两次 dropout 得到同一句话的不同表明,并进行练习。如下图所示:

智能问答:基于 BERT 的语义模型

在实际练习中,选用了 Supervised SimCSE 的思维,将<query_i,question_i>作为正样本的 Pair 输入到模型中。每一个 query 都与其他的 question 作为负样本进行练习,但不与其他的 query 交互(原文不同的 query 间也是负例)。一个例子如下所示,假设输入 3 个 pair,则 label 如下:

query1 query2 query3
question1 1 0 0
question2 0 1 0
question3 0 0 1

经过 BERT 能够将文本转换为 embedding,并核算类似度。依据上述结构 label 的办法,运用 CrossEntropyLoss 核算并更新参数。

因而,Contrastive Learning 的方针函数能够用以下表达:

智能问答:基于 BERT 的语义模型

其间 sim 是余弦类似度核算,<hi,hi+>为一个 Sentence Pair。

从 Momentum contrastive 而来的 trick

原始的 SimCSE 选用 CrossEntropyLoss 直接得到 loss 的值,但是因为超参数 T 的存在,导致余弦类似度的值被扩大,最终在 softmax 后概率散布愈加会集倾向于类似度高的值,而类似度低的值概率会趋近于 0。因而,超参数 T 的值会严重影响反向传达的时候梯度的大小,而且随着 T 的缩小梯度不断增大,使得实际的 lr 远大于 CrossEntropyLoss 中定义的 lr,导致模型练习收敛速度变慢。为了缓解这个问题,在 Momentum contrastive(6)中选用了 loss_i = 2 * T * l_i 的办法,本文运用了该办法作为 loss 进行练习。

试验成果

依据 AB 试验的成果,2.0 版别和 3.0 版别的模型事务方针如下:

Top1 SSR Top8 SSR Top1 Click Rate BSR
相对改变 +7.10% +5.88% +1.19% +4.07%

首要因为不一起期的事务数据存在动摇,因而 2.0 版别的 top1 SSR 与前文的数据存在必定的偏差。且事务侧进行了改动,总展现数量从 10 个变成了 8 个,因而 Top10 SSR 修正为了 Top8 SSR。

最终,BSR 在该 AB 试验中的体现与上文的 AB 试验中 1.0 版别模型类似,是因为修正了进入机器人工单的核算口径。原先查找中展现了问题,会直接跳转进入机器人并记录为机器人处理问题,现在查找会直接展现答案而无需进入服务台。因而,查找侧阻拦了一部分的工单,且未被记入机器人阻拦,导致了 BSR 的下降,而非数据动摇导致。但对比 AB 试验的成果,新模型的 BSR 仍然进步了 4.07%,进步明显。

综上所属,很显然模型在核心技能方针上均有显着进步。不仅在用户需求的满意率上进步了 5.88%,答案排名在第一位的份额也进步了 1.19%,模型作用有了全面的进步。

模型进步的原因

  1. 数据的安排办法不同。Contrastive Learning 仅运用数据会集正例,选用同一个 batch 内的其他 Question 作为负例,这意味着关于同一个 query 负例的数量远大于原始数据集。比较于 2.0 版别的模型,关于一切的正例模型都有更多的负例去更好的辨认真正类似的语句。
  2. 丢失函数决议了练习方针不同。2.0 版别的丢失函数仅需求考虑两句话之间的联系,而 3.0 版别模型需求一起考虑一个 batch 内的一切语句间的联系,进行 batch_size = N 的 N 个语句中找到正例。
  3. 依据论文,经过 Contrastive Learning 能够消除 BERT 的各向异性(Anisotropy)。具体体现在 BERT 的语义空间会集在一个狭窄的锥形区域,导致余弦类似度的值会明显偏大,即便完全不相关的两句话也能得到比较高的分数。该观点在 Ethayarajh(6)和 Bohan Li(7)对预练习模型的 embedding 研究中得到了证明。而运用 Contrastive Learning 或各种 postprocessing(如 whitening(8), flow(9))能够消除这一问题。

智能问答:基于 BERT 的语义模型

  1. 高频的词汇严重影响了 BERT 中语句的 embedding,少量的高频词汇决议了 embedding 的散布,导致 BERT 模型的表达能力变差,Contrastive Learning 能够消除此影响。依据论文 ConSERT(10)的试验,证明了高频词的确会严重影响 embedding 的表达,如图所示:

智能问答:基于 BERT 的语义模型

融化试验

为了探究 Loss 和数据对模型的影响,该消解试验选用与 Contrastive Learning 相同的正负样本及份额进行练习,其练习办法如下:

  1. 令 batch_size = 32, 则依据 Contrastive Learning 的思维得到余弦类似度矩阵,维度为[32,32]。
  2. 依据 Contrastive Learning 生成 label 矩阵,即[32,32]的单位矩阵。
  3. 将余弦矩阵和 label 矩阵,均转换为[32*32,1]的矩阵,在此条件下数据安排模式完全相同,只有丢失函数和练习办法不同。用以上办法进行练习,并在离线测验集上进行 AUC 核算。

简单来说,Contrastive Learning 从 32 个语句中找到了最类似的 1 个,而 CrossEntropyLoss 则是进行了 32 次二分类。经过上述办法,别离对 Contrastive Learning 和 CrossEntropyLoss 的二分类进行练习,成果如下:

Contrastive LearningN 分类 CrossEntropyLoss 二分类
AUC 的值 0.935 0.861

经过进一步研究发现,CrossEntropyLoss 的二分类会倾向于将文本的类似度标为 0,因而过量的负样本使得模型忽略了对正样本的学习,仅经过判别 label = 0 的状况即可在练习集上到达 98%的准确率。

经过消解试验也证明了丢失函数对该模型的练习存在明显的影响,当负样本足够多,在相同数据安排办法的条件下,Contrastive Learning 的作用要优于 CrossEntropyLoss。因为在实在事务中,正样本的数量远小于负样本,因而依据 Contrastive Learning 的练习办法更适合运用于事务中。

参加咱们

假如你也对咱们的工作感兴趣,欢迎参加!

Lark AI and Search 团队正在炽热招聘中:

  • 北京:job.toutiao.com/s/NxrDjbm
  • 深圳:job.toutiao.com/s/NQFaaX8
  • 上海:job.toutiao.com/s/NxrSpSP

参阅文献

  1. Reimers, N. and Gurevych, I., 2019. Sentence-bert: Sentence embeddings using siamese bert-networks. arXiv preprint arXiv:1908.10084
  2. Loshchilov, I. and Hutter, F., 2016. Sgdr: Stochastic gradient descent with warm restarts. arXiv preprint arXiv:1608.03983.
  3. Deng, J., Guo, J., Xue, N. and Zafeiriou, S., 2019. Arcface: Additive angular margin loss for deep face recognition. In Proceedings of the IEEE/CVF conference on computer vision and pattern recognition (pp. 4690-4699).
  4. Huang, G., Li, Y., Pleiss, G., Liu, Z., Hopcroft, J.E. and Weinberger, K.Q., 2017. Snapshot ensembles: Train 1, get m for free. arXiv preprint arXiv:1704.00109.
  5. Gao, T., Yao, X. and Chen, D., 2021. Simcse: Simple contrastive learning of sentence embeddings. arXiv preprint arXiv:2104.08821.
  6. He, K., Fan, H., Wu, Y., Xie, S. and Girshick, R., 2020. Momentum contrast for unsupervised visual representation learning. In Proceedings of the IEEE/CVF conference on computer vision and pattern recognition (pp. 9729-9738).
  7. Ethayarajh, K., 2019. How contextual are contextualized word representations? comparing the geometry of BERT, ELMo, and GPT-2 embeddings. arXiv preprint arXiv:1909.00512.
  8. Li, B., Zhou, H., He, J., Wang, M., Yang, Y. and Li, L., 2020. On the sentence embeddings from pre-trained language models. arXiv preprint arXiv:2011.05864.
  9. Su, J., Cao, J., Liu, W. and Ou, Y., 2021. Whitening sentence representations for better semantics and faster retrieval. arXiv preprint arXiv:2103.15316.
  10. Kingma, D.P. and Dhariwal, P., 2018. Glow: Generative flow with invertible 1×1 convolutions. Advances in neural information processing systems, 31.
  11. Yan, Y., Li, R., Wang, S., Zhang, F., Wu, W. and Xu, W., 2021. Consert: A contrastive framework for self-supervised sentence representation transfer. arXiv preprint arXiv:2105.11741.