天天看點

論文筆記:Contrastive Learning for Image Captioning

原文連結:Contrastive Learning for Image Captioning

Introduction

本文的提出的Contrastive Learning (CL) 主要是為了解決Image Caption任務中生成的Caption缺少Distinctiveness的問題。

這裡的Distinctiveness可以了解為獨特性,指的是對于不同的圖檔,其caption也應該是獨特的、易于區分的。**即在所有圖檔中,這個caption與這幅圖檔的比對度是最高的。**然而現在大多數的模型生成的caption都非常死闆,尤其是對于那些屬于同一類的圖檔,所生成的caption都非常相似,而且caption并沒有描述出這些圖檔在其他方面的差異。

Contrastive Learning for Image Captioning

Empirical Study

文章提出了一個self-retrieval study,來展示缺少Distinctiveness的問題。作者從MSCOCO test set上随機選取了5000張圖檔 I 1 , . . . I 5000 I_1, ... I_{5000} I1​,...I5000​,并且用訓練好的Neuraltalk2和AdaptiveAttention分别對這些圖檔生成對應的5000個caption c 1 , . . . , c 5000 c_1, ..., c_{5000} c1​,...,c5000​。用 p m ( : , θ ) p_m(:, \theta) pm​(:,θ)表示模型,對于每個caption c t c_t ct​,計算其對于所有圖檔的條件機率 p m ( c t ∣ I 1 ) , . . . , p m ( c t ∣ I 5000 ) p_m(c_t | I_1), ..., p_m(c_t | I_{5000}) pm​(ct​∣I1​),...,pm​(ct​∣I5000​),然後對這些機率做一個排序,看這個caption對應的原圖檔是否在這些排序後的結果的top-k個裡。具體可見下圖。

論文筆記:Contrastive Learning for Image Captioning

可見加入了CL來訓練以後,模型的查找準确率明顯提高了,并且ROUGE_L以及CIDEr的分數也提高了,并且準确度與這兩個評價标準的分數呈正相關關系。說明提高Distinctiveness是可以提高模型的performance的。

Contrastive Learning

先介紹通常使用 Maximum Likelihood Estimation (MLE) 訓練的方式,這裡借用show and tell論文裡面的圖:

論文筆記:Contrastive Learning for Image Captioning

輸入一副圖檔以後,我們會逐個地得到下一個目标單詞的機率 p t ( S t ) p_t(S_t) pt​(St​),我們需要最大化這個機率,而訓練目标則通過最小化 L ( I , S ) = − ∑ t = 1 N l o g p t ( S t ) L(I,S)=-\sum_{t=1}^N logp_t(S_t) L(I,S)=−∑t=1N​logpt​(St​) 來實作這一目标。

而使用MLE訓練會導緻缺少Distinctiveness的問題,作者在他之前的文章Towards Diverse and Natural Image Descriptions via a Conditional GAN裡面已經解釋過了,大家可以讀一讀。

而CL的中心思想是以一個參考模型 (reference model,如state-of-the-art的模型,本文以Neuraltalk2和AdaptiveAttention為例) 作為baseline,在此基礎上提高Distinctiveness,同時又能保留其生成caption的品質。參考模型在訓練過程中是固定的。

CL同時還需要正樣本和負樣本作為輸入,正負樣本都是圖檔與ground-truth caption的pair,隻不過正樣本的caption與圖檔是比對的;而負樣本雖然圖檔與正樣本相同,但caption卻是描述其他圖檔的。

具體符号:

目标模型 target model: p m ( : , θ ) p_m(:, \theta) pm​(:,θ)

參考模型 reference model: p n ( : , ϕ ) p_n(:, \phi) pn​(:,ϕ)

正樣本 ground-truth pairs: X = ( ( c 1 , I 1 ) , . . . , ( c T m , I T m ) ) X = ((c_1, I_1), ..., (c_{Tm}, I_{Tm})) X=((c1​,I1​),...,(cTm​,ITm​))

負樣本 mismatched pairs: Y = ( ( c / 1 , I 1 ) , . . . , ( c / T n , I T n ) ) Y = ((c_{/1}, I_1), ..., (c_{/Tn}, I_{Tn})) Y=((c/1​,I1​),...,(c/Tn​,ITn​))

目标模型和參考模型都對所有樣本給出其估計的條件機率 p m ( c ∣ I , θ ) p_m(c|I,\theta) pm​(c∣I,θ)和 p n ( c ∣ I , ϕ ) p_n(c|I,\phi) pn​(c∣I,ϕ)

(這裡的 p m ( c ∣ I , θ ) p_m(c|I,\theta) pm​(c∣I,θ)應該是輸入圖檔後,依次輸入caption中的的單詞 S 0 , . . . , S N − 1 S_0, ..., S_{N-1} S0​,...,SN−1​,并且依次把得到的下一個目标單詞機率 p 1 ( S 1 ) , . . . , p N ( S N ) p_1(S_1), ..., p_N(S_N) p1​(S1​),...,pN​(SN​)相乘所得到的。結合上圖看會更清晰。),并且希望對于所有正樣本來說, p m ( c ∣ I , θ ) p_m(c|I,\theta) pm​(c∣I,θ)大于 p n ( c ∣ I , θ ) p_n(c|I,\theta) pn​(c∣I,θ);對于所有負樣本, p m ( c / ∣ I , θ ) p_m(c_/|I,\theta) pm​(c/​∣I,θ)小于 p n ( c ∣ I , ϕ ) p_n(c|I,\phi) pn​(c∣I,ϕ)。意思就是目标模型對于正樣本要給出比參考模型更高的條件機率,對于負樣本要給出比參考模型更低的條件機率。

定義 p m ( c ∣ I , θ ) p_m(c|I,\theta) pm​(c∣I,θ)和 p n ( c ∣ I , ϕ ) p_n(c|I,\phi) pn​(c∣I,ϕ)的差為 D ( ( c , I ) ; θ , ϕ ) = p m ( c ∣ I , θ ) − p n ( c ∣ I , ϕ ) D((c, I);\theta,\phi) = p_m(c|I,\theta) -p_n(c|I,\phi) D((c,I);θ,ϕ)=pm​(c∣I,θ)−pn​(c∣I,ϕ)

而loss function為 L ′ ( θ ; X , Y , ϕ ) = ∑ t = 1 T m D ( ( c t , I t ) ; θ , ϕ ) − ∑ t = 1 T n D ( ( c / t , I t ) ; θ , ϕ ) \mathcal{L}'(\theta; X, Y, \phi) = \sum_{t=1}^{T_m}D((c_t, I_t);\theta,\phi) - \sum_{t=1}^{T_n}D((c_{/t}, I_t);\theta,\phi) L′(θ;X,Y,ϕ)=∑t=1Tm​​D((ct​,It​);θ,ϕ)−∑t=1Tn​​D((c/t​,It​);θ,ϕ)

這裡應該是最大化loss進行求解。

然而實際上這裡會遇到幾個問題:

首先 p m ( c ∣ I , θ ) p_m(c|I,\theta) pm​(c∣I,θ)和 p n ( c ∣ I , ϕ ) p_n(c|I,\phi) pn​(c∣I,ϕ)都非常小(~ 1e-8),可能會産生numerical problem。是以分别對 p m ( c ∣ I , θ ) p_m(c|I,\theta) pm​(c∣I,θ)和 p n ( c ∣ I , ϕ ) p_n(c|I,\phi) pn​(c∣I,ϕ)取對數,

用 G ( ( c , I ) ; θ , ϕ ) = l n p m ( c ∣ I , θ ) − l n p n ( c ∣ I , ϕ ) G((c, I);\theta,\phi) = ln p_m(c|I,\theta) - ln p_n(c|I,\phi) G((c,I);θ,ϕ)=lnpm​(c∣I,θ)−lnpn​(c∣I,ϕ)來取代 D ( ( c , I ) ; θ , ϕ ) D((c, I);\theta,\phi) D((c,I);θ,ϕ)。

其次,由于負樣本是随機采樣的,不同的正負樣本所産生的 D ( ( c , I ) ; θ , ϕ ) D((c, I);\theta,\phi) D((c,I);θ,ϕ)大小也不一樣,有些D可能遠遠大于0,有些D則比較小,而在最大化loss的過程中更新較小的D則更加有效,是以作者使用了一個logistic function (其實就是sigmoid) r v ( z ) = 1 1 + ν e x p ( − z ) r_v(z) = \frac 1 {1+\nu exp(-z)} rv​(z)=1+νexp(−z)1​,來saturate這些影響,其中 ν = T n / T m \nu = T_n/T_m ν=Tn​/Tm​, 并且$ T_n = T_m 來 平 衡 正 負 樣 本 的 數 量 。 所 以 來平衡正負樣本的數量。是以 來平衡正負樣本的數量。是以D((c, I);\theta,\phi)$又變成了:

h ( ( c , I ) ; θ , ϕ ) = r ν ( G ( ( c , I ) ; θ , ϕ ) ) ) h((c, I);\theta,\phi) = r_\nu(G((c, I);\theta,\phi))) h((c,I);θ,ϕ)=rν​(G((c,I);θ,ϕ)))

因為 h ( ( c , I ) ; θ , ϕ ) ∈ ( 0 , 1 ) h((c, I);\theta,\phi) \in (0, 1) h((c,I);θ,ϕ)∈(0,1),是以loss function變成了

L ( θ ; X , Y , ϕ ) = ∑ t = 1 T m l n [ h ( ( c t , I t ) ; θ , ϕ ) ] + ∑ t = 1 T n l n [ 1 − h ( ( c / t , I t ) ; θ , ϕ ) ] \mathcal{L}(\theta; X, Y, \phi) = \sum_{t=1}^{T_m}ln[h((c_t, I_t);\theta,\phi)] + \sum_{t=1}^{T_n}ln[1 - h((c_{/t}, I_t);\theta,\phi)] L(θ;X,Y,ϕ)=∑t=1Tm​​ln[h((ct​,It​);θ,ϕ)]+∑t=1Tn​​ln[1−h((c/t​,It​);θ,ϕ)]

等式的第一項保證了ground-truth pairs的機率,第二項抑制了mismatched pairs的機率,強制模型學習出Distinctiveness。

另外,本文把X複制了K次,來對應K個不同的負樣本Y,這樣可以防止過拟合,文中選擇K=5。

最終的loss function: J ( θ ) = 1 K 1 T m ∑ k = 1 K L ( θ ; X , Y k , ϕ ) J(\theta) = \frac 1 K \frac 1 {T_m} \sum_{k=1}^K \mathcal{L}(\theta; X, Y_k, \phi) J(θ)=K1​Tm​1​∑k=1K​L(θ;X,Yk​,ϕ)

以上的這些變換的主要受Noise Contrastive Estimation (NCE) 的啟發。

理想情況下,當正負樣本能夠被完美分辨時, J ( θ ) J(\theta) J(θ)的上界是0。即目标模型會對正樣本 p ( c t ∣ I t ) p(c_t | I_t) p(ct​∣It​)給出高機率,負樣本 p ( c / t ∣ I t ) p(c_{/t} | I_t) p(c/t​∣It​)給出低機率。此時

G ( ( c t , I t ) ; θ , ϕ ) = → ∞ G((c_t, I_t);\theta,\phi) = \rightarrow \infty G((ct​,It​);θ,ϕ)=→∞, G ( ( c / t , I t ) ; θ , ϕ ) → − ∞ G((c_{/t}, I_t);\theta,\phi) \rightarrow - \infty G((c/t​,It​);θ,ϕ)→−∞,

h ( ( c t , I t ) ; θ , ϕ ) = 1 h((c_t, I_t);\theta,\phi) =1 h((ct​,It​);θ,ϕ)=1, h ( ( c / t , I t ) ; θ , ϕ ) = 0 h((c_{/t}, I_t);\theta,\phi) = 0 h((c/t​,It​);θ,ϕ)=0,

J ( θ ) J(\theta) J(θ)取得上界0。

但實際上,當目标模型對正樣本給出最高機率1時,我認為 G ( ( c t , I t ) ; θ , ϕ ) 應 該 等 于 l n p n ( c ∣ I , ϕ ) G((c_t, I_t);\theta,\phi) 應該等于 ln p_n(c|I,\phi) G((ct​,It​);θ,ϕ)應該等于lnpn​(c∣I,ϕ),是以 h ( ( c t , I t ) ; θ , ϕ ) < 1 h((c_t, I_t);\theta,\phi) <1 h((ct​,It​);θ,ϕ)<1, J ( θ ) J(\theta) J(θ)的上界應該是小于0的。

實驗結果

論文筆記:Contrastive Learning for Image Captioning

如上圖,可以看到,加入CL以後,模型的表現有較大提升。

論文筆記:Contrastive Learning for Image Captioning

上圖為CL與原模型的一些可視化結果。

論文筆記:Contrastive Learning for Image Captioning

文章還對比了CL跟GAN、IL(Introspective Learning)之間的差別:

  1. IL把target model自身作為reference,并且是通過比較 ( I , c ) , ( I / , c ) (I, c), (I_/, c) (I,c),(I/​,c)來進行學習的。

    IL的負樣本 ( I / , c ) (I_/, c) (I/​,c)通常是預定義且固定的,而CL的負樣本則是動态采樣的。

  2. GAN中的evaluator直接測量Distinctiveness,而不能保證其準确性。

另外,加入IL和GAN後模型的準确性都有所下降,說明模型為了提高Distinctiveness而犧牲了準确性。但CL在保持準确性的同時又能提高Distinctiveness。

上圖還對比了分别隻有正負樣本的訓練情況。可以看到:

  1. 隻有正樣本的情況下模型的表現隻稍微提升了一些。我認為,這是因為參考模型是固定的,其對于每個正樣本給出的機率也都是固定的,而正樣本沒有負樣本的随機采樣過程,所有的樣本也是确定的,是以參考模型給出的機率和是恒定的,去掉負樣本以後的損失函數就相當于MLE的損失函數再減去一個常數,與MLE是等價的,是以相當于在原來的模型的基礎上多進行了一些訓練。
  2. 隻有負樣本的情況下模型的表現是大幅下降的(因為沒有指定正樣本,且負樣本是随機抽取的)。

而隻有兩個樣本都參與訓練的時候能給模型帶來很大的提升。

論文筆記:Contrastive Learning for Image Captioning

上圖測試了CL的泛化能力。“-”表示模型使用MLE訓練。可以看到,通過選擇更好的模型(AA)作為reference,NT的提升更大。(但是卻沒有超過AA本身,按理說不是應該比reference模型更好嘛?)

論文筆記:Contrastive Learning for Image Captioning

另外,還可以通過周期性地以訓練好的目标模型作為更好的參考模型,來提升模型的下界。然而在Run 2進行第二次替換的時候提升已經不大,證明沒有必要多次替換。

總結

總的來說,本文主要的貢獻在于提出了Contrastive Learning的方法,構造損失函數利用了負樣本來參與訓練,提高模型的Distinctiveness。另外本文提出的self-retrieval實驗思路在同類論文裡也是挺特别的。

繼續閱讀