文本生成評價指標的進化與推翻

轉載來源:https://mp.weixin.qq.com/s/IKj_8sJ28HYP1pAgWtdKTg
作者:林鎮坤

前言

文本生成目前的一大瓶頸是如何客觀,準確的評價機器生成文本的質量。一個好的評價指標(或者設置合理的損失函數)不僅能夠高效的指導模型擬合數據分佈,還能夠客觀的讓人評估文本生成模型的質量,從而進一步推動 text generation 商業化能力。

然而由於語言天生的複雜性和目前技術限制,我們目前還沒有一個完美的評價指標。

本文就三方面對文本生成的評價指標介紹:

  • 介紹了以 BLEU 爲代表的基於統計的文本評價指標

  • 就 data to text 和 image caption 進一步介紹了其特有的評價模式

  • 基於 BERT 等預訓練模型的文本評價指標

基於詞重疊率的方法

機器翻譯 & 摘要 常用指標

基於詞重疊率的方法是指基於詞彙的級別計算模型的生成文本和人工的參考文本之間的相似性,比較經典的代表有 BLEU、METEOR 和 ROUGE,其中 BLEU 和 METEOR 常用於機器翻譯任務,ROUGE 常用於自動文本摘要。

BLEU

BLEU (Bilingual Evaluation Understudy,雙語評估輔助工具)可以說是所有評價指標的鼻祖,它的核心思想是比較候選譯文和參考譯文裏的 n-gram 的重合程度,重合程度越高就認爲譯文質量越高。unigram 用於衡量單詞翻譯的準確性,高階 n-gram 用於衡量句子翻譯的流暢性。實踐中,通常是取 N=1~4,然後對進行加權平均。
BLEU=BP×exp(n=1NWn×logPn)BP={1lc>lrexp(1lr/lc)lclrlc=lr=\begin{array}{l} B L E U=B P \times \exp \left(\sum_{n=1}^{N} W_{n} \times \log P_{n}\right) \\ B P=\left\{\begin{array}{ll} 1 & l c>\operatorname{lr} \\ \exp (1-\operatorname{lr} / l c) & l c \leq \operatorname{lr} \end{array}\right. \end{array}\\ lc=機器譯文的長度\\ lr=最短的參考翻譯句子的長度

  • BLEU 需要計算譯文 1-gram,2-gram,…,N-gram 的精確率,一般 N 設置爲 4 即可,公式中的 Pn 指 n-gram 的精確率。

  • Wn 指 n-gram 的權重,一般設爲均勻權重,即對於任意 n 都有 Wn = 1/N。

  • BP 是懲罰因子,如果譯文的長度小於最短的參考譯文,則 BP 小於 1。

  • BLEU 的 1-gram 精確率表示譯文忠於原文的程度,而其他 n-gram 表示翻譯的流暢程度。

不過 BLEU 對詞重複和短句有着非常不好的表現,所以改進的 BLEU 分別使用 改進的多元精度(n-gram precision)短句懲罰因子進行了優化。

** 1. 改進的多元精度(n-gram precision)**

假設機器翻譯的譯文 C 和一個參考翻譯 S1 如下:

C: a cat is on the table
S1: there is a cat on the table

則可以計算出 1-gram,2-gram,… 的精確率(參考文獻裏寫的是準確率 (accuracy), 我理解是寫錯了,此處應該是精確率 (precision))

p1 計算 a cat is on the table 分別都在參考翻譯 S1 中 所以 p1 = 1

p2 (a, cat) 在, (cat is) 沒在, (is on) 沒在, (on the) 在, (the table) 在 所以 p2 = 3/5

p3 (a cat is) 不在, (cat is on) 不在, (is on the) 不在, (on the table) 在 所以 p3 = 1/4

依次類推 (上面的在或者不在, 說的都是當前詞組有沒有在參考翻譯中)。直接這樣算, 會存在很大的問題. 例如:

C: there there there there there S1: there is a cat on the table

這時候機器翻譯的結果明顯是不正確的,但是其 1-gram 的 Precision 爲 1,因此 BLEU 一般會使用修正的方法。給定參考譯文 S1,S2, …,Sm,可以計算 C 裏面 n 元組的 Precision,計算公式如下:


針對上面的例子 p1 = 1/5 (因爲 there 在 C 和 S1 中都出現了 我們按最少的次數來)

2. 懲罰因子

上面介紹了 BLEU 計算 n-gram 精確率的方法, 但是仍然存在一些問題,當機器翻譯的長度比較短時,BLEU 得分也會比較高,但是這個翻譯是會損失很多信息的,例如:

C: a cat
S1: there is a cat on the table

因此需要在 BLEU 分數乘上懲罰因子


** 3. 優點**

  • 它的易於計算且速度快,特別是與人工翻譯模型的輸出對比;

  • 它應用範圍廣泛,這可以讓你很輕鬆將模型與相同任務的基準作對比。

4. 缺點

  • 它不考慮語義,句子結構

  • 不能很好地處理形態豐富的語句(BLEU 原文建議大家配備 4 條翻譯參考譯文)

  • BLEU 指標偏向於較短的翻譯結果(brevity penalty 沒有想象中那麼強)

ROUGE

英文全稱 Recall-Oriented Understudy for Gisting Evaluation,可以看做是 BLEU 的改進版,專注於召回率而非精度。換句話說,它會查看有多少個參考譯句中的 n 元詞組出現在了輸出之中。

ROUGE 大致分爲四種(常用的是前兩種):

  • ROUGE-N (將 BLEU 的精確率優化爲召回率)

  • ROUGE-L (將 BLEU 的 n-gram 優化爲公共子序列)

  • ROUGE-W (將 ROUGE-L 的連續匹配給予更高的獎勵)

  • ROUGE-S (允許 n-gram 出現跳詞 (skip))

ROUGE 用作機器翻譯評價指標的初衷是這樣的:在 SMT(統計機器翻譯)時代,機器翻譯效果稀爛,需要同時評價翻譯的準確度和流暢度;等到 NMT (神經網絡機器翻譯)出來以後,神經網絡腦補能力極強,翻譯出的結果都是通順的,但是有時候容易瞎翻譯。

ROUGE 的出現很大程度上是爲了解決 NMT 的漏翻問題(低召回率)。所以 ROUGE 只適合評價 NMT,而不適用於 SMT,因爲它不管候選譯文流不流暢

** 1. ROUGE-N**

“N” 指的是 N-gram,其計算方式與 BLEU 類似,只是 BLEU 基於精確率,而 ROUGE 基於召回率。

ROUGE-N 主要統計 N-gram 上的召回率,對於 N-gram,可以計算得到 ROUGE-N 分數,計算公式如下:
公式的分母是統計在參考譯文中 N-gram 的個數,而分子是統計參考譯文與機器譯文共有的 N-gram 個數。

C: a cat is on the table
S1: there is a cat on the table

上面例子的 ROUGE-1 和 ROUGE-2 分數如下:
ROUGE1=a,cat,is,on,the,tablethere,is,a,cat,on,the,table=67ROUGE2=(a,cat),(on,the),(the,table)(there,is),(is,a),(a,cat),(cat,on),(on,the),(the,table)=12\begin{array}{l} R O U G E-1=\frac{|a, c a t, i s, o n, t h e, t a b l e|}{|t h e r e, i s, a, c a t, o n, t h e, t a b l e|}=\frac{6}{7} \\ R O U G E-2=\frac{|(a, c a t),(o n, t h e),(t h e, t a b l e)|}{\mid(\text {there}, i s),(i s, a),(a, c a t),(c a t, o n),(o n, t h e),(t h e, t a b l e) \mid}=\frac{1}{2} \end{array}

如果給定多個參考譯文 Si,Chin-Yew Lin 也給出了一種計算方法,假設有 M 個譯文 S1, …, SM。ROUGE-N 會分別計算機器譯文和這些參考譯文的 ROUGE-N 分數,並取其最大值,公式如下。這個方法也可以用於 ROUGE-L,ROUGE-W 和 ROUGE-S。

2. ROUGE-L

ROUGE-L 中的 L 指最長公共子序列 (longest common subsequence, LCS),ROUGE-L 計算的時候使用了機器譯文 C 和參考譯文 S 的最長公共子序列,計算公式如下:

公式中的 RLCS 表示召回率,而 PLCS 表示精確率,FLCS 就是 ROUGE-L。一般 beta 會設置爲很大的數,因此 FLCS 幾乎只考慮了 RLCS (即召回率)。注意這裏 beta 大,則 F 會更加關注 R,而不是 P,可以看下面的公式。如果 beta 很大,則 PLCS 那一項可以忽略不計。

3. ROUGE-W

ROUGE-W 是 ROUGE-L 的改進版,考慮下面的例子,X 表示參考譯文,而 Y1,Y2 表示兩種機器譯文。

在這個例子中,明顯 Y1 的翻譯質量更高,因爲 Y1 有更多連續匹配的翻譯。但是採用 ROUGE-L 計算得到的分數確實一樣的,即 ROUGE-L(X, Y1)=ROUGE-L(X, Y2)。 因此作者提出了一種加權最長公共子序列方法 (WLCS),給連續翻譯正確的更高的分數,具體做法可以閱讀原論文《ROUGE: A Package for Automatic Evaluation of Summaries》

4. ROUGE-S

ROUGE-S 也是對 N-gram 進行統計,但是其採用的 N-gram 允許 “跳詞 (Skip)”,即跳躍二元組(skip bigram)。例如句子 “I have a cat” 的 Skip 2-gram 包括 (I, have),(I, a),(I, cat),(have, a),(have, cat),(a, cat)。

跳躍二元組是句子中有序的單詞對,和 LCS 類似,在單詞對之間,單詞可能被跳過。比如一句有 4 個單詞的句子,按照排列組合就可能有 6 種跳躍二元組。

再次使用精度和召回率來計算 F,將句子 Sij 中跳躍二元組的個數記爲
fk(sij)f_{k}\left(s_{i j}\right)
,則計算公式如下:
Rs=maxjkmin(fk(ci),fk(sij))kfk(sij)Ps=maxjkmin(fk(ci),fk(sij))kfk(ci)ROUGES(ci,Si)=(1+β2)RsPsRs+β2Ps\begin{array}{l} R_{s}=m a x_{j} \frac{\sum_{k} \min \left(f_{k}\left(c_{i}\right), f_{k}\left(s_{i j}\right)\right)}{\sum_{k} f_{k}\left(s_{i j}\right)} P_{s}=\max _{j} \frac{\sum_{k} \min \left(f_{k}\left(c_{i}\right), f_{k}\left(s_{i j}\right)\right)}{\sum_{k} f_{k}\left(c_{i}\right)} \\ \operatorname{ROUGE}_{S}\left(c_{i}, S_{i}\right)=\frac{\left(1+\beta^{2}\right) R_{s} P_{s}}{R_{s}+\beta^{2} P_{s}} \end{array}

NIST

NIST(National Institute of standards and Technology) 方法是在 BLEU 方法上的一種改進。

最主要的是引入了每個 n-gram 的信息量 (information) 的概念。BLEU 算法只是單純的將 n-gram 的數目加起來,而 nist 是在得到信息量累加起來再除以整個譯文的 n-gram 片段數目。這樣相當於對於一些出現少的重點的詞權重就給的大了。

信息量的計算公式是:
Info(w1wn)=log2( the # of occurrences of w1wn1 the # of occurrences of w1wn)\operatorname{Info}\left(w_{1} \ldots w_{n}\right)=\log _{2}\left(\frac{\text { the } \# \text { of occurrences of } w_{1} \ldots w_{n-1}}{\text { the } \# \text { of occurrences of } w_{1} \ldots w_{n}}\right)

解釋一下:分母是 n 元詞在參考譯文中出現的次數,分子是對應的 n-1 元詞在參考譯文中的出現次數。對於一元詞彙,分子的取值就是整個參考譯文的長度。這裏之所以這樣算,應該是考慮到出現次數少的就是重點詞這樣的一個思路。

計算信息量之後,就可以對每一個共現 n 元詞乘以它的信息量權重,再進行加權求平均得出最後的評分結果:

這裏注意幾個地方:

1、N 一般取 5

2、β是一個常數,在 Lsys/Lref=2/3 時,β使得長度罰分率爲 0.5,它是個經驗值,大概的曲線是:

3、Lref 是參考答案的平均長度(注意 L 的上方有一個平均符號)

4、Lsys 是譯文的長度

參考鏈接:機器翻譯評測——BLEU 改進後的 NIST 算法. 博客還詳細介紹瞭如何使用 nist 去評測,感興趣的同學可以看看。

METEOR

和 BLEU 不同,METEOR 同時考慮了基於整個語料庫上的準確率和召回率,而最終得出測度。

METEOR 也包括其他指標沒有發現一些其他功能,如同義詞匹配等。METEOR 用 WordNet 等知識源擴充了一下同義詞集,同時考慮了單詞的詞形(詞幹相同的詞也認爲是部分匹配的,也應該給予一定的獎勵,比如說把 likes 翻譯成了 like 總比翻譯成別的亂七八糟的詞要好吧?)

在評價句子流暢性的時候,用了 chunk 的概念(候選譯文和參考譯文能夠對齊的、空間排列上連續的單詞形成一個 chunk,這個對齊算法是一個有點複雜的啓發式 beam serach),chunk 的數目越少意味着每個 chunk 的平均長度越長,也就是說候選譯文和參考譯文的語序越一致。

最後,METEOR 計算爲對應最佳候選譯文和參考譯文之間的準確率和召回率的調和平均:
Pen=γ(chm)θFmean=PmRmαPm+(1α)RmPm=mkhk(ci)Rm=mkhk(sij)METEOR=(1Pen)Fmean \begin{aligned} \operatorname{Pen} &=\gamma\left(\frac{c h}{m}\right)^{\theta} \\ F_{\mathrm{mean}} &=\frac{P_{m} R_{m}}{\alpha P_{m}+(1-\alpha) R_{m}} \\ P_{m} &=\frac{|m|}{\sum_{k} h_{k}\left(c_{i}\right)} \\ R_{m} &=\frac{|m|}{\sum_{k} h_{k}\left(s_{i j}\right)} \\ \mathrm{METEOR} &=(1-\operatorname{Pen}) F_{\text {mean }} \end{aligned}

1. 理解

看公式總是挺抽象的,下面我們還是看看來自維基百科的例子吧。計算的最基本單元是句子。算法首先從待評價字符串和參考字符串之間創建一個平面圖如下:

所謂平面圖,就是 1 元組之間的映射集。平面圖有如下的一些限制:在待評價翻譯中的每個 1 元組必須映射到參考翻譯中的 1 個或 0 個一元組,然後根據這個定義創建平面圖。如果有兩個平面圖的映射數量相同,那麼選擇映射交叉數目較少的那個。 也就是說,上面左側平面圖會被選擇。狀態會持續運行,在每個狀態下只會向平面圖加入那些在前一個狀態中尚未匹配的 1 元組。一旦最終的平面圖計算完畢,就開始計算 METEOR 得分:

1 元組精度:

其中 m 是在參考句子中同樣存在的,待評價句子中的一元組的數量。wt 是待評價翻譯中一元組的數量。

1 元組召回率:
P=mwtP=\frac{m}{w_{t}}

m 同上,是參考翻譯中一元組的數量。

然後使用調和平均來計算 F-mean,且召回的權重是精度的 9(上面說的超參數α)倍。
R=mwrR=\frac{m}{w_{r}}
到目前爲止,這個方法只對單個單詞的一致性進行了衡量,還沒有用到爲了評價流暢性的 chunk 。chunk 塊的定義是在待評價語句和參考語句中毗鄰的一元組集合。

在參考和待評價句子中的沒有毗連的映射越多,懲罰就越高。爲了計算懲罰,1 元組被分組成最少可能的塊(chunks)。在待評價語句和參考語句之間的毗鄰映射越長,塊的數量就越少。一個待評價翻譯如果和參考翻譯相同,那麼就只有一個塊。懲罰 p 的計算如下:
p=0.5(cum)3p=0.5\left(\frac{c}{u_{m}}\right)^{3}
(假設參數都已經設置好了)其中 c 就是塊的數量,Um 是被映射的一元組的數量。p 可以減少 F-mean 的值。最後:
M=(1p)Fmean M=(1-p) F_{\text {mean }}
2. 優點

  • 該方法基於一元組的精度和召回的調和平均,召回的權重比精度要高一點 , 與人類判斷相關性高

  • 引入了外部知識,評價更加友好了。

3. 缺點

  • 實現非常複雜,目前只有 java 版本

  • α、γ和θ 均爲用於評價的默認參數。這些都是對着某個數據集調出來的(讓算法的結果和人的主觀評價儘可能一致,方法我記得是 grid search)。參數一多聽起來就不靠譜(給個眼神體會一下)

  • 需要有外部知識。如果很多詞不在 wordnet,那其實就沒什麼意義了

TER

TER 是 Translation Edit Rate 的縮寫,是一種基於距離的評價方法,用來評定機器翻譯結果的譯後編輯的工作量。

這裏,距離被定義爲將一個序列轉換成另一個序列所需要的最少編輯操作次數。操作次數越多,距離越大,序列之間的相似性越低;相反距離越小,表示一個句子越容易改寫成另一個句子,序列之間的相似性越高。

TER 使用的編輯操作包括:增加、刪除、替換和移位。其中增加、刪除、替換操作計算得到的距離被稱爲編輯距離,並根據錯誤率的形式給出評分
 score =edit(c,r)l\text { score }=\frac{\operatorname{edit}(c, r)}{l}
其中 edit(c,r) 是指機器翻譯生成的候選譯文 c 和參考譯文 r 之間的距離,l 是歸一化因子,通常爲參考譯文的長度。在距離計算中所有的操作的代價都爲 1。在計算距離時,優先考慮移位操作,再計算編輯距離,也就是增加、刪除和替換操作的次數。直到移位操作(參考文獻中還有個增加操作,感覺是筆誤了)無法減少編輯距離時,將編輯距離和移位操作的次數累加得到 TER 計算的距離。

Example 1.2 Candidate:cat is standing in the ground Reference:The cat is standing on the ground

將 Candidate 轉換爲 Reference,需要進行一次增加操作,在句首增加 “The”;一次替換操作,將 “in” 替換爲 “on”。所以 edit(c, r) = 2,歸一化因子 l 爲 Reference 的長度 7,所以該參考譯文的 TER 錯誤率爲 2/7。

與 BLEU 不同,基於距離的評價方法是一種典型的 “錯誤率” 的度量,類似的思想也廣泛應用於語音識別等領域。在機器翻譯中,除了 TER 外,還有 WER,PER 等十分相似的方法,只是在 “錯誤” 的定義上略有不同。需要注意的是,很多時候,研究者並不會單獨使用 BLEU 或者 TER,而是將兩種方法融合,比如,使用 BLEU 與 TER 相減後的值作爲評價指標。

data to text 常用指標

data to text 和翻譯、摘要等生成式任務最大的不同是,input 是類似於 table 或者三元組等其他形式的數據。在評估生成結果時,我們還需要考慮文本是否準確的涵蓋了 data 的信息。

《Challenges in Data-to-Document Generation》提供了許多 data to text 的評價指標,並且被後續的一些論文采用:

relation generation (RG)

Relation generation 指從生成的句子中抽取出關係,然後對比有多少關係也出現在了 source 中(一般有 recall 和 count2 個指標);

This measures how well the system is able to generate text containing factual (i.e., correct) records.

content selection (CS)

content selection 一般指 data 當中的內容有多少出現在了生成的句子中,一般有 precision 和 recall 兩個指標;

This measures how well the generated document matches the gold document in terms of selecting which records to generate.

content ordering (CO)

content ordering 使用歸一化 Damerau-Levenshtein 距離計算生成句和參考句的 “sequence of records(個人認爲可以理解爲 item)”

This measures how well the system orders the records it chooses to discuss.

如何實現上述的評價指標

具體到某一個任務而言(這裏以 ROTOWIRE 數據集,籃球比賽報道爲例),ROTOWIRE 數據以 (entity , value , type),例如(MIAMI HEAT,95, POINTS) 的形式出現。針對以下參考句:

The Atlanta Hawks defeated the Miami Heat , 103 - 95 , at Philips Arena on Wednesday .

首先抽取出現在文本當中的 (實體 - 值) 對(例如“邁阿密熱火”-95),然後預測該對的 type 值是什麼(正確答案應該是 POINTS)。作者提到,許多信息抽取系統都是通過這樣的方式把問題從多關係抽取簡化爲多目標分類問題,以此 train 一個簡單的信息抽取的 model。

若如此做,在 test 階段就擁有一個抽取 + 分類的 model 用以評估上述指標。作者指出,他們的 model 擁有 90% 的精確率和 60% 的召回率,這足以支持他們來評估自己生成句子的質量。

具體實現和代碼可以參照:https://github.com/harvardnlp/data2text

Coverage

如果你的 data to text 不涉及複雜的關係抽取,也可以簡單的通過匹配方法來驗證文本是否能夠覆蓋要描述的 data。

This metric measures the average proportion of input items that are covered by a generated text. We recognized attribute values (ingredients) with string match heuristics.

Distinct

在某些生成場景中(對話,廣告文案)等,還需要追求文本的多樣性。李紀爲的《A diversity-promoting objective function for neural conversation models》提出了 Distinct 指標,後續也被許多人採用。

Distinct 的定義如下:

Count(unique ngram) 表示回覆中不重複的 ngram 數量, Count(word) 表示回覆中 ngram 詞語的總數量。

Distinct-n 越大表示生成的多樣性越高。

image caption 常用指標


CIDEr

CIDEr 是專門設計出來用於圖像標註問題的。這個指標將每個句子都看作 “文檔”,將其表示成 Term Frequency Inverse Document Frequency(tf-idf)向量的形式,通過對每個 n 元組進行 (TF-IDF) 權重計算,計算參考 caption 與模型生成的 caption 的餘弦相似度,來衡量圖像標註的一致性的。

  • 公式

  • 舉例

好處

是一種加權的評價指標,他更關注你是否說到了重點,而常見的詞權重則沒有那麼高。在 Kaustav_slides image caption 的綜述裏,也提到這個評價指標和人類的評價相關性更高一些。

SPICE

SPICE 也是專門設計出來用於 image caption 問題的。全稱是 Semantic Propositional Image Caption Evaluation。

我們考慮如下圖片:

你很快會發現儘管生成的句子與參考句極爲相似(只有 basketball 一詞不一樣),但我們仍認爲這是一個糟糕的生成。原因在於考慮了語義的情況下,模型把網球場錯誤的識別成了籃球場。這個時候 BLEU 或者其他指標就不能很好的評價生成效果了。

SPICE 使用基於圖的語義表示來編碼 caption 中的 objects, attributes 和 relationships。它先將待評價 caption 和參考 captions 用 Probabilistic Context-Free Grammar (PCFG) dependency parser parse 成 syntactic dependencies trees,然後用基於規則的方法把 dependency tree 映射成 scene graphs。最後計算待評價的 caption 中 objects, attributes 和 relationships 的 F-score 值。

還是已上圖爲例,a young girl standing on top of a tennis court (參考句) 可以被 SPICE 做如下處理:

得到了若干個三元組之後,我們通過下面的公式來計算候選句 c 和參考句(或集合)S 的得分:
P(c,S)=T(c)T(S)T(c)R(c,S)=T(c)T(S)T(S)SPICE(c,S)=F1(c,S)=2P(c,S)R(c,S)P(c,S)+R(c,S)\begin{aligned} P(c, S) &=\frac{|T(c) \otimes T(S)|}{|T(c)|} \\ R(c, S) &=\frac{|T(c) \otimes T(S)|}{|T(S)|} \\ \operatorname{SPICE}(c, S) &=F_{1}(c, S)=\frac{2 \cdot P(c, S) \cdot R(c, S)}{P(c, S)+R(c, S)} \end{aligned}
這裏有一個例子:

1. 好處

  • 對目標,屬性,關係有更多的考慮;

  • 和基於 n-gram 的評價模式相比,有更高的和人類評價的相關性

2. 缺點

  • 不考慮語法問題

  • 依賴於 semantic parsers , 但是他不總是對的

  • 每個目標,屬性,關係的權重都是一樣的(一幅畫的物體顯然有主次之分)

詞向量評價指標

上面的詞重疊評價指標基本上都是 n-gram 方式,去計算生成響應和真是響應之間的重合程度,共現程度等指標。而詞向量則是通過 Word2Vec、Sent2Vec 等方法將句子轉換爲向量表示,這樣一個句子就被映射到一個低維空間,句向量在一定程度上表徵了其含義,在通過餘弦相似度等方法就可以計算兩個句子之間的相似程度。

使用詞向量的好處是,可以一定程度上增加答案的多樣性,因爲這裏大多采用詞語相似度進行表徵,相比詞重疊中要求出現完全相同的詞語,限制降低了很多。

不過說句實話,至少在我讀過的 paper 裏很少有人用(或者說只用)這種評價指標來衡量模型好壞的。作爲知識拓展,這裏也簡單介紹一下。

Greedy Matching


如上圖所示,對於真實響應的每個詞,尋找其在生成響應中相似度最高的詞,並將其餘弦相似度相加並求平均。同樣再對生成響應再做一遍,並取二者的平均值。上面的相似度計算都是基於詞向量進行的,可以看出本方法主要關注兩句話之間最相似的那些詞語,即關鍵詞。

Embedding Average

這種方法直接使用句向量計算真實響應和生成響應之間的相似度,而句向量則是每個詞向量加權平均而來,如下圖所示。然後使用餘弦相似度來計算兩個句向量之間的相似度。

Vector Extrema

跟上面的方法類似,也是先通過詞向量計算出句向量,在使用句向量之間的餘弦相似度表示二者的相似度。不過句向量的計算方法略有不同,這裏採用向量極值法進行計算。

基於語言模型的方法

PPL

它也可以用來比較兩個語言模型在預測樣本上的優劣。低困惑度的概率分佈模型或概率模型能更好地預測樣本。(例如,給定一段人寫的文本,分別查看 rnn 和 gpt-2 的 ppl 分數如何)

注意,PPL 指標是越低,代表語言模型的建模能力就越好

給測試集的句子賦予較高概率值的語言模型較好, 當語言模型訓練完之後,測試集中的句子都是正常的句子,那麼訓練好的模型就是在測試集上的概率越高越好,公式如下:
PPL(W)=P(w1w2wN)1N=1P(w1w2wNn\operatorname{PPL}(W)=P\left(w_{1} w_{2} \ldots w_{N}\right)^{-\frac{1}{N}}=\sqrt[n]{\frac{1}{P\left(w_{1} w_{2} \ldots w_{N}\right.}}
所以當我們使用 tf.contrib.seq2seq.sequence_loss() 函數計算模型 loss 的時候,perplexity 的計算就顯得很簡單了,直接對計算出來的 loss 取個指數就行了,命令如下所示:

train_perp = math.exp(float(mean_loss)) if mean_loss < 300else math.inf

基於 bert 的評分指標

基於 N-gram 重疊的度量標準只對詞彙變化敏感,不能識別句子語義或語法的變化。因此,它們被反覆證明與人工評估差距較大。

近年來 Bert 爲代表的的 plm 紅紅火火,於是有人提出使用句子上下文表示 (bert 全家桶) 和人工設計的計算邏輯對句子相似度進行計算。這樣的評價指標魯棒性較好,在缺乏訓練數據的情況下也具有較好表現。

BERTSCORE

BERTSCORE: EVALUATING TEXT GENERATION WITH BERT , ICLR 2020

思路是非常簡單的:即對兩個生成句和參考句(word piece 進行 tokenize)分別用 bert 提取特徵,然後對 2 個句子的每一個詞分別計算內積,可以得到一個相似性矩陣。基於這個矩陣,我們可以分別對參考句和生成句做一個最大相似性得分的累加然後歸一化,得到 bertscore 的 precision,recall 和 F1:
RBERT=1xxixmaxx^jx^xix^j,PBERT=1x^x^jx^maxxixxix^j,FBERT=2PBERTRBERTPBERT+RBERTR_{\mathrm{BERT}}=\frac{1}{|x|} \sum_{x_{i} \in x} \max _{\hat{x}_{j} \in \hat{x}} \mathbf{x}_{i}^{\top} \hat{\mathbf{x}}_{j}, \quad P_{\mathrm{BERT}}=\frac{1}{|\hat{x}|} \sum_{\hat{x}_{j} \in \hat{x}} \max _{x_{i} \in x} \mathbf{x}_{i}^{\top} \hat{\mathbf{x}}_{j}, \quad F_{\mathrm{BERT}}=2 \frac{P_{\mathrm{BERT}} \cdot R_{\mathrm{BERT}}}{P_{\mathrm{BERT}}+R_{\mathrm{BERT}}}
流程如下圖所示:

1. Importance Weighting

還可以考慮給不同的詞以權重。作者使用 idf 函數,即給定 M 個參考句,詞 w 的 idf 爲:
idf(w)=log1Mi=1MI[wx(i)]\operatorname{idf}(w)=-\log \frac{1}{M} \sum_{i=1}^{M} \mathbb{I}\left[w \in x^{(i)}\right]
用此式更新上述評分,例如 recall:
RBERT=xixidf(xi)maxx^jx^xix^jxix idf (xi)R_{\mathrm{BERT}}=\frac{\sum_{x_{i} \in x} \operatorname{idf}\left(x_{i}\right) \max _{\hat{x}_{j} \in \hat{x}} \mathbf{x}_{i}^{\top} \hat{\mathbf{x}}_{j}}{\sum_{x_{i} \in x} \text { idf }\left(x_{i}\right)}
2. Baseline Rescaling

爲了保證一個可讀性(即不好的生成值爲 0,好的生成值爲 1)需要做一個 Rescaling。作者的做法是隨機的組合候選句和參考句(we create 1M candidate-reference pairs by grouping two random sentences.)從而計算一個 b 的平均值。b 會被用於以下的式子:
R^BERT=RBERTb1b\hat{R}_{\mathrm{BERT}}=\frac{R_{\mathrm{BERT}}-b}{1-b}
若如此做,R_BERT 會被映射到 0 和 1(typically),precision 和 F1 也可以做相似的操作。

3. 實驗設計

有大量豐富的實驗驗證魯棒性和有效性。(43 頁的 paper,模型只講了半頁)

拓展閱讀 :BLEURT

BLEURT: Learning Robust Metrics for Text Generation. ACL 2020

作者認爲,可以通過預訓練結合人工評估數據的微調來同時滿足度量方法的魯棒性和表達度。基於該思路,提出了 BLEURT,一種基於 BERT 的文本生成任務度量方法,通過對維基百科句子的隨機擾動,輔以一組詞彙級和語義級的監督信號來進行預訓練。

個人感覺主要和 bertscore 主要的區別在於:

  • bertscore 本質上是隻利用 embedding 計算內積,BLEURT 本質上是 finetune 語義相似度任務,然後用來做評價指標。
    v[CLS],vx1,vxr,vxi,vxp~=BERT(x,x~)v_{[C L S]}, v_{x_{1}}, \ldots v_{x_{r}}, v_{x_{i}}, \ldots v_{x_{\tilde{p}}}=B E R T(x, \tilde{x})

取特殊標誌 [CLS] 位置的向量作爲句子表示,饋入一線性層,獲得相似度分數:
y^=f(x,x~)=Wv~[CLS]+b\hat{y}=f(x, \tilde{x})=W \tilde{v}_{[C L S]}+b

  • 在 finetune 以前,作者是通過遮蓋 (BERT,spanBERT),回譯(en->fr->en),刪除(30%) 等方法獲取擾亂句子集合,然後利用原本的句子集合和擾亂句子集合進行“模型預熱”。預熱的監督信息有:
    • 其他自動指標計算方法的結果 (BLEU,ROUGE,BERTscore)
    • 回譯似然度
    • 三分類標籤,判斷原句和擾動句的文本關係,主要包括蘊含、矛盾、中立
    • 回譯標誌,標註擾動句是否通過原句由回譯過程生成

詳情請看 :《BLEURT: 用於文本生成任務的魯棒指標》閱讀筆記 - Henretter 的文章 - 知乎 https://zhuanlan.zhihu.com/p/129711609

拓展閱讀 :MoverScore

MoverScore: Text Generation Evaluating with Contextualized Embeddings and Earth Mover Distance.

個人感覺主要和 bertscore 相比有 2 點創新:

  • 採用了推土機距離計算和參考句的相似程度,而不是單純的像 bertscore 只考慮最相似的詞的距離。這樣我覺得可以防止候選句的某一個詞過於強大(離所有參考句的 word 都很接近,結果代替了其他候選句的詞來表現)

  • 如何得到一個 word/n-gram 的向量表示,基於預訓練的模型來得到 contextualized 表示是一個開放性的問題,Elmo 和 BERT 都是多層結構,不同的 layer 包含了不同的含義。作者這裏提到了兩種方法,並最終採用了前者:
  1. the concatenation of power means

  2. a routing mechanism for aggregation

具體可參考博客:https://panxiaoxie.cn/2019/10/31/%E4%BB%8E0%E5%BC%80%E5%A7%8BGAN-9-metric-for-NLG/

總結

  • BLEU,ROUGE 等評價指標依然是主流的評價方式

  • 從短句懲罰、重複、重要信息缺失、多樣化等方面,衍生出例如 METEOR、SPICE、Distinct 等評價指標

  • 以 bertscore 爲代表的評價指標近年來受到廣泛的關注,與人工評價的相關性也越來越高

參考文獻

[1] 文本生成任務評估指標 https://blog.csdn.net/linchuhai/article/details/90140555
[2] 文本生成評價方法 BLEU ROUGE CIDEr SPICE Perplexity METEOR - 思婕的便攜席夢思的文章 - 知乎 https://zhuanlan.zhihu.com/p/108630305
[3] NLP 輸出文本評估:使用 BLEU 需要承擔哪些風險?https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/87835014
[4] 機器翻譯自動評估 - BLEU 算法詳解 https://blog.csdn.net/qq_31584157/article/details/77709454
[5] 機器翻譯, 文本生成等任務評價指標 BLEU, ROUGE, PPL(困惑度)https://blog.csdn.net/shawroad88/article/details/105639148
[6] 現在基於深度學習的對話系統常用的評價指標有哪些,分別有什麼優缺點和適用範圍?- 徐阿衡的回答 - 知乎 https://www.zhihu.com/question/264731577/answer/284806491
[7] 【NLP】機器翻譯常用評價標準 (BLEU & METEOR) https://blog.csdn.net/Jkwwwwwwwwww/article/details/52846728
[8] 看圖說話的 AI 小朋友——圖像標註趣談(上) - 杜客的文章 - 知乎 https://zhuanlan.zhihu.com/p/22408033
[9] 深度學習對話系統理論篇 – 數據集和評價指標介紹 - 嗚嗚哈的文章 - 知乎 https://zhuanlan.zhihu.com/p/33088748
[10] Anderson, Peter, et al. “Spice: Semantic propositional image caption evaluation.” European Conference on Computer Vision. Springer, Cham, 2016.
[11] Sam Wiseman, Stuart Shieber, and Alexander Rush.2017. Challenges in data-to-document generation.In Proceedings of the 2017 Conference on Empirical Methods in Natural Language Processing, pages 2253–2263. Association for Computational Linguistics.
[12] https://opensource.niutrans.com/mtbook/section1-5.html
[13] Wiseman, Sam, Stuart M. Shieber, and Alexander M. Rush. “Challenges in data-to-document generation.” arXiv preprint arXiv:1707.08052 (2017).
[14] Li, Jiwei, et al. “A diversity-promoting objective function for neural conversation models.” arXiv preprint arXiv:1510.03055 (2015).
[15] Zhang, Tianyi, et al. “Bertscore: Evaluating text generation with bert.” arXiv preprint arXiv:1904.09675 (2019).
[16] Sellam, Thibault, Dipanjan Das, and Ankur P. Parikh. “BLEURT: Learning Robust Metrics for Text Generation.” arXiv preprint arXiv:2004.04696 (2020).
[17] https://panxiaoxie.cn/2019/10/31/%E4%BB%8E0%E5%BC%80%E5%A7%8BGAN-9-metric-for-NLG/
[18] 《BLEURT: 用於文本生成任務的魯棒指標》閱讀筆記 - Henretter 的文章 - 知乎 https://zhuanlan.zhihu.com/p/129711609

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章