本文主要是介绍论文阅读-Towards Quantifiable Dialogue Coherence Evaluation,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
出处
背景
1. 现有的自动评价方式
2. 本文出发点
模型
效果
1. 和其他自动评价指标相比
2. 采用不同的loss
3. GoodCase及BadCase
出处
中山大学2021年提出的评价指标训练框架QuantiDCE,输出一个分数来衡量对话连贯性。论文及开源代码
背景
连贯性可以很好很直观的评价对话效果。
1. 现有的自动评价方式
1. 大多自动评价指标都是照搬机器翻译的,比如基于词overlap的BLEU、ROUGE等。
2. 现在转向基于深度神经网络的自动指标,希望模型能自动学习连贯不连贯的情况,并具有一定的泛化能力。
(1)比如2018年的RUBER、2019年的BERT-RUBER、2020年的GRADE(STOA)。这类指标从结果上看比BLEU在整体能给出更准确的评价。
(2)这类模型结构上看,输入是context和Response,编码器(如RNN,transformer)来进行特征提取,最后接一个分数预测模块输出。在loss的选择上,常用的有CEL(交叉熵损失)和MRL(排序损失)。
(3)将原始对话数据作为正样本,再用一些启发式策略为每一个正样本自动生成一个相应的负样本。采用无监督的训练方式,尽可能量二者区分开。
2. 本文出发点
人工评价往往是1-5分之间,上述自动评价只能区分是否连贯,而没有给出连贯程度,即量化评价指标。
本文提出了一个两阶段指标训练框架QuantiDCE。通过两阶段的递进式训练,逐步让指标模型掌握量化的能力,从而能够输出与人工打分更为一致的连贯性分数。
模型
每一个context,有3个不连贯级别共15个回复,红色的是满分回答,橙色的是一般回答,绿色的是劣质回答。实心圆圈表示当前对话i每一个级别的centroid得分。context和Response的对先通过BERT进行编码,然后再通过一个MLP得到一个相关性分数。
MLR预训练阶段,旨让模型通过无监督学习,能对不同级别的回复有个初步的判断。模型使用MLR最为损失函数进行优化。 MLRloss包括三部分:separation loss旨在让具有不同连贯性程度的context-response pairs彼此远离;compactness loss是让连贯性程度相同的pairs相互靠近;而最后的ordering loss则是为了约束不同连贯性程度的pairs之前满足一个从小到大的排序关系。
KD微调阶段,则是希望指标模型能够在前面预训练的基础上,进一步学习到人类打分的真实标准。这里损失函数包含两部分,第一部分是MSE,让模型预测分数尽可能接近人工打分。第二部分是一个正则项,用于在微调阶段保留预训练阶段学习到的知识,避免由于微调数量很少而出现过拟合的现象。具体来说,就是固定预训练后的参数(作为teacher),约束待微调的模型(student)各层输出以及中间层注意力矩阵与teacher的保持一致。
效果
1. 和其他自动评价指标相比
用各种自动评价指标和人工评价指标进行相关性比较。可以看到,该模型和人工打分更接近,即更接近真人评估。
2. 采用不同的loss
选用不同的loss进行训练,再去和人工打分做相似性比较。可以看到,多层级排序MLR作为loss,效果更好。
3. GoodCase及BadCase
U1,U2是context中的两个utterance,R是相关回复。
上面的是goodcase,该模型对结果的评价和人工的更接近。而GRADE却给出了很高的分数,认为回答的不错,显然是不对的。
下面的是badcase,两种模型和人工打分差距都远。作者将之归因为,只将句子质量分成了3个级别,而人工会将之分成5个级别。
各种loss简介
1. BCE Loss
BinaryCrossEntropy,适用于2阶量化。只有完美回答是1,其他的都是0
2. MRL
MarginRankingLoss,这里是让相关样本往前排,不相关样本往后。
3. SupCon Loss
supervised contrastive loss,适用于多阶量化。在向量空间中让正负anchor向两边移动。
这篇关于论文阅读-Towards Quantifiable Dialogue Coherence Evaluation的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!