10

Image Caption 评价标准——BLEU

 3 years ago
source link: https://arminli.com/bleu/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Image Caption 评价标准——BLEU

June 12, 2017

在 Image Caption 任务中,几种评价算法被用来度量预测结果(candidate caption)与 label (reference captions)的差异,这个系列主要介绍这几种评价标准。

  • I_iI\_{i}I_i 为图像 iii
  • candidate caption cic_{i}ci​ 为模型预测结果句子
  • reference captions S∗i={s∗i1…s_im}∈SS*{i} = \{s*{i1}…s\_{im}\} \in SS∗i={s∗i1…s_im}∈S 为训练图片的 label,也就是需要学习的句子(一幅图片被标注了多个句子)
  • 图像语句使用 nnn-gram 来表示,一个 nnn-gram wk∈Ωw_{k} \in \Omegawk​∈Ω是一个或多个(其实就是 n 个)有序单词的集合,我们只谈论 nnn-gram 从 1 个单词到 4 个单词的情况。
  • hk(sij)h_{k}(s_{ij})hk​(sij​) 为一个 nnn-gram wkw_{k}wk​ 在 reference caption sijs_{ij}sij​ 中出现的次数
  • hk(ci)h_{k}(c_{i})hk​(ci​) 为一个 nnn-gram wkw_{k}wk​ 在 candidate caption cic_{i}ci​ 中出现的次数

BLEU 是一种在机器翻译中度量 candidate 句子和 reference 句子间 nnn-gram 的相关性的方法。我们先给出数学定义,然后根据一个例子来看看 BLEU 具体是如何工作的。

它计算整个语料库中 nnn-gram 精度:

CPn(C,S)=∑i∑kmin⁡(hk(ci),max⁡j∈mhk(sij))∑i∑khk(ci)CP_{n}(C,S)=\dfrac{\sum_{i}\sum_{k}\min(h_{k}(c_{i}),\max\limits_{j \in m}h_{k}(s_{ij}))}{\sum_{i}\sum_{k}h_{k}(c_{i})}CPn​(C,S)=∑i​∑k​hk​(ci​)∑i​∑k​min(hk​(ci​),j∈mmax​hk​(sij​))​

其中,kkk 为这组 nnn-gram 的索引,

引入惩罚值(brevity penalty)为:

b(C,S)={e1−lS/lCiflC≤lS1iflC>lSb(C,S)=\{^{1\qquad\qquad\mathrm{if}\;l_{C}>l_{S}}_{e^{1-l_{S}/l_{C}} \qquad \mathrm{if}\; l_{C}\leq l_{S} }b(C,S)={e1−lS​/lC​iflC​≤lS​1iflC​>lS​​

其中,lCl_{C}lC​ 为候选句子 cic_{i}ci​ 的总长度,lSl_{S}lS​ 为参考句子长度(当有多个参考句子时选择长度最接近候选句子长度的那个)。

最终计算 BLUE 分数,它实际上是 nnn-gram 精度的加权几何平均:

BLEUN(C,S)=b(C,S)exp⁡(∑n=1Nwnlog⁡CPn(C,S))BLEU_{N}(C,S)=b(C,S)\exp \left( \sum^{N}_{n=1}w_{n}\log CP_{n}(C,S)\right)BLEUN​(C,S)=b(C,S)exp(n=1∑N​wn​logCPn​(C,S))

其中,N=1,2,3,4N=1,2,3,4N=1,2,3,4 并且对于所有的 nnn, wnw_{n}wn​ 是常量。

随着 nnn 的增加,BLEU 在语料库层级上的匹配效果较好,在句子层级上的匹配效果越来越差。因此 BLEU 在评估独立句子时表现糟糕。

接下来我们根据维基百科上的例子看一下 BLEU 是如何工作的,这个例子展示了糟糕的预测结果却得到了很高的一元组(unigram)精度分数。

9cd77f2ely1fgigq2qpb5j20ry0biq3z.jpg

表中第一行为预测结果,下面两行为训练集中的图片描述。候选句子的七个单词都出现在参考句子中,所以候选句子的一元组精度为

P=mwt=77=1P = \dfrac{m}{w_{t}}=\dfrac{7}{7}=1P=wt​m​=77​=1

其中,mmm 为候选句子中的单词出现在参考句子中的个数,wtw_{t}wt​ 是候选句子的单词总数。所以可以看到,这是一个很完美的得分,但是实际的效果非常差。

BLEU 的修改非常直接,对于候选句子中的每个单词,算法计算它出现在每个参考句子中的最大次数, max⁡j∈mhk(sij))\max\limits_{j \in m}h_{k}(s_{ij}))j∈mmax​hk​(sij​))。比如说,在上面的例子中,the 在参考句子 1 中出现了 2 次,在参考句子 2 中出现了 1 次,所以 max⁡j∈mhk(sij))=2\max\limits_{j \in m}h_{k}(s_{ij}))=2j∈mmax​hk​(sij​))=2。

对于候选句子,记录每个单词的出现次数 hk(ci)h_{k}(c_{i})hk​(ci​) ,比如对于 the,值为 7,那么 min⁡(hk(ci),max⁡j∈mhk(sij))\min(h_{k}(c_{i}),\max\limits_{j \in m}h_{k}(s_{ij}))min(hk​(ci​),j∈mmax​hk​(sij​)) 的值为 min⁡(7,2)=2\min{(7,2)}=2min(7,2)=2 ,因此 CPn(C,S)=27CP_{n}(C,S)=\dfrac{2}{7}CPn​(C,S)=72​。

实际上,使用单个单词(unigram)来比较并不理想,所以 BLEU 使用 nnn-gram 来计算。

BLEU 在短句子上表现的精度非常高,假如上例中的候选句子为

the cat

而参考句子不变,那么CPn(C,S)=1+11+1=1CP_{n}(C,S)=\dfrac{1+1}{1+1}=1CPn​(C,S)=1+11+1​=1。如果是二元组(bigram)结果同样为 1。

为了解决很短的句子产生很高的分数这个问题,BLEU 引入惩罚值(brevity penalty),即 b(C,S)b(C,S)b(C,S)。当 lC≤lSl_{C}\leq l_{S}lC​≤lS​ 时,惩罚生效,具体计算如前面的的式子。

References


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK