为了高效度量image captioning模型的效果,我们需要引入各种自动度量,这些有的是从机器翻译中借鉴的,有的是为了image captioning专门提出的,本文主要介绍几个常用的image captioning metric,它们是BLEU、ROUGE、METEOR、CIDEr和SPICE
我们规定将captioner生成的句子称为candidate,将ground truth句子称为reference,并且默认每张图片有多个references(就像COCO数据集中一样),自动度量就是根据算法程序来自动评估candidate和reference的一致性,从而评判模型的优劣
BLEU是2002年提出的一个自动度量,它本身是一个机器翻译的自动度量方法
简单来说BLEU就是一个n-gram precision的度量,它关注的是candidate出现的n-gram是否在reference中出现(即precision),而不关注reference中出现的n-gram,是否在candidate中出现(也就是recall),原文循循善诱,从各种特例一步步引出了最后的BLEU度量,这里简单地重述一下
一个好的candidate,无疑是与所有reference共享很多n-gram的,于是candidate中更多地出现reference中的n-gram,我们就认为它是一个好的candidate,因此,我们选择precision来度量candidate,具体的,对于某个n,先把candidate分成多个n-gram,假设candidate是一句10个词的句子,那么就能分成10-n+1=11-n个n-gram,对于11-n中的每个n-gram,如果它在任何一个reference中出现,则它算是一个正确的n-gram,最后正确的n-gram数除以总的11-n则是最终的结果,比如
假设n=2,那么可见candidate中的每个2-gram都在reference中出现过,所以最后的BLEU得分是6/6=1
我们在做二分类的时候就知道,准确率高的模型并不一定好,比如一个癌症二分类模型,99%的数据都是阴性的话,模型只需要全部分类成阴性就能达到99%的准确率,但这显然并不是一个好的模型,所以,仅仅度量准确率是存在很大的问题的,比如
显然,在n=1时,BLEU的计算结果是1,但这个candidate显然是不合理的,因此v2的BLEU限制了一个n-gram词(组)被计为正确的最大次数,即不能超过单个reference中该n-gram出现的最大次数,以上面为例就是“the”这个词在单个reference中出现的最大次数是2,因此,candidate中仅有两个“the”被计算为正确,因此,当n=1时,BLEU值为2/7,这在原文中称为modified n-gram precisions
另一个问题就是
因为句子太短,这样计算出的BLEU也是1,此时我们想到引入recall来解决这个问题,但是原文中指出了这种方法的困难之处,就是当有多个reference的时候如何度量recall的问题,如果简单要求reference中出现的n-gram在candidate中都要出现,就会遇到下面的情况
显然candidate1的recall比candidate2的recall要大的多的多,但它仅仅是将所有reference中的词都用上了,而一个合理的candidate,应该仅仅选择这些近义词中的一个就可以了
所以为了解决短句问题,同时也避免使用recall,BLEU就增加了一个短句惩罚项(sentence brevity penalty),首先根据candidate的长度 c c c,选择一个最相近的reference句的长度 r r r,计算
B P = { 1 if c>r e ( 1 − r / c ) else BP= \begin{cases} 1& \text{if c>r}\\ e^{(1-r/c)}& \text{else} \end{cases} BP={1e(1−r/c)if c>relse
仅在candidate比reference短的时候有惩罚,最后BLEU的计算公式为
B L E U = B P exp ( ∑ n = 1 N w n log p n ) BLEU = BP\exp\big(\sum_{n=1}^Nw_n\log p_n\big) BLEU=BPexp(n=1∑Nwnlogpn)
N通常取4, w n w_n wn取1/4,其中 p n p_n pn就是n-gram的precision,注意到这里并不是不同的 p n p_n pn简单相加,而是取了一个log,这是因为作者发现 p n p_n pn随着n的增加大致以指数函数的形式下降,所以使用对数来均衡不同n-gram precision对最终BLEU的影响
ROUGE是2004年出来的一篇文章,也是机器翻译的自动度量,文中介绍了很多种不同的ROUGE计算方法,其中在image captioning中主要用到的就是ROUGE-L
与BLEU相对的,ROUGE是一个recall的度量,首先看单个reference的recall计算,与BLEU的计算方式相似,只不过计算的分母变成了reference中的n-gram总数
当n=1时,reference中有6个unigram,而candidate中正确的有6个,所以最终的recall值为6/6=1,此时的precision为6/7
当面对多个reference的时候,BLEU的作者认为简单计算recall并不合理,ROUGE的作者用一种简单的方法解决了这个问题,就是拿candidate和每个reference计算recall,取其中最大的一个作为最终的recall值,注意到在这种计算方法下,更多的reference句可能会让ROUGE更大
然而,ROUGE-L并没有采用n-gram的recall计算方式,而是采用了最长公共子列,两个sequence的最长公共子列的定义详见网上,ROUGE-L的计算公式为
R l c s = L C S ( X , Y ) m R_{lcs}=\dfrac{LCS(X,Y)}{m}\\ Rlcs=mLCS(X,Y)
P l c s = L C S ( X , Y ) n P_{lcs}=\dfrac{LCS(X,Y)}{n}\\ Plcs=nLCS(X,Y)
F l c s = ( 1 + β 2 ) R l c s P l c s R l c s + β 2 P l c s F_{lcs}=\dfrac{(1+\beta^2)R_{lcs}P_{lcs}}{R_{lcs}+\beta^2P_{lcs}} Flcs=Rlcs+β2Plcs(1+β2)RlcsPlcs
其中 L C S ( X , Y ) LCS(X,Y) LCS(X,Y)就是X和Y的最长公共子列, β = P l c s / R l c s \beta=P_{lcs}/R_{lcs} β=Plcs/Rlcs, m m m是reference的长度, n n n是candidate的长度
METEOR是2005年提出的一个机器翻译的自动度量
METEOR开篇就提出了BLEU存在的种种问题,比如
而METEOR就为了解决这些问题而生
METEOR的主要思想就是在candidate和reference之间做一个word-to-word matching,每个word与0个或1个word进行匹配,这个matching的过程主要分为两个步骤
而两个词matching的原则有三种
整个matching的过程就分别按照上面的三个原则进行matching,首先进行exact匹配,经过matching的两个步骤后,剩下的没有匹配的词再进行porter stem匹配,以此类推,直到三个步骤执行完毕
匹配完成后,METEOR就计算precision和recall,然后计算Fmean
F m e a n = 10 P R R + 9 P Fmean=\dfrac{10PR}{R+9P} Fmean=R+9P10PR
为了考虑到匹配的长度,作者引入了一个penalty
P e n a l t y = 0.5 × ( # c h u n k s # u n i g r a m s _ m a t c h e d ) Penalty=0.5\times\bigg(\dfrac{\#chunks}{\#unigrams\_matched}\bigg) Penalty=0.5×(#unigrams_matched#chunks)
若candidate中相邻的匹配成功的词在reference中也相邻,则它们组成一个chunk, # c h u n k s \#chunks #chunks代表candidate中chunk数的最小值(因为一个更长的chunk包含短的chunk,所以要取最小值),比如
这里candidate的 # c h u n k = 2 \#chunk=2 #chunk=2,一个是"the president"另一个是"spoke to the audience"
当 # c h u n k s \#chunks #chunks越小时,penalty就越小,这是因为作者不仅希望candidate和reference的匹配成功的词多,而且要有尽可能长的连续的匹配
最终METEOR的计算公式为
S c o r e = F m e a n × ( 1 − P e n a l t y ) Score=Fmean\times(1-Penalty) Score=Fmean×(1−Penalty)
对于多个reference,METEOR选择得分最高的那个
CIDEr是2015CVPR的文章,相对BLEU和ROUGE的简单匹配而言,CIDEr的结果参考价值更高
CIDEr是image captioning特有的自动度量方法,它的基本原理也是n-gram匹配,但它引入了TP-IDF对不同的n-gram加权,先对所有句子进行stemming,将词变成词根的形式,对于不同的n,首先计算n-gram w k w_k wk在整个reference集合上的TF-IDF值
g k ( s i j ) = h k ( s i j ) ∑ w l ∈ Ω h l ( s i j ) log ( ∣ I ∣ ∑ I p ∈ I min ( 1 , ∑ q h k ( s p q ) ) ) g_k(s_{ij})=\dfrac{h_k(s_{ij})}{\sum_{w_{l}\in\Omega}h_l(s_{ij})}\log\bigg( \dfrac{|I|}{\sum_{I_p\in I}\min(1,\sum_qh_k(s_{pq}))}\bigg) gk(sij)=∑wl∈Ωhl(sij)hk(sij)log(∑Ip∈Imin(1,∑qhk(spq))∣I∣)
上面就是一个TF-IDF的计算公式,左边是TF,右边是IDF,其中 s i j s_{ij} sij表示第 i i i幅图的第 j j j个reference caption, h k ( s i j ) h_k(s_{ij}) hk(sij),表示 w k w_k wk在 s i j s_{ij} sij中的出现次数, Ω \Omega Ω是n-gram的vocabulary, I I I是所有图片的集合,对于不同的 w k w_k wk按照上式计算可以得到一个维度和n-gram vocabulary大小一样的向量,这个向量就是第 i i i幅图第 j j j个reference的一个表示,对于生成的candidate计算也是相同,于是对于每个n,我们可以得到一个candidate的向量表示和几个reference的向量表示,然后我们计算它们的平均cosine相似度
C I D E r n ( c i , S i ) = 1 m ∑ j g n ( c i ) ⋅ g n ( s i j ) ∥ g n ( c i ) ∥ ∥ g n ( s i j ) ∥ CIDEr_n(c_i,S_i)=\dfrac{1}{m}\sum_j\dfrac{\mathbf{g^n}(c_i)\cdot\mathbf{g^n}(s_{ij})}{\|\mathbf{g^n}(c_i)\|\|\mathbf{g^n}(s_{ij})\|} CIDErn(ci,Si)=m1j∑∥gn(ci)∥∥gn(sij)∥gn(ci)⋅gn(sij)
其中 m m m是reference的个数,于是对于n,我们就求出了reference和candidate的相似度
论文中最终的CIDEr度量综合考虑了1、2、3、4 gram的匹配结果,综合的方法就是求一个平均值
CIDEr ( c i , S i ) = ∑ n = 1 N w n CIDEr n ( c i , S i ) \text{CIDEr}(c_i,S_i)=\sum_{n=1}^{N}w_n\text{CIDEr}_n(c_i,S_i) CIDEr(ci,Si)=n=1∑NwnCIDErn(ci,Si)
N取4, w n w_n wn取 1 4 \dfrac{1}{4} 41
与普通的n-gram匹配方法不同的是,CIDEr引入了TF-IDF为n-gram进行加权,这样就避免评价caption时因为一些常见却不够informative的n-gram打上高分,比如
如果按照普通的n-gram匹配方法,比如bleu或者ROUGE,因为is on the top of 这个很长的短语的存在,自动度量会给candidate打很高的分数,而重要的信息book和desk被改成了cat和shelf对分数的减益并不多,而在CIDEr中,可能因为is on the top of在整个corpus中的出现次数过多,IDF值很低,所以对于最终的评分结果的正向影响会下降
当我们讨论自动度量时,需要充分分析度量会不会碰到潜在的漏洞,这被称为一个metric的"gaming",一个candidate如果在度量上得分很高但在人类看来有很大的问题,它就是这个度量的一个"gaming",论文最后作者就提出了CIDEr的两个问题
为了解决这两个问题,作者提出了CIDEr-D
CIDEr-D采用不同的方法来分别解决上面的两个问题
CIDEr-D n ( c i , S i ) = 10 m ∑ j e − ( l ( c i ) − l ( s i j ) ) 2 2 σ 2 × min ( g n ( c i ) , g n ( s i j ) ) ⋅ g n ( s i j ) ∥ g n ( c i ) ∥ ∥ g n ( s i j ) ∥ \text{CIDEr-D}_n(c_i,S_i)=\dfrac{10}{m}\sum_je^{\frac{-(l(c_i)-l(s_{ij}))^2}{2\sigma^2}}\times\dfrac{\min(\mathbf{g^n}(c_i),\mathbf{g^n}(s_{ij}))\cdot\mathbf{g^n}(s_{ij})}{\|\mathbf{g^n}(c_i)\|\|\mathbf{g^n}(s_{ij})\|} CIDEr-Dn(ci,Si)=m10j∑e2σ2−(l(ci)−l(sij))2×∥gn(ci)∥∥gn(sij)∥min(gn(ci),gn(sij))⋅gn(sij)
CIDEr-D的最终综合计算方法和CIDEr一样,都是1、2、3、4 gram的平均值
这是在SPICE文章中提出的,CIDEr因为引入了TF-IDF而受到整个数据集规模的影响
SPICE是2016年ECCV的一篇文章,也是与CIDEr一样的专属于image captioning的、参考意义相对其他度量更高的metric
SPICE是一个以名词为中心的度量,因此它仅仅适合用于image captioning中,而不是机器翻译度量,SPICE通过度量candidate和reference的scene graph相似度来做到两个句子semantic的匹配
SPICE首先利用semantic parser将candidate和reference转化为scene graph,具体的就是利用Stanford Scene Graph Parser的一个变种从句子中提取出objects,relations和attributes,最终组成一个scene graph,scene graph就是一个图,图上有三类结点,分别是objects、relations和attributes,object与它的attribute相连,object通过relation和其他object相连,如图所示
每个scene graph的objects、attributes和relations都会分别转化为一元、二元、三元组组成的集合,比如上图,最终会转化为
{(girl),(court),(girl,young),(girl,standing),(court,tennis),(girl,on-top-of,court)}
然后,比较candidate和reference集合中元组的precision、recall,最终计算出F1 score
metric | year | paper | key idea | multiple reference |
---|---|---|---|---|
BLEU | 2002 | ACL | n-gram precision | precision根据所有reference计算 |
ROUGE-L | 2004 | Longest common subsequence | 逐个匹配,取最大的 | |
METEOR | 2005 | word-to-word mapping | 逐个匹配,取最大的 | |
CIDEr | 2015 | CVPR | TF-IDF n-gram vector cosine similarity | Average |
SPICE | 2016 | ECCV | scene graph similarity |
1.BLEU: a Method for Automatic Evaluation of Machine Translation
2.ROUGE: A Package for Automatic Evaluation of Summaries
3.METEOR: An Automatic Metric for MT Evaluation with Improved Correlation with Human Judgments
4.CIDEr: Consensus-based Image Description Evaluation
5.SPICE: Semantic Propositional Image Caption Evaluation