Image Caption 评价标准——BLEU

June 12, 2017

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

符号定义

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

BLEU

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

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

CPn(C,S)=ikmin(hk(ci),maxjmhk(sij))ikhk(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})}

其中,kk 为这组 nn-gram 的索引,

引入惩罚值(brevity penalty)为:

b(C,S)={e1lS/lCif  lClS1if  lC>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} }

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

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

BLEUN(C,S)=b(C,S)exp(n=1NwnlogCPn(C,S))BLEU_{N}(C,S)=b(C,S)\exp \left( \sum^{N}_{n=1}w_{n}\log CP_{n}(C,S)\right)

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

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

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

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

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

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

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

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

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

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

the cat

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

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

References


Profile picture

Written by Armin Li , a venture capitalist. [Weibo] [Subscribe]