2016wap網(wǎng)站開發(fā)語言北京網(wǎng)絡(luò)推廣公司排行
1 引言
前段時(shí)間 ChatGPT 進(jìn)行了一輪重大更新:多模態(tài)上線,能說話,會看圖!微軟發(fā)了一篇長達(dá) 166 頁的 GPT-4V 測評論文,一時(shí)間又帶起了一陣多模態(tài)的熱議,隨后像是 LLaVA-1.5、CogVLM、MiniGPT-5 等研究工作緊隨其后,到處刷屏。大模型的多模態(tài)能力到底是怎么來的?
2 CLIP: 連接文本和圖像的橋梁
CLIP 是由 OpenAI 在 2021 年提出的預(yù)訓(xùn)練模型,用于評估給定圖像與給定文本描述的匹配程度。該模型使用大量(約 4 億)從網(wǎng)頁中爬取的圖像-文本對(pair)數(shù)據(jù)進(jìn)行對比學(xué)習(xí)。
數(shù)據(jù)的收集:
- 搜索了 50w 個(gè) queries(query 列表主要來自英文版維基百科中至少出現(xiàn) 100 次的所有單詞,并做了些其他補(bǔ)充)
- 為了保證每個(gè) query 的數(shù)據(jù)相對平衡,每個(gè) query 保留最多 2w 個(gè)(image, text)
典型的雙塔模型,有兩個(gè) encoder,一個(gè)對應(yīng)圖片,一個(gè)對應(yīng)文本,圖像和文本經(jīng)過各自的 encoder 后,通過簡單的點(diǎn)乘來代表不同模態(tài)的交互(相似性)。
訓(xùn)練時(shí),假設(shè)一個(gè) batch 有 N 對(圖像,文本)對,可以有 N x N 種組合方式,對比學(xué)習(xí)把原始數(shù)據(jù)集中的 N 個(gè)組合作為正樣本(下圖對角線),把其他的 N x N - N 種組合作為負(fù)樣本(下圖非對角線)。
模型訓(xùn)練的目標(biāo)就是最大化對角線上的分?jǐn)?shù),并最小化對角線外的分?jǐn)?shù)。這里從分類的角度給大家一個(gè)關(guān)于損失函數(shù)的理解,可以把每一行/列看作是個(gè)一個(gè) N 分類問題,其中分類的標(biāo)簽就是真實(shí)圖文組合所在位置(也就是對角線),比如第一行的 label 是 0,第二行的 label 是 1,以此類推。
論文中給出了實(shí)現(xiàn) CLIP 的 numpy 風(fēng)格偽代碼
# image_encoder - ResNet or Vision Transformer
# text_encoder - CBOW or Text Transformer
# I[n, h, w, c] - minibatch of aligned images
# T[n, l] - minibatch of aligned texts
# W_i[d_i, d_e] - learned proj of image to embed
# W_t[d_t, d_e] - learned proj of text to embed
# t - learned temperature parameter
# extract feature representations of each modality
I_f = image_encoder(I) #[n, d_i]
T_f = text_encoder(T) #[n, d_t]
# joint multimodal embedding [n, d_e]
I_e = l2_normalize(np.dot(I_f, W_i), axis=1)
T_e = l2_normalize(np.dot(T_f, W_t), axis=1)
# scaled pairwise cosine similarities [n, n]
logits = np.dot(I_e, T_e.T) * np.exp(t)
# symmetric loss function
labels = np.arange(n)
loss_i = cross_entropy_loss(logits, labels, axis=0)
loss_t = cross_entropy_loss(logits, labels, axis=1)
loss = (loss_i + loss_t)/2
因?yàn)?CLIP 在兩個(gè) encoder 后只進(jìn)行了簡單的內(nèi)積作為模態(tài)的交互,對于復(fù)雜點(diǎn)的任務(wù)就不那么 work 了,一個(gè)順其自然的發(fā)展就是去增強(qiáng)不同模態(tài)的交互/融合,也就是可以用一個(gè)神經(jīng)網(wǎng)絡(luò)來替換內(nèi)積。
3 ALBEF:先對齊后融合
文章的主要貢獻(xiàn)有兩個(gè):
- ALBEF 解決了多模態(tài)領(lǐng)域中圖像和文本對齊、交互的問題。在 ALBEF 之前,多模態(tài)方法通常使用 transformer 的多模態(tài)編碼器來同時(shí)編碼視覺和文本特征,由于目標(biāo)檢測器是提前訓(xùn)練好的,因此視覺和文本特征并不是對齊的。圖像和文本特征可能距離很遠(yuǎn),這使得多模態(tài)編碼器難以學(xué)習(xí)到它們之間的交互。為了解決這個(gè)問題,ALBEF 通過一個(gè)對比損失(也就是 CLIP 中的 ITC 損失)在進(jìn)行多模態(tài)交互之前對齊圖像和文本數(shù)據(jù)。
- 網(wǎng)上爬取的大量圖文對通常噪聲很大(圖文不匹配)。ALBEF 采用動量蒸餾(momentum distillation)的自訓(xùn)練方法來從網(wǎng)絡(luò)圖文對數(shù)據(jù)中學(xué)習(xí),以緩解原始數(shù)據(jù)中的噪聲問題。從理論上講,ALBEF 通過互信息最大化的角度解釋了不同的多模態(tài)任務(wù),說明不同任務(wù)實(shí)際上為圖文對提供了不同的視角,類似于數(shù)據(jù)增強(qiáng),使得訓(xùn)練得到的多模態(tài)模型能夠理解不同模態(tài)下的語義,具備語義保持的能力。
接下來看一下模型的結(jié)構(gòu):
- 下面紅色框其實(shí)就類似于 CLIP,雙塔各自編碼圖像和文本,然后取 CLS 進(jìn)行對比學(xué)習(xí);
- 上面藍(lán)色框就是為了加強(qiáng)不同模態(tài)交互用的編碼器(前面提到過 CLIP 內(nèi)積的方式太簡單了,這里就是加強(qiáng)多模態(tài)融合以適配更難的任務(wù));
- 圖像編碼器 12 層,文本編碼器 6 層,多模態(tài)編碼器 6 層;其實(shí)右側(cè)是將一個(gè) 12 層的文本編碼器拆成了兩部分,這是因?yàn)橐恍┭芯抗ぷ靼l(fā)現(xiàn)在多模態(tài)中需要更強(qiáng)的圖像編碼器,進(jìn)行這樣的拆分一定程度上保證了強(qiáng)圖像 encoder 和弱文本 encoder,且保證了模型參數(shù)不過多的情況下融合圖像和文本的信息。
訓(xùn)練的目標(biāo)函數(shù):
- ITC loss,這個(gè)跟 CLIP 是一樣的
- ITM loss,在 ITM 任務(wù)中,模型需要判斷一對圖像和文本是否匹配。為了實(shí)現(xiàn)這一目標(biāo),論文使用多模態(tài)編碼器輸出的[CLS] token 的嵌入作為圖像-文本對的聯(lián)合表示,并通過一個(gè)全連接層和 softmax 函數(shù)來預(yù)測一個(gè)二分類的概率。由于判斷 batch 內(nèi)的負(fù)樣本過于簡單,文章提出通過 ITC loss 計(jì)算得到的各樣本間的余弦相似度,取除正樣本外相似度最高的作"hard negatives"。
- MLM loss,mask 掉一些文本,然后將 mask 過后的文本和圖片一起通過 ALBEF 模型,預(yù)測 mask 掉的文本。因此,ALBEF 的每一輪迭代需要經(jīng)過兩次前向傳播的過程。多模態(tài)學(xué)習(xí)的方法通常訓(xùn)練時(shí)長較長,就是因?yàn)樾枰M(jìn)行多次前向傳播,計(jì)算不同的損失。
總的 loss 就是三個(gè) loss 簡單加和:
動量蒸餾:通過保持一個(gè)模型的動量版本來生成偽標(biāo)簽,作為額外的監(jiān)督信號進(jìn)行訓(xùn)練。
- 使用基礎(chǔ)模型的參數(shù)的指數(shù)移動平均版本作為動量模型
- 使用動量模型生成的偽標(biāo)簽(是個(gè)分布)進(jìn)行訓(xùn)練
- 主模型的預(yù)測既要跟 one-hot 標(biāo)簽盡可能接近之外,也要跟 pseudo-targets 盡可能接近(KL 散度)
ITC loss:
MLM loss:
多模態(tài)編碼器能夠提高不同模態(tài)交互/融合的能力,使得模型在一些任務(wù)上表現(xiàn)更好,但是在檢索任務(wù)數(shù)據(jù)集大的時(shí)候,推理時(shí)間會非常慢,那能不能解決這個(gè)問題?
4 VLMO: 靈活才是王道
VLMo 模型通過使用混合模態(tài)專家(MoME)Transformer 實(shí)現(xiàn)了統(tǒng)一的視覺-語言預(yù)訓(xùn)練。MoME Transformer 的結(jié)構(gòu)設(shè)計(jì)允許根據(jù)輸入信號的不同使用對應(yīng)的 FFN 層參數(shù)進(jìn)行計(jì)算。具體來說,VLMo 模型包括了視覺專家(V-FFN)、文本專家(L-FFN)和圖文專家(VL-FFN),它們分別用于處理圖像、文本和圖像-文本輸入。這種靈活的設(shè)計(jì)使得VLMo 模型能夠根據(jù)任務(wù)的不同使用不同的結(jié)構(gòu)進(jìn)行訓(xùn)練和推理。
在預(yù)訓(xùn)練階段,VLMo 模型采用了三種任務(wù):圖像-文本對比學(xué)習(xí)(ITC)、圖像-文本匹配(ITM)和掩碼語言建模(MLM)。在 ITC 任務(wù)中,VLMo 模型以雙塔結(jié)構(gòu)對圖像和文本進(jìn)行嵌入。在 ITM 和 MLM 任務(wù)中,VLMo 模型以融合編碼器的形式,分別提取圖像和文本的特征,并通過 MoME Transformer 進(jìn)行模態(tài)融合。VLMo 模型使用不同的 FFN 層參數(shù)來計(jì)算不同任務(wù)的損失函數(shù),并更新對應(yīng)的參數(shù)。
VLMo 模型的優(yōu)勢之一是其靈活性。在訓(xùn)練階段,根據(jù)任務(wù)的不同使用不同的結(jié)構(gòu)計(jì)算損失函數(shù),并更新對應(yīng)的參數(shù)。這樣的訓(xùn)練過程需要多次模型前向計(jì)算,但在推理階段,靈活性的優(yōu)勢得到了體現(xiàn)。對于檢索類任務(wù),可以使用單獨(dú)的文本/圖像編碼器提取特征,提高處理效率;而對于推理類任務(wù),可以通過圖文編碼器進(jìn)行充分的模態(tài)交互。這種設(shè)計(jì)巧妙地解決了傳統(tǒng)視覺-語言模型中雙編碼器和融合編碼器之間的沖突。
另一個(gè) VLMo 模型的優(yōu)化是引入大規(guī)模的圖像和文本數(shù)據(jù)進(jìn)行分階段的預(yù)訓(xùn)練。首先,在圖像數(shù)據(jù)上訓(xùn)練視覺專家和自注意力層的參數(shù);然后,在文本數(shù)據(jù)上訓(xùn)練文本專家的參數(shù);最后,在多模態(tài)數(shù)據(jù)上訓(xùn)練自注意力層和三種專家的參數(shù)。通過這種分階段的預(yù)訓(xùn)練策略,VLMo 模型能夠?qū)W習(xí)到更具泛化能力的表示。
5 BLIP:理解、生成我都要
文章的研究動機(jī):
- 現(xiàn)有的預(yù)訓(xùn)練模型通常在理解型任務(wù)或生成型任務(wù)中表現(xiàn)出色,但很少有模型能夠同時(shí)在這兩種任務(wù)上達(dá)到優(yōu)秀的性能。
- 現(xiàn)有的性能改進(jìn)主要是通過擴(kuò)大數(shù)據(jù)集規(guī)模并使用從網(wǎng)絡(luò)收集的帶有噪聲的圖像-文本對進(jìn)行訓(xùn)練實(shí)現(xiàn)的。然而,網(wǎng)絡(luò)數(shù)據(jù)集中的噪聲會對模型的性能產(chǎn)生負(fù)面影響。
主要的貢獻(xiàn):
- 統(tǒng)一了圖像-語言的理解與生成任務(wù)
- Bootstrap 的方式清洗網(wǎng)絡(luò)噪聲數(shù)據(jù)
在模型的設(shè)計(jì)上結(jié)合了 ALBEF 和 VLMo,看下圖中紅色框中就類似 ALBEF,只是畫 image-grounded text encoder 的位置不同;藍(lán)色框中類似 VLMo,雖然有三個(gè)模型,但是大部分參數(shù)都是共享的。
- 左一為 Image Encoder(圖像編碼器):該組件使用 Vision Transformer(ViT)對圖像進(jìn)行編碼,將全局圖像特征表示為一個(gè)額外的[CLS]標(biāo)記。
- 左二為 Text Encoder,采用了 BERT 的結(jié)構(gòu),提取文本特征用于與視覺特征計(jì)算 ITC loss。Text Encoder 不與視覺特征計(jì)算交叉注意力。
- 左三為 Image-grounded Text Encoder(基于圖像的文本編碼器),該組件通過在每個(gè) Transformer 塊的自注意力(Self-Attention)層和前饋神經(jīng)網(wǎng)絡(luò)(Feed Forward Network)之間插入一個(gè)交叉注意力(Cross-Attention)層,將視覺信息注入到文本編碼中,提取文本特征用于計(jì)算 ITM 損失。
- 左四為 Imagegrounded Text Decoder(基于圖像的文本解碼器),用于進(jìn)行 LM 語言建模訓(xùn)練(這里不再是用 MLM 了),生成與圖像相關(guān)的文本描述。
- 三個(gè)文本編解碼器分別為在文本前添加 [CLS]、[Encode]、[Decode] token
- 與 ALBEF 一樣,同樣采用動量模型為 ITC 生成偽標(biāo)簽;使用 ITC 為 ITM 進(jìn)行難負(fù)例挖掘。
BLIP 的訓(xùn)練流程
- 使用含噪聲的數(shù)據(jù)訓(xùn)練一個(gè) MED(Multimodal Mixture of Encoder-Decoder)模型;
- 將該模型的 Image-grounded Text Encoder 和 Image-grounded Text Decoder 在人工標(biāo)注的 COCO 數(shù)據(jù)集上進(jìn)行微調(diào),分別作為 Filter 和 Captioner;
- Captioner 根據(jù)圖像數(shù)據(jù)生成對應(yīng)的文本描述;
- Filter 對噪聲較大的網(wǎng)絡(luò)數(shù)據(jù)和生成數(shù)據(jù)進(jìn)行過濾清洗,得到較為可靠的訓(xùn)練數(shù)據(jù);
- 再根據(jù)這些可靠的訓(xùn)練數(shù)據(jù),訓(xùn)練更好的 MED 模型,從而實(shí)現(xiàn) bootstraping 訓(xùn)練。
?6 CoCa: 讓模型訓(xùn)練得更快一點(diǎn)
CoCa 將解決圖像或多模態(tài)問題的模型概括成 3 種經(jīng)典結(jié)構(gòu),分別是 single-encoder model、dual-encoder model、encoder-decoder model。Single-encoder model 指的是基礎(chǔ)的圖像分類模型,dual-encoder model 指的是類似 CLIP 的雙塔圖文匹配模型,encoder-decoder model 指的是用于看圖說話任務(wù)的生成式模型。
CoCa 的出發(fā)點(diǎn)就是將三種類型的模型結(jié)構(gòu)進(jìn)行統(tǒng)一,它是 ALBEF 的后續(xù)工作,從結(jié)構(gòu)上看來,都是左側(cè)處理圖像,右側(cè)文本從中間劈開,前半段處理文本,后半段進(jìn)行不同模態(tài)的融合。與 ALBEF 最大的不同在于 CoCa 右側(cè)處理文本和進(jìn)行多模態(tài)融合的網(wǎng)絡(luò)是一個(gè) decoder 而非 encoder。
在模型的訓(xùn)練上,看名字就能知道它是使用對比損失和文本生成損失進(jìn)行訓(xùn)練,也就是使用了 ITC 和 LM loss;這里沒有使用 ITM loss,減少了模型參數(shù)每次迭代所需前向傳播的次數(shù),從而降低了訓(xùn)練時(shí)間。
7 BEITv3:圖片也是一種語言
BEITv3 的主要想法就是希望統(tǒng)一多模態(tài)學(xué)習(xí)中的模型結(jié)構(gòu)、預(yù)訓(xùn)練任務(wù)以及模型規(guī)模。為此將圖片也看作一種語言(Imglish),圖像文本對看作是 parallel sentences。在輸入形式統(tǒng)一之后,也就不需要 ITC、ITM、MLM、WPA 等其他目標(biāo)函數(shù),而是可以使用統(tǒng)一的 masked “l(fā)anguage” modeling 的方式進(jìn)行訓(xùn)練。
BEITv3 的模型結(jié)構(gòu)使用的是 Multiway Transformer (其實(shí)就是前面 VLMo 的 MoME),因此也就具備了之前提到的靈活性的特點(diǎn),可以適用于非常多的下游任務(wù)。
文章使用了一個(gè)統(tǒng)一的預(yù)訓(xùn)練任務(wù):masked data modeling。該任務(wù)涉及到對單模態(tài)數(shù)據(jù)(如圖像和文本)以及多模態(tài)數(shù)據(jù)(如圖像-文本對)進(jìn)行掩碼操作,并訓(xùn)練模型來恢復(fù)被掩碼的標(biāo)記。
- 文本數(shù)據(jù)使用 SentencePiece tokenizer 進(jìn)行 tokenize
- 圖像數(shù)據(jù)使用 BEIT v2 的 tokenizer 進(jìn)行 tokenize,以獲得離散的視覺 token 作為重構(gòu)的目標(biāo)
- 當(dāng)輸入數(shù)據(jù)是純文本時(shí),掩碼的比例是 10%
- 當(dāng)輸入數(shù)據(jù)是純圖像時(shí),使用 block-wise 掩碼策略,掩碼的比例是 40%
- 當(dāng)輸入數(shù)據(jù)是圖文對時(shí),會對文本的 50%進(jìn)行掩碼
到這里時(shí),其實(shí)已經(jīng)呈現(xiàn)了一個(gè)趨勢,多模態(tài)模型的規(guī)模在不斷擴(kuò)大,訓(xùn)練用的數(shù)據(jù)規(guī)模也在擴(kuò)大,雖然這一定程度上對性能有利的,但是端到端訓(xùn)練的成本也會隨之增加。
此時(shí)也就會有另外一種思考,有沒有什么高效的對齊方法,直接利用已經(jīng)預(yù)訓(xùn)練好的視覺、文本模型就能快速對齊,完成對模態(tài)任務(wù)。
8 BLIP2:將圖像特征對齊到預(yù)訓(xùn)練語言模型
BLIP-2 通過在凍結(jié)的預(yù)訓(xùn)練圖像編碼器和凍結(jié)的預(yù)訓(xùn)練大語言模型之間添加一個(gè)輕量級 查詢 Transformer (Query Transformer, Q-Former) 來彌合視覺和語言模型之間的模態(tài)隔閡。在整個(gè)模型中,Q-Former 是唯一的可訓(xùn)練模塊,而圖像編碼器和語言模型始終保持凍結(jié)狀態(tài)。
Q-Former 由兩個(gè)子模塊組成,這兩個(gè)子模塊共享相同的自注意力層:
- 與凍結(jié)的圖像編碼器交互的圖像 transformer,用于視覺特征提取
- 文本 transformer,用作文本編碼器和解碼器
圖像 transformer 從圖像編碼器中提取固定數(shù)量的輸出特征,這里特征的個(gè)數(shù)與輸入圖像分辨率無關(guān)。同時(shí),圖像 transformer 接收若干查詢嵌入作為輸入,這些查詢嵌入是可訓(xùn)練的。這些查詢還可以通過共享的自注意力層與文本進(jìn)行交互。
Q-Former 分兩個(gè)階段進(jìn)行預(yù)訓(xùn)練。 第一階段,圖像編碼器被凍結(jié),Q-Former 通過三個(gè)損失函數(shù)進(jìn)行訓(xùn)練:
- ITC loss
- ITM loss
- Image-grounded Text Generation (ITG) loss:用于訓(xùn)練 Q-Former 模型在給定輸入圖像條件下生成文本。在注意力機(jī)制上,queries 之間互相可見但是不能看到文本 token,而文本 token 可以看到所有的 queries 以及它之前的文本 token。此外將 CLS token 替換為 DEC token 以便提示模型進(jìn)行解碼任務(wù)。
通過第一階段的訓(xùn)練,Query 已經(jīng)能夠理解圖片的含義了,接下來就是讓 LLM 也能夠理解圖片信息,因此作者針對兩類不同 LLM 設(shè)計(jì)了不同的任務(wù):
- Decoder 類型的 LLM(如 OPT):以 Query 做輸入,文本做目標(biāo);
- Encoder-Decoder 類型的 LLM(如 FlanT5):以 Query 和一句話的前半段做輸入,以后半段做目標(biāo);因?yàn)椴煌P偷?embedding 維度不同,所以這里還加上了一個(gè)全連接層。
BLIP2 驗(yàn)證了之前的想法,直接利用已經(jīng)預(yù)訓(xùn)練好的視覺、文本模型,通過設(shè)計(jì)參數(shù)量較少的“對齊模塊”來實(shí)現(xiàn)多模態(tài)的對齊。
然而,注意到 BLIP2 在抽視覺特征其實(shí)是不考慮文本的;此時(shí)也正值 指令微調(diào) 在大語言模型中大殺四方,因此進(jìn)一步的發(fā)展方向也就誕生了。
9 InstructBLIP:指令微調(diào)大殺四方
InstructBLIP 可以理解為是 BLIP2 + 指令微調(diào)
- 作者們收集了 26 數(shù)據(jù)集并轉(zhuǎn)化指令微調(diào)的格式
- 并改進(jìn) BLIP2 中的 Query Transformer 為 指令感知的 Query Transformer,能夠抽取和給定指令相關(guān)的信息
InstructBLIP 的模型結(jié)構(gòu)如下所示:
可以看到 Q-Former 的輸入部分多了 Instruction,指令可以通過 Q-Former 的自注意力層與查詢嵌入進(jìn)行交互,并鼓勵提取與任務(wù)相關(guān)的圖像特征。
10 MiniGPT-4:LLM 助力多模態(tài)
對于 GPT4 能夠具有超強(qiáng)的圖文理解能力,作者們的理解是這是得益于大語言模型的能力,因此考慮將最新的一些能跟 ChatGPT “媲美”的語言模型引入其中,這里采用了 Vicuna 作為語言模型,在視覺理解上,作者采用了和 BLIP2 里面一樣的視覺模塊,包含一個(gè) ViT 模塊和一個(gè) Q-Former 模塊。模型的整體框架如下所示,我們從下往上看:首先一張圖片會經(jīng)過視覺模塊(ViT&Q-Former)進(jìn)行編碼得到一個(gè)圖像 embedding,由于視覺模塊給出的 embedding 不能夠直接被語言模型理解,因此一般需要將視覺 embedding 和文本 embedding 進(jìn)行對齊,這里加入了一個(gè)線性層,可以理解為這里假設(shè)圖片編碼器得到的輸出經(jīng)過一個(gè)線性層后就能夠被語言模型理解了,然后將原始的文本信息和經(jīng)過對齊后的圖像信息拼接起來,送入 LLM,就可以實(shí)現(xiàn)能夠接受多模態(tài)信息的 GPT 了。
對于這樣一個(gè)模型如何進(jìn)行訓(xùn)練呢?我們可以看到模型架構(gòu)中視覺模塊和 LLM 模塊都有個(gè)“冷凍”起來的標(biāo)志,這表示這兩個(gè)模塊的模型參數(shù)是固定的,也就是不進(jìn)行更新的,可以理解為這兩個(gè)模塊繼承了原來的視覺模塊和 LLM 模型的能力;需要訓(xùn)練的地方只有線性層,通過訓(xùn)練這一層線性層實(shí)現(xiàn)圖像 embedding 向文本 embedding 的轉(zhuǎn)化。
要實(shí)現(xiàn)圖像和文本信息的“對齊”自然需要相應(yīng)的數(shù)據(jù)集,數(shù)據(jù)集還必須是那種圖像-文本對的形式,這里采用了 Conceptual Caption、SBU、LAION 三個(gè)數(shù)據(jù)集和混合,大概 5million 的圖像-文本對來進(jìn)行模型的訓(xùn)練。這其實(shí)這是 miniGPT4 第一階段的訓(xùn)練,因?yàn)樽髡甙l(fā)現(xiàn)這樣訓(xùn)練完后讓模型進(jìn)行生成的文本缺乏連貫性,會出現(xiàn)一些比如重復(fù)或者斷斷續(xù)續(xù)的情況。
進(jìn)一步,作者借助 ChatGPT 來修正一些描述,按照設(shè)計(jì)的對話模板構(gòu)造了一個(gè)大約 3000 個(gè)圖像-文本對的高質(zhì)量數(shù)據(jù)集用于第二階段的訓(xùn)練。
此時(shí)的感受就是:大語言模型牛 X、高質(zhì)量數(shù)據(jù)牛 X,一些基于開源 LLM 進(jìn)行修改的多模態(tài)大模型也開始百花齊放
11 Visual Instruction Tuning:繼續(xù)將指令微調(diào)發(fā)揚(yáng)光大
LLaVA 模型的結(jié)構(gòu)包括兩個(gè)主要組件:視覺編碼器和語言模型。
- 視覺編碼器:LLaVA 中使用的視覺編碼器基于 CLIP(ViT-L/14 變體)。在 LLaVA 中,視覺編碼器接收輸入圖像(
)并使用 ViT-L/14 模型生成視覺特征(
)。然后,使用可訓(xùn)練的投影矩陣(
),將這些視覺特征轉(zhuǎn)換為語言嵌入標(biāo)記(
)。這個(gè)投影矩陣使得圖像特征能夠與語言模型的詞嵌入空間對齊。
- 語言模型:LLaVA 中使用的語言模型為 LLaMA。語言模型接收由視覺編碼器生成的語言嵌入標(biāo)記(
)以及文本信息(
)作為輸入,并根據(jù)這些輸入生成文本輸出。
訓(xùn)練模型的輸入序列構(gòu)造:
LLaVA 模型的訓(xùn)練過程分為兩個(gè)階段:
- 階段 1:視覺編碼器和 LLM 權(quán)重被凍結(jié),可訓(xùn)練的參數(shù)是投影矩陣(W)
- 階段 2:端到端微調(diào)
最近的升級版本 LLaVA-1.5
主要做了幾點(diǎn)優(yōu)化:
- 使用單一的響應(yīng)格式提示語,明確指示輸出格式。例如,“Answer the question using a single word or phrase.”這樣的提示語可以促使 LLM 根據(jù)用戶的指示正確調(diào)整輸出格式。
- vision-language 的 connector 使用一個(gè)兩層的 MLP
- 額外使用一些學(xué)術(shù)任務(wù)導(dǎo)向的數(shù)據(jù)集
- 擴(kuò)大 LLM 的參數(shù)規(guī)模、圖像的分辨率等
12 VisualGLM
沒有放出相關(guān)的論文,這是一次分享中的 PPT,可以看到和前面的做法大同小異:
13 CogVLM:視覺優(yōu)先再現(xiàn)江湖
這是 VisualGLM 的升級版,但是放棄了 VisualGLM 的一些思想,這里的主要思想回歸 LLM 前的多模態(tài)研究思路:更大的圖像編碼器可能是有效的,也就是視覺優(yōu)先。
模型的結(jié)構(gòu)如下所示:
- 圖 a 可以看到跟之前的方法類似,圖像經(jīng)過圖像編碼器后經(jīng)過一個(gè)淺層的 MLP 來向文本對齊
- 圖 b 可以看到在語言模型中新增了視覺專家模塊(圖像的 QKV 矩陣和 FFN 層),以實(shí)現(xiàn)深度視覺-語言特征對齊
- 這設(shè)計(jì)有一點(diǎn)前面 VLMO 的味道,但本質(zhì)又不一樣
14 MiniGPT-5:多模態(tài)生成是未來
之前的工作大多是考慮的是多模態(tài)理解(看圖說話),最近剛提出的 MiniGPT-5 則想著直接多模態(tài)同時(shí)生成(同時(shí)生成文本和圖片)。
圖片生成的話用 Stable Diffusion 來做是個(gè)比較常規(guī)的操作了,簡單回憶下 Stable Diffusion 怎么做的,其實(shí)就是一個(gè) Unet 接收加噪的圖片、時(shí)間步長、以及文本的 token embedding 來進(jìn)行生成,這里的文本編碼器來自于 CLIP,那多模態(tài)發(fā)展得風(fēng)風(fēng)火火,把這里的文本編碼器換成新一點(diǎn)的模型是不是可行?
答案是可以的,MiniGPT-5 本質(zhì)可以理解為就是將 Stable Diffusion 中的 CLIP 文本編碼器替換成 MiniGPT-4,從而實(shí)現(xiàn)文本、圖像同時(shí)生成。
為了能夠?qū)?MiniGPT-4 和 Stable Diffusion 中 Unet 完美結(jié)合起來還需要對模型結(jié)構(gòu)進(jìn)行一定的修改:
- 為了 LLM 的詞表添加了用來表示圖像的 token,稱為 generative vokens
- 為了將 MiniGPT-4 的輸出 embedding 輸入到 Unet,用一個(gè) MLP+Transformer 進(jìn)行了映射(上圖中間紅色框部分)
這樣一個(gè)復(fù)雜的模型要訓(xùn)練起來肯定是費(fèi)勁的,除了讓模型要同時(shí)理解圖像和文本的對應(yīng)關(guān)系,再生成的時(shí)候還要保證一致性,作者也是提出了一個(gè)兩階段訓(xùn)練的方式。
- 第一階段除了考慮文本生成的 loss、圖像生成的 latent diffusion model loss,還要 SD 的文本編碼器的輸出對 generative vokens 進(jìn)行了引導(dǎo)
- 第二階段使用更復(fù)雜的數(shù)據(jù)和任務(wù)來進(jìn)行微調(diào),只考慮了文本生成的 loss 和圖像生成的 loss
- 因?yàn)橛?xùn)練涉及到圖像生成,所以也用了 Classifier-free Guidance 來提升條件擴(kuò)散模型的性能
15 GPT-4V:遠(yuǎn)遠(yuǎn)領(lǐng)先!
openai 還是保持著 closeai 的風(fēng)格,關(guān)于 GPT-4V 的模型以及訓(xùn)練相關(guān)的細(xì)節(jié)并沒有公布,只有一份微軟的測評論文,從結(jié)果上來看是遠(yuǎn)遠(yuǎn)領(lǐng)先。
看完兩個(gè)模態(tài)的多模態(tài)工作,我們再來看看如何擴(kuò)展到更多的模態(tài)
16 ImageBind:更多模態(tài)一起對齊
ImageBind 的目標(biāo)是將不同模態(tài)的 embedding 對齊到一個(gè)公共的空間,可以理解為是 CLIP 的多模態(tài)版本。
文章的主要思想是通過圖片作為橋梁來將不同模態(tài)的數(shù)據(jù)關(guān)聯(lián)起來。
假設(shè)每個(gè)模態(tài)有個(gè)自己的編碼器,編碼器輸出加一個(gè)映射層來對齊 embedding 的維度,然后就跟 CLIP 一樣用對比學(xué)習(xí)來訓(xùn)練就可以了。
這里表示的是圖片的 embedding,
是和圖片對應(yīng)的其他任意模態(tài)的 embedding。
ImageBind 考慮的主要是不同模態(tài)的對齊,那如何進(jìn)行一些多模態(tài)的下游任務(wù)呢?
17 Meta-Transformer:未來就是要統(tǒng)一
Meta-Transformer 野心就比較大了,同時(shí)考慮了 12 種模態(tài)。
它的主要思想是使用一個(gè)統(tǒng)一的框架來處理來自多種模態(tài)的數(shù)據(jù),而無需為每種模態(tài)設(shè)計(jì)特定的模型或網(wǎng)絡(luò)。通過將所有模態(tài)的數(shù)據(jù)映射到一個(gè)共享的 embedding 空間,并使用一個(gè)公共的編碼器來提取特征。
- 統(tǒng)一的 Tokenization:通過設(shè)計(jì)特定的 Tokenization 策略,例如將圖像分割成小塊或?qū)⑽谋痉指畛稍~或子詞,然后為每個(gè)塊或詞生成一個(gè) token。這些 token 然后被映射到一個(gè)連續(xù)的向量空間,形成 token embedding;
- 模態(tài)共享的編碼器: 使用一個(gè)預(yù)訓(xùn)練的 Transformer 編碼器,它的參數(shù)是凍結(jié)的。這個(gè)編碼器可以處理來自不同模態(tài)的 token embedding(因?yàn)樗鼈兌荚谕粋€(gè)共享的流形空間內(nèi));
- 任務(wù)特定的頭部:這些頭部通常由多層感知機(jī)(MLP)組成,并根據(jù)不同的模態(tài)和任務(wù)進(jìn)行調(diào)整。
18 總結(jié)
多模態(tài)的研究做的事情主要是:
- 不同模態(tài)進(jìn)行對齊
- 不同模態(tài)進(jìn)行融合
- 指令微調(diào)促進(jìn)人機(jī)交互,數(shù)據(jù)的質(zhì)量可能比數(shù)量更重要
- 模型設(shè)計(jì)既要保證檢索任務(wù)下的高效推理,又要能夠進(jìn)行多模態(tài)深度融合
- 進(jìn)入大語言模型時(shí)代前,用更大的圖像編碼器一般是更有效的
- 進(jìn)入大語言模型時(shí)代后,圖文理解能力的強(qiáng)大可能來自于大語言模型的能力
- 進(jìn)入大語言模型時(shí)代后,視覺優(yōu)先仍然是值得探索的方向,但是訓(xùn)練大視覺模型向來是比較困難的
- 想要在多模態(tài)理解的基礎(chǔ)上擴(kuò)充多模態(tài)生成能力需要設(shè)計(jì)不同模態(tài)對應(yīng)的解碼器
- 理想的框架:多模態(tài)對齊+統(tǒng)一的編碼器+統(tǒng)一的解碼器,一舉拿下多模態(tài)理解和生成
?