文本生成任务评估方法(二)

上一篇文章 中,我们已经介绍了文本生成基于统计的集中评测方法:BLEU、Rouge、Meteor、TER 等方法。除了这些基于统计的自动评测方法,随着 word2vec 技术的兴起,各种基于语义表示的评测方法也逐渐被提出,接下来,我们就介绍一些基于语义表示的评测方法。

基于语言模型的评估方法: PPL

应用场景

PPL(困惑度)一般用于评价语言模型,算的是一个句子流畅度的概率。正常来说,我们在训练一个生成模型的时候,最后都能得到 ppl的值。

计算方法

PPL 给定句子 S,包含 了 N 个单词 w1,w2,...,wN,则语言模型判断产生第 i 单词的概率为 p(wi) = p(wi|w1, w2, ...wi−1),语言模型越好,产生句子的概率越大,本质上就是在计算一个马尔科夫链的概率。

  • 困惑度计算方法:

P P L = P ( w 1 , w 2 , . . . w N ) ( − 1 / N ) PPL=P(w1,w2,...wN)^{(-1/N)} PPL=P(w1,w2,...wN)(−1/N)

P = ∏ i = 0 n p ( w i ∣ w k , 0 < = k < = i ) P = \prod \limits_{i=0}^{n} p(w_i|w_k,0<=k<=i) P=i=0∏np(wi∣wk,0<=k<=i)

其中,P 代表 P(w1, w2, ...wN ) 的计算方法,P 表示当前词序列构成一个自然语言句子的概率,用每个位置对应词的采样概率之乘表示。其实,困惑度本质上是在算句子的平均交叉熵。

  • 离线评估方法
    • 需要先训练一个 indomain 的 language model
    • 利用训好的language model,做 inference 做模型概率评估

基于词向量表示

应用场景

词向量的表示评估方法,是计算句子中词向量的距离,评估是否相似。但实际应用中,比较少用这种方法来评估。因为一般训练模型的时候,我们已经能得到一个比较好的表示了,并且是 in-domain数据训练的表示,这会比直接用词向量表示效果更好。因此下面简单介绍一下这种方法,作为了解即可。

评估方法

基于词向量的表示,其实是在word2vec 技术兴起之后,被提出的一种评估方法。因为传统的统计指标,只能根据句子判断评估相似度,没有语义方面的度量。而 word2vec 将词从离散空间,表示到一个低维连续空间,用向量的方法表示词语,并且相似词语在空间中的距离更近。

embedding average

embedding average 方法是比较常见的一种方法,思路也比较简单,就是先算出句子中,每个词向量的加权平均,然后得到句子表示,再利用余弦相似度来计算两个句向量之间的相似度。

  • 计算方法

e r = ∑ w e w / ∣ ∑ w e w / ∣ e_r = \sum_{w}e_w/|\sum_{w}e_w/| er=∑wew/∣∑wew/∣

c o s = e r ∗ e g cos = e_r * e_g cos=er∗eg

  • 最终cos余弦计算句子相似度。e_r 一般用 word2vec 直接获取词向量。

基于bert表示的评估方法

应用场景

bert 的提出,是nlp发展史的一个里程碑。由于 bert 强大的表征能力,自然会想到利用 bert 来评估文本生成,希望 bert 利用强大的表征和理解能力,达到与人工评测接近的水平。可以用于各种生成、翻译的任务;但对image多模态下的评估任务表现比较差一点。

方法介绍

bertscore
  • 核心思路

    • 整体想法就是利用 bert 做表征提取,然后计算两个句子的相似矩阵,用相似矩阵做最大似然的加权平均得到相似度。这里权重引入了idl的方法。
  • 计算方法

    G b = ∑ x i m a x X i ∗ X j T ∗ i d f ( x i ) / ∑ x i i d f ( x i ) G_{b} = \sum_{x_i} max X_i*Xj^T *idf(x_i)/\sum_{x_i}idf(x_i) Gb=∑ximaxXi∗XjT∗idf(xi)/∑xiidf(xi)

    i d f ( w ) = − l o g 1 / M ∗ ∑ ∏ w ∈ x i idf(w) = -log1/M *\sum \prod w∈ x\^{i} idf(w)=−log1/M∗∑∏w∈xi

    其实就是两个句子的点积,加上了一个 idf 的权重。

  • 应用

    • 安装:pip install bert-score
    • 还可以看相似度矩阵: plot_example(cands[0], refs[0], lang="en", rescale_with_baseline=True)
    • 计算 p、r、f1
arduino 复制代码
from bert_score import score


with open("hyps.txt") as f:
    cands = [line.strip() for line in f]

with open("refs.txt") as f:
    refs = [line.strip() for line in f]

P, R, F1 = score(cands, refs, lang='en', verbose=True)

除了 bertscore 之外,还有一些一些将 BLEU 和 bertscore 思路融合的方法, 例如 BlueRT,将bleu、rouge、meteor等信息作为预热信息加入到模型训练过程,可以更好的增强文本的鲁棒性,此外不是直接算乘积,而是将一个句子过一个线形层,再和另一个句子算相似度。

总结

本文介绍了三种不同于统计方法的文本评估思路,这三种思路其实也代表了 nlp 技术发展的历程: 从语言模型、基于 word2vec 的词向量表示、基于 bert 的句子表征。神经网络的兴起,是的评估任务不再只是关注流畅度和词片段,更加关心整个句子的含义,是否有被机器清晰表达出来。

然而在实际业务评测中,发现目前的句子表征,对相似但语义不同的句子,很难评估是否语义相近。因为模型还不能完全取代人类评估,对比较复杂的场景很难制定评测标准。因此还需要针对实际业务,做一些评估标准的制定,更好的对模型的能力、可用性做公正的判断。

在下一篇文章中,我将介绍一些在实际业务场景中,常用的评估方法。

相关推荐
2601_949950632 小时前
练题簿,把培训从“走过场”变成“真落地”
人工智能·学习·小程序·刷题·小程序推荐
诸神缄默不语3 小时前
备战 AI 出海 DAY 0:海外数据采集
大数据·人工智能
Ysn07194 小时前
YOLO-Master工程:experts.py 专家结构详解与目标检测专家设计启发
人工智能·yolo·目标检测
BingoGo5 小时前
使用 GPT-6 Astra 模型 请立刻更新你的 Skill 与提示词
人工智能
香菜+5 小时前
端侧视频分析 · 架构笔记
人工智能
s1ckrain5 小时前
【论文阅读】A Survey on Vision–Language–Action Models for Embodied AI
论文阅读·人工智能·多模态·具身智能
深圳雨林凯AI5 小时前
图案裂变的“风格归一化“设计思路:主体保得住,画风才拉得齐|雨林凯AI技术笔记
人工智能·笔记
北域码匠5 小时前
高通滤波算法深度解析(High-Pass Filter)
stm32·算法·c#·数字信号处理·嵌入式开发·滤波算法·高通滤波
DevNo5 小时前
英文会议转中文纪要,三款AI工具实测体验
人工智能
深小乐5 小时前
AI 说话越来越难懂?Anthropic 员工都在用 ELI5 这个图解 Skill
人工智能