赞
踩
为了高效度量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=
仅在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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。