轉(zhuǎn)載請注明作者:夢里茶
這是騰訊AI Lab與西電合作的一篇CVPR2018的paper汹族,在多模態(tài)檢索任務(wù)中加入對抗網(wǎng)絡(luò)組件飘弧,為跨模態(tài)對象生成更好的語義特征暇昂,從而提高了跨模態(tài)檢索的效果笋妥。
問題描述
跨模態(tài)檢索:
- 利用一種模態(tài)的數(shù)據(jù)去檢索另一種模態(tài)中的數(shù)據(jù)尝抖,比如文字搜圖片
- 尋找多種模態(tài)的數(shù)據(jù)對應(yīng)的關(guān)鍵字
- 常用的數(shù)據(jù)集:MSCOCO, NUS-WIDE, MIRFLICKR-25K
如果我們在檢索的時候再去做特征提取毡们,檢索速度會很慢,因此通常需要預(yù)先將特征提取出來昧辽,根據(jù)相似度建立索引衙熔,從而加快檢索速度,為了節(jié)省存儲空間搅荞,并加快計算效率红氯,通常會要求特征盡量短,并且是二進制表示取具,這樣的特征我們稱為Hash脖隶。
常用方法
我們要根據(jù)多模態(tài)的內(nèi)容生成一個hash,希望不同模態(tài)的同個對象hash盡量相近暇检,不同對象的hash盡量不同产阱。由于跨模態(tài)的內(nèi)容具有語義上的聯(lián)系,通常的做法是將不同模態(tài)的內(nèi)容映射到公共的語義空間块仆,已經(jīng)有很多這方面的工作构蹬,有監(jiān)督/無監(jiān)督的王暗,Shallow的手工特征/Deep特征。得到特征之后庄敛,可以用sign操作將連續(xù)的feature向量變成離散值俗壹,從而得到更輕量的特征。
SSAH
這篇論文提出了一個結(jié)合對抗學習的深度神經(jīng)網(wǎng)絡(luò):
- 利用深度提取圖像和文本特征藻烤,轉(zhuǎn)為hash(I/T->F->L+H->B)
- 利用標簽生成特征绷雏,再轉(zhuǎn)為hash,并希望特征能夠還原回label((L->F->L+H->B)
- 有監(jiān)督地最小化不同模態(tài)特征和hash的差異
- 加入能夠區(qū)分不同來源的特征的判別器進行對抗訓練怖亭,進一步減小不同模態(tài)特征的差異
接下來具體講其中幾個部分:
Self supervised semantic Generation(L->F->L+H->B)
- 輸入:某個圖文對應(yīng)的label涎显,每個對象會對應(yīng)多個label,one hot成01向量
- 經(jīng)過四層神經(jīng)網(wǎng)絡(luò)(L->4096->512->N)
- 輸出長度為N的向量兴猩,N=K+c期吓,K為哈希碼長度,c為label的類別個數(shù)
- 訓練目標:讓生成的hash保留語義上的相關(guān)性倾芝,并能還原回原來的label
訓練目標由這個Loss約束完成:
首先解釋一下符號(以下數(shù)學符號用LaTeX格式顯示讨勤,簡書不支持公式編輯,更好的閱讀體驗請查看cweihang.io)晨另,
$$H^l$$ 是根據(jù)label生成的hash潭千,
$$B^l$$是由hash執(zhí)行sign操作得到的二進制碼
$$\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是否包含至少一個相同的label脊岳,
- 包含為1,表示樣本i和j在語義上相似
- 不包含為0垛玻,表示樣本i和j在語義上不相似
對于 $$\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}})} $$
所以割捅,實際上這個loss和交叉熵loss是等效的
即$$S_{ij}=1$$時,
$$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 $$
最大化兩個向量的余弦相似度
$$S_{ij}=0$$ 時帚桩,
$$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 $$
最小化兩個向量的余弦相似度
對于$$ \mathcal{J}_2$$ 同理亿驾,從而約束了相似的label具有相似的hash
對于 $$\mathcal{J}_3 $$, 使 $$H^l$$ 和 $$B^l$$ 盡可能接近,從而使得Hash向量中的元素盡量接近-1,1账嚎,減少了 H -> B 時的損失
對于 $$\mathcal{J}_4$$ , 使得還原的標簽與原來的標簽盡可能相同
這個部分跟自編碼器很像莫瞬,是自監(jiān)督的過程,由label生成特征郭蕉,再由特征還原回label
Feature Learning(I/T->F->L+H->B)
- 輸入:圖像/文本疼邀,
- 經(jīng)過神經(jīng)網(wǎng)絡(luò)提取特征(圖像和文本的網(wǎng)絡(luò)不同)
- 輸出長度為N的向量,N=K+c召锈,K為哈希碼長度旁振,c為label的類別個數(shù)
- 訓練目標:
- 在特征中保留語義信息,因此希望預(yù)測label與真實label相近
- hash盡量接近binary code
- 讓特征提取得到的feature和hash與Semantic Generation得到的特征和hash盡量相同,
- 因此監(jiān)督信號做feature learning的時候還對提取feature和生成feature的相似性做約束拐袜,
- 對提取hash和生成hash的相似性做約束
其中吉嚣,圖像的特征提取網(wǎng)絡(luò)作者試用了CNN-F和VGG16(VGG16更優(yōu)),文本特征提取則是一個新的多尺度融合模型:
- 輸入:文本蹬铺,轉(zhuǎn)為一個詞袋向量尝哆,由于詞袋向量非常稀疏,需要轉(zhuǎn)化為一個相對稠密的向量
- 網(wǎng)絡(luò):T->Multi-scale Fusion->4096->512->N
- 輸出長度為N的向量甜攀,N=K+c秋泄,K為哈希碼長度,c為label的類別個數(shù)
- Multi-scale Fusion:
- 5個average pooling layer(1x1,2x2,3x3,5x5,10x10)+1個1x1conv
訓練Loss與前面的Semantic Generation很像
但又與之前的模型不同赴邻,這里的監(jiān)督信號有標簽和標簽生成的特征印衔,而之前的監(jiān)督信號就是輸入本身。
其中
- $$\Delta_{ij}l=\frac{1}{2}(F_i{l})\top(F_j{v,t}) $$姥敛,即樣本i的標簽label生成的特征和樣本j的輸入(圖/文)提取的特征的余弦相似度,目標是使提取的特征和生成的特征盡量相近
- $$\Gamma_{ij}l=\frac{1}{2}(H_il)\top(H_j{v,t}) $$瞎暑,即樣本i的標簽label生成的hash和樣本j的輸入(圖/文)提取的hash的余弦相似度彤敛,目標是使提取的hash和生成的hash盡量相近
Adversarial learning
- Motivation:不同模態(tài)提取的特征會有不同的分布,希望相同語義的對象在不同模態(tài)里的特征表達盡量接近
- Solution:加入判別器D了赌,希望D能區(qū)分特征是來自Feature Learning還是Semantic Generation墨榄,D越強大,越能區(qū)分兩種特征勿她,要欺騙D袄秩,就迫使Feature Learning和Semantic Generation得到的特征盡量相近
- 判別器D的網(wǎng)絡(luò)結(jié)構(gòu):F->4096->4096->1
- 每個樣本(圖+文+label)產(chǎn)生3個特征 $$(????^??,??????,??_????)$$
- 輸入:圖/文特征+生成特征 $$(????^??, ????^?? )$$ 或$$ (????^??,????^??)$$
- 輸出: $$(????^??, ????^?? )$$ 或 $$(????^??, ????^?? )$$ ,即輸入向量是否來自生成特征
- 監(jiān)督信號: $$????^??$$ 或 $$??????=0$$逢并,$$??_????=1$$
- 判別器的損失函數(shù):
即最小化判別器的預(yù)測誤差
Training
- 于是我們有了特征生成Loss:
$$\mathcal{L}_{gen}=\mathcal{L}v+\mathcal{L}t+\mathcal{L}^l $$
圖像特征提取loss+文本特征提取loss+標簽生成loss
以及對抗loss
$$\mathcal{L}{adv}=\mathcal{L}^v{adv}+\mathcal{L}^t_{adv} $$我們的優(yōu)化目標是:
$$(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} $$下,最小化判別器的識別誤差 $$L_{adv} $$
- 具體實現(xiàn)上砍聊,分為四步迭代進行優(yōu)化:
- Label自監(jiān)督生成特征
- 圖像分類器feature learning
- 文本分類器feature learning
- 判別器訓練
于是SSAH的工作機制就梳理完畢了
方法評估
生成的Hash效果是否足夠好背稼,通常由Hamming Ranking和Hash Lookup來評估,在論文中玻蝌,作者還對模型本身做了Training efficiency蟹肘,Sensitivity analysis,Ablation study的實驗評估俯树。
- Hamming Ranking
-
按照哈希碼海明距離進行Ranking帘腹,計算mAP
image
-
可以看到使用VGG作為圖像基礎(chǔ)網(wǎng)絡(luò)時,SSAH準確率領(lǐng)先其他方法很多许饿。
- Hash Lookup
-
海明距離小于某個值認為是正樣本阳欲,這個值稱為Hamming Radius,改變Radius可以改變Precision-Recall的值,于是可以得到P-R曲線胸完,P-R曲線與坐標軸圍成的面積越大书释,說明效果越好
image
-
SSAH的PR曲線基本都是在其他模型的曲線之上
對Ranking的結(jié)果計算TopN的命中率(不過這個文中好像沒講)
-
Training efficiency
-
達到相同的效果所需訓練時間
image
-
相對于另一種深度學習方法DCMH,SSAH只要比較短的時間就能得到比較好的效果
- Sensitivity analysis
-
超參數(shù)改變時的結(jié)果變化
image
-
可以看到赊窥,超參數(shù)變化時爆惧,準確率依然能維持在比較高的水平
- Ablation study
-
去除不同組件對效果的影響
image
-
其中,
SSAH-1: remove LabNet
SSAH-2: TxtNet改成三層全連接
SSAH-3: 去掉對抗網(wǎng)絡(luò)
可以看到在I2T任務(wù)中锨能,標簽生成網(wǎng)絡(luò)是很重要的扯再,在T2I任務(wù)中對抗網(wǎng)絡(luò)的效果更明顯。
Summary
SSAH中最妙的兩點是址遇,用Label生成特征和哈希來監(jiān)督feature learning熄阻,加入對抗學習來拉近不同模態(tài)特征的相似性,模型的思路足夠清晰倔约,容易復現(xiàn)秃殉,有很多值得學習的東西。