多模態(tài)論文串講·上【論文精讀·46】

(做了視頻前半部分的筆記)

ViLT論文里的這張圖展示了多模態(tài)模型的發(fā)展歷程,最開始的模型特點(diǎn)是Visual Encoder最大,Textual Encoder第二大,Modality Interaction是對文本特征和圖像特征做一個(gè)點(diǎn)乘,計(jì)算量最小,所以VE>TE>MI。后來CLIP把Textual Encoder換成更大的attention結(jié)構(gòu),VilBERT、UNITER把Modality Interaction換成更大的attention結(jié)構(gòu),而ViLT保留較大的Modality Interaction,轉(zhuǎn)而把TE、VE換成小的,就是TE只做個(gè)tokenization,VE做個(gè)patch embeding。不過ViLT在一些任務(wù)上的性能還是比不過ViLBERT,這也正常,畢竟計(jì)算量比它小那么多,而且直覺上來說圖片信息比文本信息多,理應(yīng)VE應(yīng)該比TE大。而且ViLT雖然推理速度比ViLBERT快,但訓(xùn)練時(shí)間依然非常耗時(shí),原因之一是它的WPA loss計(jì)算比較耗時(shí)。
CLIP在實(shí)際應(yīng)用時(shí),一般會事先把數(shù)據(jù)庫里的圖像或文本提前用VE或TE提好特征,這樣在圖文匹配時(shí)只需要做個(gè)簡單得點(diǎn)乘即可,速度較快。CLIP對圖文匹配任務(wù)還是表現(xiàn)得不錯(cuò),但對其他任務(wù),比如視覺問答VQA、視覺推理VR、視覺蘊(yùn)含VE,因?yàn)辄c(diǎn)乘無法分析特別復(fù)雜的情況。
基于以上的分析,我們想要一個(gè)比較好的圖文模型,模型的結(jié)構(gòu)應(yīng)該像上圖的(c),即VE比TE大,MI不能太小。訓(xùn)練方面,我們會采樣CLIP的ITC(Image Text Contrastive)、BERT的MLM(Mask Language Modeling)和ViLBERT的ITM(Image Text Matching)這三個(gè)目標(biāo)函數(shù)。
我們來看一下ALBEF的模型結(jié)構(gòu)圖:

圖像編碼器跟CLIP一樣是12層的transformer,但文本編碼那邊,他把12層的transformer劈成了兩部分,前6層用來做文本編碼器,后6層用來做多模態(tài)融合的編碼器。這個(gè)模型結(jié)構(gòu)是符合我們前面的設(shè)想的,從圖中也可以看到損失函數(shù)使用的是我們前面說的ITC、ITM、MLM。
ALBEF出自Salesfore Research的論文《ALign before Fuse: Vision and Language Representation Learning with Momentum Distillation》,這個(gè)團(tuán)丟后面又做了BLIP、MUST、ALPro等多模態(tài)的工作。論文摘要里說了,本論文有兩大核心貢獻(xiàn):第一,在抽取完圖像特征和文本特征之后,在多模態(tài)融合之前,作者使用ITC對齊了一下這兩個(gè)特征,也就是論文題目Align Before Fuse的來源。第二個(gè)貢獻(xiàn)是為了克服數(shù)據(jù)集里noisy的圖文對,提出了momentum distillation,即用一個(gè)額外的momentum model(借鑒自Moco論文提出的momentum encoder)去生成pseudo target(其實(shí)就是softmax score,而不再是one hot label),讓模型學(xué)習(xí)這個(gè)pseudo target從而做自訓(xùn)練。最后的結(jié)論是這三個(gè)訓(xùn)練用的目標(biāo)函數(shù)還有momentum distillation,它們地作用都是在為同一個(gè)圖像文本對生成不同的視角,也就是變相地在做一種data augmentation,從而讓訓(xùn)練出來的模型具備semantic preserving的功能。
再回來模型,圖像編碼器使用的參數(shù)來自DEiT。圖中黃色方塊代表的是class token,是一個(gè)1×768的向量,代表了整張圖片的全局信息。ITM的本質(zhì)是一個(gè)FC層做二分類,判斷圖片和文本是不是一個(gè)對,但是我們會通過某種方式選擇最難的負(fù)樣本,也就是最接近于正樣本的負(fù)樣本,舉例來說,batch size = 512,那么正樣本對是512個(gè),我們把這張圖片的class token跟所有文本的class token計(jì)算一遍余弦相似度,然后選擇除了正樣本文本外,相似度高的那個(gè)文本作為 hard negative。MLM的本質(zhì)是一個(gè)完形填空,即把原來輸入的文本中的某個(gè)單詞遮住,讓模型輸出這個(gè)單詞,跟NLP那邊的MLM不同的是,這里還會借助圖像信息來預(yù)測這個(gè)單詞。值得一提的是,在計(jì)算ITC和ITM的時(shí)候,模型的輸入都是圖片和完整的句子,而在計(jì)算MLM的時(shí)候,模型的輸入是圖片和遮住一個(gè)單詞的句子,所以為了計(jì)算loss,模型其實(shí)需要做兩次前向傳播。
接著講一下momentum distillation,顧名思義,它里面還有動(dòng)量EMA和蒸餾學(xué)習(xí)的思想。之所以用momentum distillation是因?yàn)閿?shù)據(jù)集的圖文對很多是弱相關(guān)的甚至不匹配,這會導(dǎo)致在計(jì)算損失函數(shù)的時(shí)候有偏差,比如對于ITC,可能所謂的負(fù)樣本里也很好地描述了圖像里的內(nèi)容,甚至比GT 文本更好,對于MLM,完形填空的那個(gè)空 是可以填很多種單詞的,有時(shí)候其他單詞可能比GT單詞更合適,如下圖所示:

所以網(wǎng)上爬下來的那些noisy data的one hot label對ITC和MLM是不友好的,因?yàn)樨?fù)樣本里可能也包含很多正確的信息,你讓損失函數(shù)去懲罰這些負(fù)樣本可能會讓模型學(xué)習(xí)變得困難。既然這個(gè)問題是由noisy data的one hot label帶來的,一種解決方法就是再提供額外的信號,這個(gè)信號不是one hot,而是multi hot,是另外一個(gè)模型的輸出。這兩年比較火的self training 就可以應(yīng)用到這樣的場景來。DINO就算是一種自訓(xùn)練模型。作者采取的方法是,先構(gòu)建一個(gè)動(dòng)量模型,用這個(gè)動(dòng)量模型去生成pseudo target,這個(gè)pseudo target其實(shí)就是softamx score,而這個(gè)動(dòng)量模型怎么來?其實(shí)就是在已有模型上做EMA。它的目的是,在訓(xùn)練時(shí),讓模型的預(yù)測不僅與GT one hot label接近,還要跟動(dòng)量模型的輸出匹配。拿ITC和MLM舉個(gè)例子,下面公式里的q是動(dòng)量模型的輸出,p是主模型的輸出,q是由s'做了softmax得到,s'分為文本對圖片的相似度和圖片對文本的相似度:

因?yàn)橛?項(xiàng)KL損失,所以它的權(quán)重系數(shù)是α/2:

MLM損失函數(shù)里的q和p就是兩個(gè)模型輸出的關(guān)于遮住單詞的概率分布:
