本文轉(zhuǎn)自徐飛翔的“圖文多模態(tài)語義融合前的語義對(duì)齊——一種單雙混合塔多模態(tài)模型”
版權(quán)聲明:本文為博主原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明
雙塔多模態(tài)模型的優(yōu)勢(shì)與缺陷
之前在博文[2-4]中曾經(jīng)簡(jiǎn)單介紹過一些圖文多模態(tài)模型,分別是WenLan 1.0 [5]和WenLan 2.0 [6]以及CLIP [7],這些多模態(tài)模型在不同的模態(tài)上,都有著各自模態(tài)各自的編碼器。如Fig 1.1所示,CLIP中的圖片編碼器和文本編碼器共同組成了一個(gè)雙塔結(jié)構(gòu)模型進(jìn)行損失計(jì)算。雙塔模型在很多業(yè)務(wù)場(chǎng)景有著廣泛應(yīng)用,比如在圖文信息檢索場(chǎng)景中,我們要衡量用戶Query和圖片之間的圖文相關(guān)性。假如圖片編碼器是,文本編碼器是
???,??????而待檢索庫中所有圖片的集合記為
???,那么可以預(yù)先對(duì)所有圖片進(jìn)行特征提取,形成圖片的正排(Forward Index)特征并且建庫,記為
,在用戶輸入檢索詞 Q的時(shí)候,只需要對(duì)Query進(jìn)行文本編碼器的在線計(jì)算,得到文本特征
,然后對(duì)待排序的樣本進(jìn)行圖片正排庫取特征,進(jìn)行相關(guān)性計(jì)算(在線計(jì)算余弦距離)就可以判斷候選圖片與Query之間的圖文相關(guān)程度了。利用雙塔模型可以預(yù)先建庫并且在線計(jì)算相關(guān)性的特性,可以很大程度上用空間換時(shí)間節(jié)省很多計(jì)算資源,而這也是雙塔模型在搜索系統(tǒng)(不僅僅是圖文搜索)中被廣泛應(yīng)用的原因之一。
Fig 1.1 CLIP中的圖片編碼器和文本編碼器一起組成了雙塔結(jié)構(gòu)。
這個(gè)世界沒有銀彈,雙塔模型中的圖片和文本信息不能在線交互的特性決定了其對(duì)一些細(xì)致的圖文匹配需求無法滿足。舉個(gè)例子,比如去搜索『黑色上衣白色褲子』,那么百度返回的結(jié)果如圖Fig 1.2所示,除去開始三個(gè)廣告不計(jì),用紅色框框出來的Top3結(jié)果中有倆結(jié)果都是『白色上衣黑色褲子』,顯然搜索結(jié)果并沒有理解到『黑色上衣』和『白色褲子』這兩個(gè)概念,而是單獨(dú)對(duì)『黑色』『白色』和『上衣』『褲子』這兩個(gè)屬性進(jìn)行了組合,因此才會(huì)得到『白色上衣黑色褲子』被排到Top20結(jié)果的情況。
1.2 百度圖搜對(duì)于『黑色上衣白色褲子』的搜索結(jié)果。
當(dāng)然讀者可能覺得百度搜索可能不夠可靠,筆者在google圖搜上也進(jìn)行了測(cè)試,如Fig 1.3所示,的確大部分結(jié)果都是正確的(如藍(lán)色框所示),但是也有少量的『白色上衣黑色褲子』被排上了Top20結(jié)果(如紅框所示),即便只有幾個(gè)誤排,也說明業(yè)界中對(duì)于這種細(xì)粒度的多模態(tài)搜索仍然是需要繼續(xù)探索的(讀者可以試試『紅色杯子』這類型的Query,排到Top20的都是很準(zhǔn)確的)。
Fig 1.3 Google圖搜對(duì)于『黑色上衣白色褲子』的搜索結(jié)果。
這種多模態(tài)匹配細(xì)粒度結(jié)果不盡人意的原因,很大程度上是雙塔模型中的圖片編碼器和文本編碼器無法在線進(jìn)行交互導(dǎo)致的。可以想象到,我們的圖片編碼器由于是預(yù)先對(duì)所有圖片提特征進(jìn)行建庫的,那么就無法對(duì)所有屬性的組合都進(jìn)行考慮,必然的就會(huì)對(duì)一些稀疏的組合進(jìn)行忽略,而傾向于高頻的屬性組合,因此長(zhǎng)尾的屬性組合就無法很好地建模。雙塔模型這種特點(diǎn),不僅僅會(huì)使得多屬性的Query的檢索結(jié)果傾向于高頻組合,而且還會(huì)傾向于圖片中的一些大尺寸物體,比如Fig 1.4中的小黃人尺寸較小,在進(jìn)行特征提取的時(shí)候,其在整張圖片中的重要性就有可能被其他大尺寸物體(比如鍵盤和顯示屏等)掩蓋。
Fig 1.4 圖片中的小黃人尺寸較小,特征提取結(jié)果可能會(huì)被同圖片中其他大尺寸物體給掩蓋。單塔模型進(jìn)行在線交互
雙塔模型有以上的一些天然的劣勢(shì),此時(shí)就需要用單塔交互模型對(duì)用戶Query和圖片進(jìn)行在線的交互(當(dāng)然此時(shí)模型計(jì)算由于是在線的,受限于計(jì)算資源就只能對(duì)粗排的Top20/40等結(jié)果進(jìn)行打分精排了),通過在線交互,細(xì)粒度的圖文匹配能取得更好的結(jié)果,稀疏的屬性組合也能通過在線交互得到合理的打分,而不至于被高頻組合給『吃掉』。雙塔模型一般可以通過大規(guī)模對(duì)比學(xué)習(xí),從諸多負(fù)例中挑選出最難的負(fù)例,通過將正例和最難負(fù)例進(jìn)行對(duì)比損失優(yōu)化,從而學(xué)習(xí)出表征。但是單塔模型無法像雙塔模型一般進(jìn)行對(duì)比學(xué)習(xí)去挑選難負(fù)樣本,因?yàn)殡p塔模型可以通過打分矩陣將 個(gè)負(fù)樣本打分和 N 個(gè)正樣本打分同時(shí)得到,而單塔模型由于需要在線交互,則需要對(duì) N 個(gè)Query和 N 個(gè)圖片進(jìn)行
??????????次模型計(jì)算,才能得到和雙塔模型一次計(jì)算同樣量級(jí)的打分,這個(gè)計(jì)算時(shí)間代價(jià)太大以至于實(shí)際中無法這樣進(jìn)行訓(xùn)練。對(duì)于單塔模型,如Fig 2.1所示,我們一般只能通過平移樣本得到若干個(gè)負(fù)樣本,進(jìn)行匹配損失計(jì)算,這樣得到的負(fù)樣本數(shù)量通常都很小,遠(yuǎn)遠(yuǎn)無法達(dá)到雙塔模型的量級(jí),由此構(gòu)造出的負(fù)樣本也往往不夠『難』,導(dǎo)致這樣訓(xùn)練出來的單塔模型語義對(duì)齊(Semantic Alignment)能力弱于用大規(guī)模對(duì)比學(xué)習(xí)訓(xùn)練出來的雙塔模型。
Fig 2.1 在單塔模型訓(xùn)練時(shí),通過平移樣本構(gòu)造負(fù)樣本。多模態(tài)語義融合前的語義對(duì)齊
由此來看,單塔模型擅長(zhǎng)的往往是語義融合(Semantic Fusion),而非語義對(duì)齊(Semantic Alignment),我們可以考慮用大規(guī)模對(duì)比學(xué)習(xí)去進(jìn)行語義對(duì)齊,而基于良好的語義對(duì)齊用單塔模型去進(jìn)行語義融合。如Fig 3.1所示,語義對(duì)齊嘗試找到不同文本實(shí)體(Query Entity)與視覺實(shí)體(Vision Entity)之間的關(guān)聯(lián)關(guān)系,而語義融合嘗試找到復(fù)合實(shí)體的組合關(guān)系。
Fig 3.1 語義對(duì)齊去嘗試找到文本實(shí)體與視覺實(shí)體之間的關(guān)聯(lián)關(guān)系;語義融合嘗試找到復(fù)合實(shí)體之間的組合關(guān)系。
文章[1]提出了ALBEF模型(ALign BEfore Fuse,ALBEF),嘗試通過將雙塔模型和單塔模型結(jié)合在一起,通過用雙塔模型去進(jìn)行語義對(duì)齊,并且通過雙塔模型進(jìn)行難負(fù)樣本挑選,以備送給單塔模型進(jìn)行更好的語義融合,這個(gè)思路理論上可以融合單塔模型和雙塔模型的優(yōu)點(diǎn),而不至于帶來太多的計(jì)算負(fù)擔(dān)。如Fig 3.1所示,ALBEF整個(gè)模型主要由BERT組成,其編碼器分為單模態(tài)(Unimodal)編碼器和多模態(tài)(multimodal)編碼器,單模態(tài)編碼器主要由圖像編碼器和文本編碼器組成,其圖像編碼器采用了12層的ViT-B/16模型,而文本編碼器和多模態(tài)編碼器都采用的是6層的 ?模型。通過圖片編碼器,將圖片輸入
編碼成embedding序列
,同樣對(duì)于文本輸入
而言,其embedding序列輸出為
??。其預(yù)訓(xùn)練目標(biāo)有兩大類:
語義對(duì)齊: 通過單模態(tài)編碼器(其實(shí)就是雙塔模型)進(jìn)行圖文對(duì)比學(xué)習(xí)(Image-Text Contrastive Learning)進(jìn)行圖文語義對(duì)齊
語義融合:將語義對(duì)齊后的圖/文特征在多模態(tài)編碼器中進(jìn)行跨模態(tài)交互,通過Masked Language Model(MLM)和圖文匹配(Image-Text Matching)任務(wù)進(jìn)行圖文語義融合。
Fig 3.1 語義對(duì)齊去嘗試找到文本實(shí)體與視覺實(shí)體之間的關(guān)聯(lián)關(guān)系;語義融合嘗試找到復(fù)合實(shí)體之間的組合關(guān)系。語義對(duì)齊
語義對(duì)齊可以通過雙塔模型的大規(guī)模對(duì)比學(xué)習(xí)進(jìn)行,其目標(biāo)是讓圖片-文本對(duì)的相似度盡可能的高,也就是,其中的
和
是對(duì)[CLS]的線性映射,其將[CLS]特征維度映射到了多模態(tài)共同特征子空間。類似于MoCo [8,9],在ALBEF模型中,作者同樣采用了兩個(gè)圖片/文本樣本隊(duì)列和動(dòng)量圖片/文本編碼器,這兩個(gè)隊(duì)列維護(hù)了最近的動(dòng)量編碼器的 M 個(gè)表征(具體維護(hù)過程見博文[8]),這些來自于動(dòng)量編碼器的特征表示為
和
。那么類似于MoCo中的做法進(jìn)行多模態(tài)打分計(jì)算,如式子(3-1)所示
那么可以定義出圖-文/文-圖相關(guān)性,如式子(3-2)所示,其中的 N??是batch size(這一點(diǎn)是代碼實(shí)現(xiàn),和論文有些偏差[10])
令和
表示真實(shí)的標(biāo)簽,通過交叉熵?fù)p失定義出圖文對(duì)比損失(Image-Text Contrastive Loss, ITC)
語義融合
ALBEF模型的底層是雙塔語義對(duì)齊,其上層是單塔語義融合,為了實(shí)現(xiàn)語義融合,論文中采用了Masked Language Model(MLM)損失進(jìn)行建模。作者以 15 % 概率將輸入的Token進(jìn)行替代,將其替代為特殊令牌[MASK],令 表示被掩膜后的文本,
??表示對(duì)掩膜后的令牌的預(yù)測(cè)結(jié)果,而
表示被掩膜令牌的真實(shí)標(biāo)簽,那么MLM目的在于最小化以下交叉熵?fù)p失:
通過MLM損失建模,可以讓多模態(tài)實(shí)體之間不僅語義對(duì)齊,而且能找到各個(gè)實(shí)體之間的復(fù)合語義關(guān)系,如Fig 3.2所示,MLM損失約束模型去融合不同實(shí)體,挖掘他們之間的多模態(tài)關(guān)系,從而對(duì)被掩膜后的實(shí)體做出預(yù)測(cè)。
Fig 3.2 MLM損失約束模型去融合不同實(shí)體的語義關(guān)系,從而對(duì)被掩膜后的實(shí)體做出預(yù)測(cè)。
除了MLM損失,文章中還通過圖文匹配損失(Image-Text Matching,ITM)對(duì)難負(fù)樣本進(jìn)行匹配學(xué)習(xí),從而期望模型能夠?qū)﹄y負(fù)樣本有著更好的區(qū)分能力,從而彌補(bǔ)單塔模型無法進(jìn)行難負(fù)樣本選取的缺點(diǎn),以提升多模態(tài)模型的語義對(duì)齊和語義融合能力。作者挑選難負(fù)樣本的依據(jù)是根據(jù)雙塔模型的打分,從式子(3-2)中可以挑選出同一個(gè)Query下面最為難的Image(打分最高,但卻是預(yù)測(cè)錯(cuò)誤的),也可以挑選出同個(gè)Image下最難的Query(論文中是根據(jù)打分大小設(shè)置概率進(jìn)行采樣得到的)。由此可以得到 N 個(gè)正例和 2 N 個(gè)難負(fù)例構(gòu)成了ITM任務(wù)的輸入,其損失如式子(3-5)所示。
最后的預(yù)訓(xùn)練階段損失由以上三個(gè)損失構(gòu)成,如式子(3-6)所示:
動(dòng)量蒸餾(Momentum Distillation, MoD)
用于預(yù)訓(xùn)練的圖文數(shù)據(jù)大多來自于互聯(lián)網(wǎng) [3],通常都是所謂的弱標(biāo)注數(shù)據(jù)集,文本中可能有些詞語和圖片的實(shí)體是毫無關(guān)系的,圖片也可能包含有文本中完全沒提到的東西。對(duì)于ITC損失而言,一個(gè)圖片的負(fù)樣本文本也有可能能夠匹配上這個(gè)圖片(特別是如果該圖文對(duì)數(shù)據(jù)來自于用戶點(diǎn)擊數(shù)據(jù));對(duì)于MLM損失而言,被掩膜掉的令牌也許被其他令牌替代也能對(duì)圖像進(jìn)行描述(甚至可能更合適)。作者認(rèn)為,在ITC和MLM任務(wù)中采用one-hot標(biāo)簽進(jìn)行訓(xùn)練會(huì)對(duì)所有的負(fù)例進(jìn)行打壓,而不考慮這些負(fù)例倒底是不是真正的『負(fù)例』。為了解決這個(gè)問題,作者提出動(dòng)量編碼器可以看成是單模態(tài)/多模態(tài)編碼器的一種指數(shù)滑動(dòng)平均版本(exponential-moving-average),可以通過動(dòng)量編碼器去生成ITC和MLM任務(wù)的『偽標(biāo)簽』,筆者并沒有特別理解為什么可以通過動(dòng)量編碼器去生成偽標(biāo)簽,可能這樣做能使得標(biāo)簽更為平滑,而不像one-hot標(biāo)簽一樣吧。總而言之,通過動(dòng)量編碼器,我們有動(dòng)量編碼器打分:
將(3-7)中的替代式子(3-2)中的 s ?,我們得到偽標(biāo)簽
,那么
損失定義為:(實(shí)際代碼實(shí)現(xiàn)有些差別,可能要另一篇博文里面去寫了)
類似的, ?損失可以定義為:
讀后感
這篇文章比較復(fù)雜,最近筆者比較忙看了好久才大致看懂些,有些細(xì)節(jié)猜不透的去看了下代碼,發(fā)現(xiàn)代碼實(shí)現(xiàn)好像有些和論文有差別,后續(xù)有空再補(bǔ)充下代碼實(shí)現(xiàn)的閱讀筆記可能會(huì)更好些??傮w來看,這篇文章結(jié)合了雙塔模型可以進(jìn)行大規(guī)模對(duì)比學(xué)習(xí),和單塔模型可以進(jìn)行細(xì)粒度交互的優(yōu)勢(shì),提出了ALBEF模型對(duì)多模態(tài)數(shù)據(jù)進(jìn)行語義對(duì)齊+語義融合,其思路是值得在業(yè)界進(jìn)行嘗試的。
補(bǔ)充
筆者之前寫這篇博文的時(shí)候的確不太理解這里的操作邏輯,后面大概理解了為什么用動(dòng)量編碼器可以生成所謂『偽標(biāo)簽』,當(dāng)數(shù)據(jù)量比較大的時(shí)候,編碼器可能在不同的step下見到同一個(gè)文本text與不同類型的圖片的數(shù)據(jù)對(duì)??紤]一種情況,文本text描述中存在兩個(gè)實(shí)體 鴨子和橙子,在某個(gè)數(shù)據(jù)對(duì)中{text,imageA}中imageA存在鴨子,而只存在橙子的imageB可能就被認(rèn)為是負(fù)例了;在某個(gè)數(shù)據(jù)對(duì){text,imageB}中存在橙子,而只存在鴨子的imageA可能就被視為負(fù)例了。通過動(dòng)量更新編碼器,可以看成通過一個(gè)動(dòng)量更新的過程中的時(shí)間平滑系數(shù),將不同step下遇到的{text,imageA}, {text, imageB}樣本的標(biāo)簽信息都考慮了,因此可以視為時(shí)候『偽標(biāo)簽』信息。
Reference
[1]. Li, Junnan, Ramprasaath Selvaraju, Akhilesh Gotmare, Shafiq Joty, Caiming Xiong, and Steven Chu Hong Hoi. “Align before fuse: Vision and language representation learning with momentum distillation.” Advances in Neural Information Processing Systems 34 (2021).
[2]. https://blog.csdn.net/LoseInVain/article/details/121699533
[3]. https://blog.csdn.net/LoseInVain/article/details/120364242
[4]. https://fesian.blog.csdn.net/article/details/119516894
[5]. Huo, Yuqi, Manli Zhang, Guangzhen Liu, Haoyu Lu, Yizhao Gao, Guoxing Yang, Jingyuan Wen et al. “WenLan: Bridging vision and language by large-scale multi-modal pre-training.” arXiv preprint arXiv:2103.06561 (2021).
[6]. Fei, Nanyi, Zhiwu Lu, Yizhao Gao, Guoxing Yang, Yuqi Huo, Jingyuan Wen, Haoyu Lu et al. “WenLan 2.0: Make AI Imagine via a Multimodal Foundation Model.” arXiv preprint arXiv:2110.14378 (2021).
[7]. Radford, A., Kim, J. W., Hallacy, C., Ramesh, A., Goh, G., Agarwal, S., … & Sutskever, I. (2021). Learning transferable visual models from natural language supervision. arXiv preprint arXiv:2103.00020.
[8]. https://fesian.blog.csdn.net/article/details/119515146
[9]. He, K., Fan, H., Wu, Y., Xie, S., & Girshick, R. (2020). Momentum contrast for unsupervised visual representation learning. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (pp. 9729-9738).
[10]. https://github.com/salesforce/ALBEF/issues/22