行早 發(fā)自 凹非寺
量子位 | 公眾號(hào) QbitAI
Meta AI搞了一個(gè)大一統(tǒng)的自監(jiān)督學(xué)習(xí)模型Data2vec。
怎么個(gè)大一統(tǒng)法?
圖像、語(yǔ)音、文本都可以處理,效果還都不錯(cuò),在CV方面甚至超過(guò)了包括MAE、MaskFeat在內(nèi)的一眾模型。
這是怎么做到的?我們來(lái)看看Data2vec的思路和結(jié)構(gòu)。
Data2vec如何統(tǒng)一圖音文
關(guān)于這個(gè)問(wèn)題,我們可以從模型名字中看出一些端倪。
和Word2vec把詞轉(zhuǎn)化為可計(jì)算的向量類似,Data2vec會(huì)把不同類型的數(shù)據(jù)都轉(zhuǎn)化為同一種形式的數(shù)據(jù)序列。
這樣就成功避開(kāi)了模態(tài)不同這個(gè)問(wèn)題。
然后,再用自監(jiān)督學(xué)習(xí)的方法遮住這些數(shù)據(jù)的一部分,通過(guò)訓(xùn)練讓模型把遮住的部分還原。
而它的結(jié)構(gòu)也是在這個(gè)思路上設(shè)計(jì)的。
Data2vec以Transformer架構(gòu)為基礎(chǔ),設(shè)計(jì)了一個(gè)教師-學(xué)生網(wǎng)絡(luò)結(jié)構(gòu):
從上圖中可以看出,無(wú)論對(duì)于任何形式的輸入,都先轉(zhuǎn)化為數(shù)據(jù)序列,并mask一部分信息(或擋住狗頭,或覆蓋一段語(yǔ)音,或遮住一個(gè)單詞)。
然后讓學(xué)生網(wǎng)絡(luò)通過(guò)部分可見(jiàn)的輸入去預(yù)測(cè)完整輸入,再由教師網(wǎng)絡(luò)去調(diào)整,達(dá)到一個(gè)模型處理多任務(wù)的效果。
那接下來(lái)的問(wèn)題就是如何把不同類型的輸入都轉(zhuǎn)化為同一種形式了。
Data2vec如何標(biāo)準(zhǔn)化輸入數(shù)據(jù)
在標(biāo)準(zhǔn)化輸入這一塊,Data2vec還是具體問(wèn)題具體分析的。
畢竟像素、波形和文本是完全不同的形式,而Data2vec對(duì)不同形式的輸入采用了不同的編碼策略,但是目的都是一樣的。
那就是將這些輸入都轉(zhuǎn)化為數(shù)據(jù)序列。
具體的操作方法是這樣的:
其中ViT的編碼策略就是把一張圖分成一系列的圖塊,每個(gè)圖塊有16×16個(gè)像素,然后輸入到一個(gè)線性變換系統(tǒng)中。
而語(yǔ)音的編碼方式是用多層的一維卷積神經(jīng)網(wǎng)絡(luò)將16kHz的波形轉(zhuǎn)換為50Hz的一串?dāng)?shù)據(jù)序列。
再加上文本編碼的嵌入向量,這樣所有模態(tài)的輸入都轉(zhuǎn)換為了數(shù)據(jù)序列,方便后續(xù)的訓(xùn)練。
而對(duì)于掩碼策略來(lái)說(shuō),不同的模態(tài)的表現(xiàn)形式也是不一樣的。
例如圖像可以遮住一塊,但是語(yǔ)音和文本有上下文的關(guān)聯(lián),不能隨便遮住一部分。
因此對(duì)不同的模態(tài),Data2vec也采取了相應(yīng)的符合不同數(shù)據(jù)特征的掩碼方式。
這樣標(biāo)準(zhǔn)化之后,Data2vec還針對(duì)不同的下游任務(wù)做了一些微調(diào),其中語(yǔ)音和文本的模型已經(jīng)在GitHub上放出,視覺(jué)模型也正在路上:
我們來(lái)看看這統(tǒng)一的模型性能怎么樣。
性能表現(xiàn)
雖然Data2vec三手齊抓,但是性能也沒(méi)落下。
在計(jì)算機(jī)視覺(jué)方面,在IN1K上預(yù)訓(xùn)練情況如下表所示:
和一些其他模型相比,Data2vec精度表現(xiàn)最好。而且Data2vec只訓(xùn)練了800個(gè)epochs,而表中的MAE,MaskFeat訓(xùn)練了1600個(gè)epochs。
看柱狀圖則更為明顯,藍(lán)色為Data2vec:
在語(yǔ)音處理方面,在LS-960上預(yù)訓(xùn)練結(jié)果如下:
可以看出,Data2vec在不同的標(biāo)簽數(shù)據(jù)量下單詞錯(cuò)誤率都比wav2vec2.0和HuBERT要低。
在GLUE評(píng)估中,Data2vec在自然語(yǔ)言推理(MNLI、QNLI、RTE),句子相似性(MRPC、QQP、STS-B),語(yǔ)法(CoLA)和情緒分析(SST)等指標(biāo)中和RoBERTa不相上下。
其中Baseline這一條是RoBERTa在和BERT類似的設(shè)置中的訓(xùn)練結(jié)果:
總體評(píng)分也差不多:
這么看來(lái),統(tǒng)一的模型架構(gòu)真的可以有效地用于多種任務(wù)模式。
雖然Data2vec在輸入數(shù)據(jù)和掩碼方式上還是按照不同的方法來(lái)處理,但是它仍然是探索模型統(tǒng)一的嘗試。
或許將來(lái)會(huì)有統(tǒng)一的掩碼策略和不同模態(tài)數(shù)據(jù)的混合數(shù)據(jù)集,做到真正的大一統(tǒng)。
參考鏈接:
[1]https://ai.facebook.com/research/data2vec-a-general-framework-for-self-supervised-learning-in-speech-vision-and-language
[2]https://ai.facebook.com/blog/the-first-high-performance-self-supervised-algorithm-that-works-for-speech-vision-and-text
[3]https://github.com/pytorch/fairseq/tree/main/examples/data2vec