如何將多模態(tài)數(shù)據(jù)融入到BERT的架構(gòu)
大家好,我是DASOU;
回到2018年BERT剛剛橫空出世,如果想快速搞一篇BERT的多模態(tài)預(yù)訓(xùn)練論文,應(yīng)該從哪些方面去考慮呢?
本文講兩個(gè)問題,把多模態(tài)BERT知識點(diǎn)串起來【絕對原創(chuàng),至少我還沒看到這么講過的博文】:
如何將MLM和多模態(tài)數(shù)據(jù)融合
如何將NSP任務(wù)和多模態(tài)數(shù)據(jù)融合
BERT中的大部分模塊都是已經(jīng)有的,它最大的作用就是證明了可以通過文本重建的方式從大量的無監(jiān)督語料中獲取到知識;
那么我們現(xiàn)在思考的問題就是如何從多模態(tài)數(shù)據(jù)中,使用BERT的架構(gòu),學(xué)習(xí)到有用的知識;
BERT有兩個(gè)任務(wù),一個(gè)是MLM。一個(gè)是NSP;
MLM是做文本重建,NSP是做句間關(guān)系;
1. 如何將MLM和多模態(tài)數(shù)據(jù)融合
MLM我們需要從三個(gè)方面去考慮:
MLM輸入形式是什么?
mask的時(shí)候需要注意什么?
輸出形式是什么,損失函數(shù)是什么?
在多模態(tài)場景下,對MLM任務(wù),需要分為兩個(gè)方向,一個(gè)是對文本的重建,稱之為Masked Language Modeling (MLM),一個(gè)是對圖像的重建,稱之為Masked Region Modeling(MRM);
文本這邊的MLM很簡單,和BERT原始本身沒區(qū)別,就不贅述了;
有意思的是圖像重建:MRM;
首先拿到一張圖片,要想把這個(gè)圖片送入到TRM中去,需要的是多個(gè)圖片tokens;
有幾種方式可以做到這一點(diǎn),首先第一個(gè)就是將圖片分為一個(gè)個(gè)的patch,這個(gè)老生常談了,TRM在CV中的應(yīng)用大部分都是這種方式;
還有一種就是使用Faster-RCNN對圖片做目標(biāo)檢測,獲取到一個(gè)個(gè)的含有物體的regions,那么這個(gè)regions就是可以認(rèn)為是一個(gè)個(gè)的tokens;
這個(gè)時(shí)候會出現(xiàn)一個(gè)問題,我們思考BERT中的文本tokens的輸入,不僅僅是embeddings,而且還有position embeddings;
這是因?yàn)門RM中tokens之間是無序的,需要使用position embeddings來標(biāo)明順序;
那么回到圖像這里,用什么來標(biāo)明順序呢?一般來說使用的是Faster-RCNN中輸出的regions的locations信息【5維或者是7維度】;
仿照文本,我們需要把圖片regions的表征和地理位置的表征加起來,由于維度不一致,所以加起來之前需要各自過一個(gè)全鏈接層;
那么【mask】怎么去操作呢,在操作的時(shí)候需要注意什么呢?
文本這邊還是直接使用【mask】符號去mask掉子詞就可以;
那么在圖片這邊,直接使用全零向量替代掉mask掉的圖片regions就可以了;
這里有一個(gè)細(xì)節(jié)很有意思,在mask的時(shí)候我們有兩種選擇,就是文本和圖片是混合mask的或者文本和圖片是conditional masking;
文本和圖片是混合的,就是說明我們在mask的時(shí)候不區(qū)分圖片或者文本,隨機(jī)mask;
文本和圖片是conditional mask,就是說我在mask文本的時(shí)候,保持圖片是完整的,在mask圖片的時(shí)候,保持文本是完整的;
這兩方式哪種好呢?
我們這么來想:
假如你的句子中存在【蘋果】這個(gè)單詞,而且圖片中有【蘋果】這個(gè)region,那么在mask的時(shí)候,會不會存在在mask掉【蘋果】這個(gè)詞匯的時(shí)候,同時(shí)mask掉了【蘋果】這個(gè)區(qū)域圖像呢?
肯定有概率存在這種情況。
所以conditional mask一般來說會更好一點(diǎn)。
我們在來說MLM的第三個(gè)問題,輸出形式是什么或者說損失函數(shù)是什么?
文本這邊就是softmax之后找是哪一個(gè)單詞,從而進(jìn)行更新梯度;
圖片這邊會更復(fù)雜一點(diǎn),一般來說分為三種形式,這主要是對于一個(gè)圖片我們可以使用三種方式描述它;
首先第一種就是使用Faster-RCNN的ROI pooled feature去描述這個(gè)圖片區(qū)域,那么我們就可以使用mask的圖片區(qū)域的TRM輸出的向量接一個(gè)全連接打到相同維度,和ROI pooled feature進(jìn)行一個(gè)L2;
第二個(gè)就是,比如說我現(xiàn)在有圖片中物體類別有50個(gè)類別,那么當(dāng)前圖片區(qū)域的輸出就可以是一個(gè)50個(gè)類別軟標(biāo)簽(做了softmax的歸一化到概率),這樣可以和TRM的輸出做KL散度;
第三個(gè)是承接第二個(gè),我們可以使用概率最大的那個(gè)作為當(dāng)前區(qū)域的類別,也就是得到了一個(gè)one-hot,也就是要給硬標(biāo)簽,這個(gè)直接做交叉熵就可以;
2. 多模態(tài)數(shù)據(jù)如何做NSP任務(wù)呢?
其實(shí)很簡單,NSP任務(wù)本質(zhì)上是做句子間的關(guān)系,那么我們只需要類比的做一個(gè)圖片和文本之間是否匹配的任務(wù)就可以了,也就是ITM任務(wù);
ITM本質(zhì)上是從文本整體和圖片整體來做關(guān)系,還有的會從字和單個(gè)圖片區(qū)域做關(guān)系學(xué)習(xí),比如Word-Region Alignment (WRA) ;
多模態(tài)這塊有點(diǎn)亂,但是大體上就是按照MLM和NSP任務(wù)擴(kuò)展到多模態(tài)數(shù)據(jù)上,這么理解會更容易一些;
后臺回復(fù) 【答案解析】 四個(gè)字可以獲取下載量超5000次的【Transformer從零解讀】的PDF文件;
回復(fù)【倉庫】,獲取超過Github點(diǎn)贊分別超過2.2k和1.1k的算法知識點(diǎn)匯總倉庫地址;
寫完收工,趁著午休時(shí)間寫的,求在看,求點(diǎn)贊,求轉(zhuǎn)發(fā),求一切?。?!
