轉(zhuǎn)載請(qǐng)注明作者:夢(mèng)里茶
這是騰訊AI Lab與西電合作的一篇CVPR2018的paper,在多模態(tài)檢索任務(wù)中加入對(duì)抗網(wǎng)絡(luò)組件,為跨模態(tài)對(duì)象生成更好的語義特征,從而提高了跨模態(tài)檢索的效果。
問題描述
跨模態(tài)檢索:
- 利用一種模態(tài)的數(shù)據(jù)去檢索另一種模態(tài)中的數(shù)據(jù),比如文字搜圖片

- 尋找多種模態(tài)的數(shù)據(jù)對(duì)應(yīng)的關(guān)鍵字

- 常用的數(shù)據(jù)集:MSCOCO, NUS-WIDE, MIRFLICKR-25K
如果我們?cè)跈z索的時(shí)候再去做特征提取,檢索速度會(huì)很慢,因此通常需要預(yù)先將特征提取出來,根據(jù)相似度建立索引,從而加快檢索速度,為了節(jié)省存儲(chǔ)空間,并加快計(jì)算效率,通常會(huì)要求特征盡量短,并且是二進(jìn)制表示,這樣的特征我們稱為Hash。
常用方法
我們要根據(jù)多模態(tài)的內(nèi)容生成一個(gè)hash,希望不同模態(tài)的同個(gè)對(duì)象hash盡量相近,不同對(duì)象的hash盡量不同。由于跨模態(tài)的內(nèi)容具有語義上的聯(lián)系,通常的做法是將不同模態(tài)的內(nèi)容映射到公共的語義空間,已經(jīng)有很多這方面的工作,有監(jiān)督/無監(jiān)督的,Shallow的手工特征/Deep特征。得到特征之后,可以用sign操作將連續(xù)的feature向量變成離散值,從而得到更輕量的特征。

SSAH

這篇論文提出了一個(gè)結(jié)合對(duì)抗學(xué)習(xí)的深度神經(jīng)網(wǎng)絡(luò):
- 利用深度提取圖像和文本特征,轉(zhuǎn)為hash(I/T->F->L+H->B)
- 利用標(biāo)簽生成特征,再轉(zhuǎn)為hash,并希望特征能夠還原回label((L->F->L+H->B)
- 有監(jiān)督地最小化不同模態(tài)特征和hash的差異
- 加入能夠區(qū)分不同來源的特征的判別器進(jìn)行對(duì)抗訓(xùn)練,進(jìn)一步減小不同模態(tài)特征的差異
接下來具體講其中幾個(gè)部分:
Self supervised semantic Generation(L->F->L+H->B)
- 輸入:某個(gè)圖文對(duì)應(yīng)的label,每個(gè)對(duì)象會(huì)對(duì)應(yīng)多個(gè)label,one hot成01向量
- 經(jīng)過四層神經(jīng)網(wǎng)絡(luò)(L->4096->512->N)
- 輸出長(zhǎng)度為N的向量,N=K+c,K為哈希碼長(zhǎng)度,c為label的類別個(gè)數(shù)
- 訓(xùn)練目標(biāo):讓生成的hash保留語義上的相關(guān)性,并能還原回原來的label

訓(xùn)練目標(biāo)由這個(gè)Loss約束完成:

首先解釋一下符號(hào)(以下數(shù)學(xué)符號(hào)用LaTeX格式顯示,簡(jiǎn)書不支持公式編輯,更好的閱讀體驗(yàn)請(qǐng)查看cweihang.io),
$$H^l$$ 是根據(jù)label生成的hash,
$$B^l$$是由hash執(zhí)行sign操作得到的二進(jìn)制碼
$$\hat{L}$$ 是由特征還原回來的label
$$L$$ 是原本的label
$$\Delta_{ij}l=\frac{1}{2}(F_il)\top(F_jl)$$ ,即樣本i和樣本j的label生成的特征的余弦相似度
$$\Gamma_{ij}l=\frac{1}{2}(H_il)\top(H_jl)$$,即樣本i和樣本j的label生成的特征余弦相似度
-
$$S_{ij}$$ 表示樣本i和j是否包含至少一個(gè)相同的label,
- 包含為1,表示樣本i和j在語義上相似
- 不包含為0,表示樣本i和j在語義上不相似
對(duì)于 $$\mathcal{J}_1$$ ,
$$-\sum_{i,j=1}{n}{S_{ij}\Delta_{ij}{l}-log(1+e{\Delta_{ij}l})} $$
$$= -\sum_{i,j=1}{n}{log(\frac{e{S_{ij}\Delta_{ij}{l}}}{1+e{\Delta_{ij}^l}})} $$
$$= -\sum_{i,j=1}{n}{log(\frac{e{\Delta_{ij}{l}}}{1+e{\Delta_{ij}^l}})} if S_{ij}=1$$
$$= -\sum_{i,j=1}{n}{log(\frac{1}{1+e{\Delta_{ij}^l}})} if S_{ij}=0$$
$$= \sum_{i,j=1}{n}-{S_{ij}log(\frac{e{\Delta_{ij}{l}}}{1+e{\Delta_{ij}l}})-(1-S_{ij})log(1-\frac{e{\Delta_{ij}{l}}}{1+e{\Delta_{ij}^l}})} $$
所以,實(shí)際上這個(gè)loss和交叉熵loss是等效的
即$$S_{ij}=1$$時(shí),
$$min -\sum_{i,j=1}{n}{log(\frac{e{\Delta_{ij}{l}}}{1+e{\Delta_{ij}l}})}=max\sum_{i,j=1}{n}{log(\frac{1}{1+e{-\Delta_{ij}l}})}=max \Delta_{ij}^l $$
最大化兩個(gè)向量的余弦相似度
$$S_{ij}=0$$ 時(shí),
$$min -\sum_{i,j=1}{n}{log(\frac{1}{1+e{\Delta_{ij}l}})}=max\sum_{i,j=1}{n}{log(\frac{1}{1+e{\Delta_{ij}l}})}=min\Delta_{ij}^l $$
最小化兩個(gè)向量的余弦相似度
對(duì)于$$ \mathcal{J}_2$$ 同理,從而約束了相似的label具有相似的hash
對(duì)于 $$\mathcal{J}_3 $$, 使 $$H^l$$ 和 $$B^l$$ 盡可能接近,從而使得Hash向量中的元素盡量接近-1,1,減少了 H -> B 時(shí)的損失
對(duì)于 $$\mathcal{J}_4$$ , 使得還原的標(biāo)簽與原來的標(biāo)簽盡可能相同
這個(gè)部分跟自編碼器很像,是自監(jiān)督的過程,由label生成特征,再由特征還原回label
Feature Learning(I/T->F->L+H->B)
- 輸入:圖像/文本,
- 經(jīng)過神經(jīng)網(wǎng)絡(luò)提取特征(圖像和文本的網(wǎng)絡(luò)不同)
- 輸出長(zhǎng)度為N的向量,N=K+c,K為哈希碼長(zhǎng)度,c為label的類別個(gè)數(shù)
- 訓(xùn)練目標(biāo):
- 在特征中保留語義信息,因此希望預(yù)測(cè)label與真實(shí)label相近
- hash盡量接近binary code
- 讓特征提取得到的feature和hash與Semantic Generation得到的特征和hash盡量相同,
- 因此監(jiān)督信號(hào)做feature learning的時(shí)候還對(duì)提取feature和生成feature的相似性做約束,
- 對(duì)提取hash和生成hash的相似性做約束
其中,圖像的特征提取網(wǎng)絡(luò)作者試用了CNN-F和VGG16(VGG16更優(yōu)),文本特征提取則是一個(gè)新的多尺度融合模型:

- 輸入:文本,轉(zhuǎn)為一個(gè)詞袋向量,由于詞袋向量非常稀疏,需要轉(zhuǎn)化為一個(gè)相對(duì)稠密的向量
- 網(wǎng)絡(luò):T->Multi-scale Fusion->4096->512->N
- 輸出長(zhǎng)度為N的向量,N=K+c,K為哈希碼長(zhǎng)度,c為label的類別個(gè)數(shù)
- Multi-scale Fusion:
- 5個(gè)average pooling layer(1x1,2x2,3x3,5x5,10x10)+1個(gè)1x1conv
訓(xùn)練Loss與前面的Semantic Generation很像

但又與之前的模型不同,這里的監(jiān)督信號(hào)有標(biāo)簽和標(biāo)簽生成的特征,而之前的監(jiān)督信號(hào)就是輸入本身。
其中
- $$\Delta_{ij}l=\frac{1}{2}(F_i{l})\top(F_j{v,t}) $$,即樣本i的標(biāo)簽label生成的特征和樣本j的輸入(圖/文)提取的特征的余弦相似度,目標(biāo)是使提取的特征和生成的特征盡量相近
- $$\Gamma_{ij}l=\frac{1}{2}(H_il)\top(H_j{v,t}) $$,即樣本i的標(biāo)簽label生成的hash和樣本j的輸入(圖/文)提取的hash的余弦相似度,目標(biāo)是使提取的hash和生成的hash盡量相近
Adversarial learning
- Motivation:不同模態(tài)提取的特征會(huì)有不同的分布,希望相同語義的對(duì)象在不同模態(tài)里的特征表達(dá)盡量接近
- Solution:加入判別器D,希望D能區(qū)分特征是來自Feature Learning還是Semantic Generation,D越強(qiáng)大,越能區(qū)分兩種特征,要欺騙D,就迫使Feature Learning和Semantic Generation得到的特征盡量相近

- 判別器D的網(wǎng)絡(luò)結(jié)構(gòu):F->4096->4096->1
- 每個(gè)樣本(圖+文+label)產(chǎn)生3個(gè)特征 $$(????^??,??????,??_????)$$
- 輸入:圖/文特征+生成特征 $$(????^??, ????^?? )$$ 或$$ (????^??,????^??)$$
- 輸出: $$(????^??, ????^?? )$$ 或 $$(????^??, ????^?? )$$ ,即輸入向量是否來自生成特征
- 監(jiān)督信號(hào): $$????^??$$ 或 $$??????=0$$,$$??_????=1$$
- 判別器的損失函數(shù):

即最小化判別器的預(yù)測(cè)誤差
Training
- 于是我們有了特征生成Loss:
$$\mathcal{L}_{gen}=\mathcal{L}v+\mathcal{L}t+\mathcal{L}^l $$
圖像特征提取loss+文本特征提取loss+標(biāo)簽生成loss
以及對(duì)抗loss
$$\mathcal{L}{adv}=\mathcal{L}^v{adv}+\mathcal{L}^t_{adv} $$我們的優(yōu)化目標(biāo)是:
$$(B,\theta{v,t,l})=argmin_{B,\theta{v,t,l}}\mathcal{L}{gen}(B,\theta^{v,t,l})-\mathcal{L}{adv}(\hat{\theta}_{adv}) $$
在最優(yōu)的判別器參數(shù) $$\hat{\theta}_{adv}$$ 下,最小化特征的生成Loss
以及
$$\theta_{adv}=argmax_{\theta_{adv}} L_{gen}(\hat{B}, \hat{\theta}^{v,t,l})-L_{adv}(\theta_{adv}) $$
在最優(yōu)生成器參數(shù) $$\hat{B}, \hat{\theta}^{v,t,l} $$下,最小化判別器的識(shí)別誤差 $$L_{adv} $$
- 具體實(shí)現(xiàn)上,分為四步迭代進(jìn)行優(yōu)化:
- Label自監(jiān)督生成特征
- 圖像分類器feature learning
- 文本分類器feature learning
- 判別器訓(xùn)練
于是SSAH的工作機(jī)制就梳理完畢了
方法評(píng)估
生成的Hash效果是否足夠好,通常由Hamming Ranking和Hash Lookup來評(píng)估,在論文中,作者還對(duì)模型本身做了Training efficiency,Sensitivity analysis,Ablation study的實(shí)驗(yàn)評(píng)估。
- Hamming Ranking
-
按照哈希碼海明距離進(jìn)行Ranking,計(jì)算mAP
image
-
可以看到使用VGG作為圖像基礎(chǔ)網(wǎng)絡(luò)時(shí),SSAH準(zhǔn)確率領(lǐng)先其他方法很多。
- Hash Lookup
-
海明距離小于某個(gè)值認(rèn)為是正樣本,這個(gè)值稱為Hamming Radius,改變Radius可以改變Precision-Recall的值,于是可以得到P-R曲線,P-R曲線與坐標(biāo)軸圍成的面積越大,說明效果越好
image
-
SSAH的PR曲線基本都是在其他模型的曲線之上
對(duì)Ranking的結(jié)果計(jì)算TopN的命中率(不過這個(gè)文中好像沒講)
-
Training efficiency
-
達(dá)到相同的效果所需訓(xùn)練時(shí)間
image
-
相對(duì)于另一種深度學(xué)習(xí)方法DCMH,SSAH只要比較短的時(shí)間就能得到比較好的效果
- Sensitivity analysis
-
超參數(shù)改變時(shí)的結(jié)果變化
image
-
可以看到,超參數(shù)變化時(shí),準(zhǔn)確率依然能維持在比較高的水平
- Ablation study
-
去除不同組件對(duì)效果的影響
image
-
其中,
SSAH-1: remove LabNet
SSAH-2: TxtNet改成三層全連接
SSAH-3: 去掉對(duì)抗網(wǎng)絡(luò)
可以看到在I2T任務(wù)中,標(biāo)簽生成網(wǎng)絡(luò)是很重要的,在T2I任務(wù)中對(duì)抗網(wǎng)絡(luò)的效果更明顯。
Summary
SSAH中最妙的兩點(diǎn)是,用Label生成特征和哈希來監(jiān)督feature learning,加入對(duì)抗學(xué)習(xí)來拉近不同模態(tài)特征的相似性,模型的思路足夠清晰,容易復(fù)現(xiàn),有很多值得學(xué)習(xí)的東西。




