BLEURT: Learning Robust Metrics for Text Generation

image.png

Ref: https://arxiv.org/pdf/2004.04696.pdf

背景

如何评估生成的文本的好坏?
如果有人工评价的数据集:\{(x_i,\tilde x_i, y_i)\}^N_{n=1}
参考句子: x = (x_1,...,x_r),句长为r,x_r表示为每个token
生成的句子: \tilde x = (\tilde x_1,...,\tilde x_p), 句长为p
对新生成的句子,预测和参考句子的相关性,也就是模仿人工打分:f: (x,\tilde x)-> y

但,实际有人工评分的数据集不多,对大规模的文本生成,让人工打分是非常耗时耗力的。和发展迅猛的文本生成模型相比,对生成的文本进行度量的方法仍旧比较滞后,常见的依然是是BLEU,ROUGE。这两种方法依赖n-gram重叠,对语义相似词汇不相似的文本对判断不友好。

因此,本文提出了BLEURT,基于BERT模型的端对端的评估模型,可以在少量甚至于无的训练数据上进行fine_tune,就可以对文本生成的评估得到很好效果。实验显示,BLEURT在WMT17~19,WEBNLG数据集上都达到SOTA。

Model

Pre-Training on Synthetic Data

在做fine_tune前,需要进行合成数据的预训练模型,旨在获得大批量多样性强的词对,提高BLEURT的泛化能力。后面的实验结果表明,加了这个预训练模型后,效果提升。模型结构如下:


预训练模型结构.png

Generating Sentence Pairs

  1. 数据源获取:约180w条Wikipedia的句子z

  2. 合成句子对:(z,\tilde z)
    通过以下3种方法,对句子z进行扰乱,得到句子对。

    1. Mask-filling with BERT:对输入的句子,随机mask一些词,用BERT填满,生成新的句子。mask的方法有两种:Random Masking和Contiguous sequences of mask tokens,mask一定长度的连续的词。
    2. Backtranslation:通过回译来进行打乱,比如将英文翻译成另一个语种,再翻译回英语,旨在构建参考句子的变体且不改变句子语义。
    3. Dropping words:随机drop一些词,产生新的文本。

Pre-training Signals

得到大批量的配对句子后,对这些数据进行BERT预训练,预训练任务类型如下:


预训练任务

通过一系列的预训练监督信息{{\tau_k}},对 (z,\tilde z)进行增强。这里,{\tau_k}指的是预训练任务k的目标向量。有以下四种类型的任务:

  1. Automatic Metrics: 用{\tau_{BLUE}},{\tau_{ROUGE}},{\tau_{BERTscore}}表示不同度量方法;

  2. Backtranslation Likelihood:在翻译模型中,衡量语义相似度。对(z,\tilde z),计算\tilde z由z的回译;

    比如 "英文-法语 -英文"的回译:
    P(\tilde z|z): 表示句子\tilde z 由句子z的回译,用\tilde z的长度|\tilde z|进行归一化,得到回译的目标向量:
    \tau_{en-fr,\tilde z|z} =\frac {logP(\tilde z|z) }{ | \tilde z|}, 其中

    P(\tilde z|z) = \sum_{z_{fr}}P_{fr->en} (\tilde z|z_{fr})P_{en->fr} ( z_{fr}|z)
    假设z^*_{fr} = argmax P_{en->fr}(z_{fr}|z), P_{en->fr}(z^*_{fr}|z) \approx 1,则:

    P(\tilde z|z) = \sum_{z_{fr}}P_{fr->en} (\tilde z|z_{fr})P_{en->fr} (\tilde z_{fr}|z) \approx P_{fr->en}(\tilde z|z^*_{fr})

  3. Textual Entailment:在MNLI数据集上,使用BERT fine_tune,对句子对关系进行推理,有entail,contradict,neural3种关系;

  4. Backtranslation Flag:数据扰乱的方式,分mask-filling和回译。

Loss

针对不同的预训练任务,进行分类、回归损失计算,并通过weighted-sum汇总这些损失。
{\tau_k}: 每个任务的目标向量;
任务k的损失: l_k = ||\tau_k - \hat \tau_k||^2_2 / |\tau_k|,其中|\tau_k|表示维度;

分类任务:每个类别的logit: \hat \tau_{kc} = W_{\tau_{kc}}\tilde v_{[CLS]} + b_{\tau_{kc}}

回归任务: \hat \tau_k = W_{\tau_k}\tilde v_{[CLS]} + b_{\tau_k}

总loss:l_{pre\_training} = \frac {1}{M}\sum_m \sum_k \gamma_kl_k(\tau^m_k,\hat \tau^m_k)
其中:\gamma_k:grid_search的超参数

Fine-Tuning BERT for Quality Evaluation

将生成的文本和参考文本一同输入到BERT模型中,产生向量:
v_{[CLS]}, v_{x_1},...,v_{x_r},...,v_{\tilde x_p} = BERT(x,\tilde x)

使用[CLS]的向量,添加线性层,得到:
\hat y = f(x,\tilde x) = W\tilde v_{[CLS]} + b

模型得分和人工打分的loss:
loss = \frac {1}{N} \sum^N_{n=1} ||y -\hat y||^2

Experiments

Translation

模型在WMT17年到19年评估效果如下:
BLEURTbase:Bert_base
BLEURT:Bert_large
BLEURT -pre:不做Pre-Training on Synthetic Data

image.png

image.png

image.png

Data-to-Text

评估:语义,语法,流畅度


image.png

备注:
Pre-Training on Synthetic Data不是必要的,可以直接对Bert进行fine-tuning,但是加了这个预训练模型,模型效果好很多。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。