原文連結: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個裡。具體可見下圖。
可見加入了CL來訓練以後,模型的查找準确率明顯提高了,并且ROUGE_L以及CIDEr的分數也提高了,并且準确度與這兩個評價标準的分數呈正相關關系。說明提高Distinctiveness是可以提高模型的performance的。
Contrastive Learning
先介紹通常使用 Maximum Likelihood Estimation (MLE) 訓練的方式,這裡借用show and tell論文裡面的圖:
輸入一副圖檔以後,我們會逐個地得到下一個目标單詞的機率 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=1Nlogpt(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=1TmD((ct,It);θ,ϕ)−∑t=1TnD((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=1Tmln[h((ct,It);θ,ϕ)]+∑t=1Tnln[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(θ)=K1Tm1∑k=1KL(θ;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的。
實驗結果
如上圖,可以看到,加入CL以後,模型的表現有較大提升。
上圖為CL與原模型的一些可視化結果。
文章還對比了CL跟GAN、IL(Introspective Learning)之間的差別:
-
IL把target model自身作為reference,并且是通過比較 ( I , c ) , ( I / , c ) (I, c), (I_/, c) (I,c),(I/,c)來進行學習的。
IL的負樣本 ( I / , c ) (I_/, c) (I/,c)通常是預定義且固定的,而CL的負樣本則是動态采樣的。
- GAN中的evaluator直接測量Distinctiveness,而不能保證其準确性。
另外,加入IL和GAN後模型的準确性都有所下降,說明模型為了提高Distinctiveness而犧牲了準确性。但CL在保持準确性的同時又能提高Distinctiveness。
上圖還對比了分别隻有正負樣本的訓練情況。可以看到:
- 隻有正樣本的情況下模型的表現隻稍微提升了一些。我認為,這是因為參考模型是固定的,其對于每個正樣本給出的機率也都是固定的,而正樣本沒有負樣本的随機采樣過程,所有的樣本也是确定的,是以參考模型給出的機率和是恒定的,去掉負樣本以後的損失函數就相當于MLE的損失函數再減去一個常數,與MLE是等價的,是以相當于在原來的模型的基礎上多進行了一些訓練。
- 隻有負樣本的情況下模型的表現是大幅下降的(因為沒有指定正樣本,且負樣本是随機抽取的)。
而隻有兩個樣本都參與訓練的時候能給模型帶來很大的提升。
上圖測試了CL的泛化能力。“-”表示模型使用MLE訓練。可以看到,通過選擇更好的模型(AA)作為reference,NT的提升更大。(但是卻沒有超過AA本身,按理說不是應該比reference模型更好嘛?)
另外,還可以通過周期性地以訓練好的目标模型作為更好的參考模型,來提升模型的下界。然而在Run 2進行第二次替換的時候提升已經不大,證明沒有必要多次替換。
總結
總的來說,本文主要的貢獻在于提出了Contrastive Learning的方法,構造損失函數利用了負樣本來參與訓練,提高模型的Distinctiveness。另外本文提出的self-retrieval實驗思路在同類論文裡也是挺特别的。