如何做好BERT多模態(tài)任務(wù)
今天主要聊我在做多模態(tài)任務(wù)中的六個(gè)方面的介紹,如下:
多模態(tài)業(yè)務(wù)簡(jiǎn)單介紹; 多模態(tài)數(shù)據(jù)問題; 如何確保多模態(tài)任務(wù)的預(yù)測(cè)速度; 如何確定多模態(tài)任務(wù)確實(shí)起到了作用; 多模態(tài)中多張圖片如何處理; 交互的時(shí)候哪種attention方式更好; 訓(xùn)練的時(shí)候需要注意什么;
1.多模態(tài)業(yè)務(wù)簡(jiǎn)單介紹;
之前花了不少時(shí)間在多模態(tài)這塊的落地工作,取得了一定的效果,今天分享一下我的經(jīng)驗(yàn);
首先在調(diào)研多模態(tài)任務(wù)的時(shí)候大家可以看一下最近的論文,這兩年的多模態(tài)任務(wù)基本上都在往Transformer上去靠,基本可以分為兩種:?jiǎn)瘟骶W(wǎng)絡(luò)和雙流網(wǎng)絡(luò);
雙流網(wǎng)絡(luò)就是文本過一個(gè)編碼器,圖片過一個(gè)編碼器,然后兩個(gè)編碼器的輸出進(jìn)行一個(gè)交互;
單流網(wǎng)絡(luò)就是文本和圖片先concat,然后直接輸入到Transformer編碼器中,然后輸出;
一般來說,這里的編碼器使用的都是TRM結(jié)構(gòu);
文本這塊,輸出的時(shí)候得到的是embedding就可以;圖片這里,一般來說使用的是Faster-RCNN模型識(shí)別出圖片中包含的多個(gè)物體及其對(duì)應(yīng)的矩形位置信息,把這個(gè)作為TRM的輸入;
但是我在真正去做的時(shí)候,并沒有按照這個(gè)思路去做,我是先按照自己的思路做了個(gè)baseline,然后有效果,之后再去看論文架構(gòu)提升模型效果;
我簡(jiǎn)單分享一下我的主體思路,文本過的BERT,圖像過的Resnet,然后輸出的兩個(gè)表征向量之間做多頭注意力,然后接全連接輸出logits;
按照分類,我這個(gè)架構(gòu)應(yīng)該屬于雙流網(wǎng)絡(luò);
架構(gòu)其實(shí)很簡(jiǎn)單,但是在真正去做的時(shí)候,真的是比較復(fù)雜,有很多細(xì)節(jié),我在這里簡(jiǎn)單的梳理一下,一起探討;
多模態(tài)一般來說就是雙模態(tài)數(shù)據(jù),我主要接觸的是文本+圖片;很幸運(yùn),我有標(biāo)注數(shù)據(jù)~~ 如果沒有基于自己場(chǎng)景下的標(biāo)注數(shù)據(jù),還是不太建議強(qiáng)行上多模態(tài)任務(wù);
為了保證我的預(yù)測(cè)速度,我不可能所有的case都過多模態(tài)網(wǎng)絡(luò);所以我做的策略很簡(jiǎn)答,就是單從文本輸出結(jié)果置信度不高的而且含有圖片信息的case走多模態(tài)任務(wù);
這個(gè)問題其實(shí)很關(guān)鍵,首先我們當(dāng)然可以做測(cè)試集,驗(yàn)證一下單走文本或者單走圖片得到的f1以及做多模態(tài)得到的f1,兩者一個(gè)比較就可以;
當(dāng)時(shí)確實(shí)也這么做了,但是我糾結(jié)點(diǎn)在于能不能使用一種可見的方式,告訴大家多模態(tài)度確實(shí)起到了作用?
那么一個(gè)很有用的方法就是使用attention的可視化;這個(gè)方法可以可視化出文本和圖片之間確實(shí)是有交互的,而且交互的部分是有意義的,比如有的單詞就是對(duì)圖片中的某個(gè)部分更加關(guān)注;
因?yàn)槲覉D片過的是Resnet網(wǎng)絡(luò),所以輸入是多張圖片的數(shù)量是動(dòng)態(tài)的,這是個(gè)問題;
我們退一步說,按照現(xiàn)在bert多模態(tài)預(yù)訓(xùn)練中的方法,多張圖片完全可以作為transformer中的輸入tokens部分;或者把多張圖片合并在一起生成一個(gè)圖片再走正常流程;
我這邊處理的時(shí)候需要注意的細(xì)節(jié)就是resnet輸出池化的時(shí)候k是個(gè)動(dòng)態(tài)的池化就可以;
一般來說做互相之間的交互更好,就是文本對(duì)圖片做一次attention,圖片對(duì)文本做一次attention,兩者結(jié)合來做;
bert和resnet網(wǎng)絡(luò)架構(gòu)不太一樣,訓(xùn)練的時(shí)候容易不收斂,需要控制一下不同部分的學(xué)習(xí)率;
如上,因?yàn)闃I(yè)務(wù)的原因,很多東西不能細(xì)說,所以我只是大體的介紹了一些自己的經(jīng)驗(yàn),希望能對(duì)大家有幫助;
之后我會(huì)寫一些BERT多模態(tài)預(yù)訓(xùn)練論文的解讀文章,大體是LXMERT,ViLBERT,Unicoder-VL、VisualBERT、VL-VERT、UNITER等等;
求點(diǎn)贊,求在看,求轉(zhuǎn)發(fā),求一切,愛你們哦~ ~
