讀論文:CVPR2018 SSAH

轉(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ù),比如文字搜圖片
Text2Image
  • 尋找多種模態(tài)的數(shù)據(jù)對(duì)應(yīng)的關(guān)鍵字
Data2Label
  • 常用的數(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向量變成離散值,從而得到更輕量的特征。

sign

SSAH

image

這篇論文提出了一個(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
image

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

image

首先解釋一下符號(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è)新的多尺度融合模型:

image
  • 輸入:文本,轉(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很像

image

但又與之前的模型不同,這里的監(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得到的特征盡量相近
image
  • 判別器D的網(wǎng)絡(luò)結(jié)構(gòu):F->4096->4096->1
  • 每個(gè)樣本(圖+文+label)產(chǎn)生3個(gè)特征 $$(????^??,??????,??_????)$$
  • 輸入:圖/文特征+生成特征 $$(????^??, ????^?? )$$ 或$$ (????^??,????^??)$$
  • 輸出: $$(????^??, ????^?? )$$ 或 $$(????^??, ????^?? )$$ ,即輸入向量是否來自生成特征
  • 監(jiān)督信號(hào): $$????^??$$ 或 $$??????=0$$,$$??_????=1$$
  • 判別器的損失函數(shù):
image

即最小化判別器的預(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í)的東西。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容