特征如何對(duì)齊到語(yǔ)言模型)
視覺(jué)大模型這幾年迭代得非??鞆淖钤绨褕D像和文本拉到同一個(gè)語(yǔ)義空間的 CLIP到用 Sigmoid 損失把對(duì)比學(xué)習(xí)做得更干凈的 SigLIP再到現(xiàn)在動(dòng)輒能看圖說(shuō)話的 VLM視覺(jué)大語(yǔ)言模型這條演進(jìn)線其實(shí)回答了一個(gè)很樸素的問(wèn)題一張圖到底是怎么被塞進(jìn)一個(gè)只會(huì)處理文字的大語(yǔ)言模型里的很多人第一次接觸 VLM 的時(shí)候腦子里會(huì)冒出一堆問(wèn)號(hào)——圖像明明是像素矩陣語(yǔ)言模型吃的是 token 序列這兩者中間到底發(fā)生了什么視覺(jué)特征是怎么翻譯成模型能理解的東西的為什么有的方案要凍結(jié)視覺(jué)編碼器有的又要聯(lián)合訓(xùn)練我前后折騰過(guò)幾套本地部署的視覺(jué)問(wèn)答流程也踩過(guò)不少坑這篇就把 CLIP、SigLIP 到 VLM 這條鏈路拆開(kāi)講清楚從對(duì)比學(xué)習(xí)的原理到視覺(jué)特征如何對(duì)齊到文本空間再到它怎么接進(jìn)大語(yǔ)言模型盡量把每一步的為什么都說(shuō)明白。不管你是剛聽(tīng)說(shuō) CLIP 想搞懂它到底在干嘛還是已經(jīng)在做 VLM 微調(diào)想理清底層邏輯應(yīng)該都能從里面找到點(diǎn)有用的東西。1. 先把 CLIP 這件事講透它到底對(duì)齊了什么1.1 對(duì)比學(xué)習(xí)不是分類而是配對(duì)打分很多人第一次看 CLIP會(huì)下意識(shí)把它當(dāng)成一個(gè)圖像分類器覺(jué)得它輸出的就是這是貓還是狗。這個(gè)理解偏了。CLIP 的核心不是分類而是判斷一張圖和一段文字是不是一對(duì)。它的訓(xùn)練數(shù)據(jù)是海量的圖像文本配對(duì)比如一張狗的照片配上一只在草地上奔跑的金毛。訓(xùn)練目標(biāo)很簡(jiǎn)單讓真正配對(duì)的圖文對(duì)在特征空間里靠得近讓不配對(duì)的離得遠(yuǎn)。具體怎么做的一個(gè) batch 里假設(shè)有 N 個(gè)圖文對(duì)CLIP 會(huì)分別用圖像編碼器和文本編碼器把它們編碼成 N 個(gè)圖像向量和 N 個(gè)文本向量然后算一個(gè) N×N 的相似度矩陣。對(duì)角線上的 N 個(gè)是真實(shí)配對(duì)正樣本其余 N2-N 個(gè)是錯(cuò)配負(fù)樣本。訓(xùn)練就是讓對(duì)角線上的相似度盡量高非對(duì)角線盡量低。這就是所謂的InfoNCE 對(duì)比損失。這個(gè)設(shè)計(jì)的關(guān)鍵在于CLIP 從來(lái)不需要人工標(biāo)注這張圖是貓它只需要這張圖和這句話是一起的?;ヂ?lián)網(wǎng)上天然存在大量圖文共現(xiàn)的數(shù)據(jù)這讓 CLIP 能吃到幾乎無(wú)限規(guī)模的訓(xùn)練信號(hào)。這也是它泛化能力強(qiáng)的根本原因——它學(xué)到的不是某個(gè)固定類別的判別邊界而是一個(gè)圖文共享的語(yǔ)義空間。1.2 雙塔結(jié)構(gòu)圖像和文本各走各的路CLIP 是典型的雙塔dual-encoder結(jié)構(gòu)。圖像塔通常用 ViT 或者 ResNet文本塔用 Transformer。兩塔在訓(xùn)練時(shí)各自獨(dú)立編碼最后只在算相似度的時(shí)候才碰面。這個(gè)設(shè)計(jì)帶來(lái)一個(gè)非常實(shí)用的好處圖像特征可以預(yù)先算好緩存起來(lái)。做檢索的時(shí)候你不需要每次把圖片重新過(guò)一遍編碼器只要把文本編碼后去和緩存的圖像向量做點(diǎn)積就行速度極快。但雙塔也有代價(jià)。因?yàn)閳D像和文本在編碼階段完全沒(méi)有交互模型沒(méi)法做細(xì)粒度的跨模態(tài)推理。比如你問(wèn)圖中左邊那只貓是什么顏色CLIP 就很難精確回答因?yàn)樗鼔焊鶝](méi)有左邊這種空間關(guān)系的建模能力它只知道整張圖和整句話的全局相似度。這個(gè)局限恰恰是后來(lái) VLM 要解決的問(wèn)題。1.3 溫度系數(shù)與 logit 縮放一個(gè)容易被忽略的細(xì)節(jié)CLIP 的相似度計(jì)算里有個(gè)可學(xué)習(xí)的溫度系數(shù)temperature通常記作 τ。它作用在 softmax 之前控制相似度分布的尖銳程度。溫度低分布尖銳模型對(duì)正樣本的置信度要求高溫度高分布平緩梯度更柔和。CLIP 把這個(gè)溫度設(shè)成可學(xué)習(xí)參數(shù)讓模型自己在訓(xùn)練中找合適的尺度。這個(gè)細(xì)節(jié)在實(shí)際微調(diào)時(shí)很重要。我見(jiàn)過(guò)不少人微調(diào) CLIP 時(shí)直接固定溫度結(jié)果模型收斂得很別扭。原因是不同數(shù)據(jù)集的相似度數(shù)值范圍差別很大固定溫度會(huì)讓 softmax 要么飽和要么過(guò)于平坦。建議微調(diào)時(shí)保留溫度可學(xué)習(xí)或者至少根據(jù)你的數(shù)據(jù)規(guī)模重新初始化一個(gè)合理的值。2. SigLIP 改了什么從 softmax 到 sigmoid 的那一步2.1 softmax 對(duì)比損失的全局歸一化之痛CLIP 用的 softmax 對(duì)比損失有個(gè)隱含要求它需要在整個(gè) batch 內(nèi)做歸一化。也就是說(shuō)每個(gè)樣本的損失都依賴于 batch 里其他所有樣本。這帶來(lái)兩個(gè)實(shí)際問(wèn)題。第一batch 必須足夠大。batch 小的時(shí)候負(fù)樣本太少對(duì)比信號(hào)弱模型學(xué)不好。CLIP 當(dāng)年用了三萬(wàn)多的 batch size這個(gè)規(guī)模對(duì)絕大多數(shù)團(tuán)隊(duì)來(lái)說(shuō)根本玩不起。第二多卡訓(xùn)練時(shí)通信開(kāi)銷大。因?yàn)橐缈ㄗ鋈謿w一化梯度同步和 all-gather 操作很重?cái)U(kuò)展性受限。2.2 sigmoid 損失把多分類拆成多個(gè)二分類SigLIP 的思路很直接既然 softmax 需要全局歸一化那我干脆不用 softmax改用sigmoid。具體來(lái)說(shuō)它不再把 N×N 的相似度矩陣當(dāng)成一個(gè)多分類問(wèn)題每行選一個(gè)正確列而是把每個(gè)格子當(dāng)成一個(gè)獨(dú)立的二分類問(wèn)題——這個(gè)圖文對(duì)是真配對(duì)還是假配對(duì)正樣本標(biāo)簽為 1負(fù)樣本標(biāo)簽為 0各自算 binary cross-entropy最后求和。這個(gè)改動(dòng)看似小影響卻很大。因?yàn)槊總€(gè)格子的損失只依賴它自己不再需要跨樣本的全局歸一化。這意味著 batch 可以小很多多卡訓(xùn)練時(shí)也不用做昂貴的全局同步。SigLIP 論文里明確說(shuō)了在小 batch 下它的表現(xiàn)明顯優(yōu)于 CLIP而且訓(xùn)練更穩(wěn)定。2.3 實(shí)際選型什么時(shí)候用 CLIP什么時(shí)候用 SigLIP從我自己的使用經(jīng)驗(yàn)看選型主要看兩個(gè)維度算力規(guī)模和下游任務(wù)。維度CLIPSigLIP訓(xùn)練 batch 需求大數(shù)萬(wàn)級(jí)小數(shù)千級(jí)即可多卡擴(kuò)展性一般需全局歸一化好無(wú)全局依賴小數(shù)據(jù)微調(diào)容易過(guò)擬合相對(duì)更穩(wěn)零樣本分類成熟生態(tài)全表現(xiàn)相當(dāng)或更好生態(tài)與工具鏈極豐富逐步完善如果你是要做零樣本分類、圖文檢索而且手頭有現(xiàn)成的 CLIP 權(quán)重和工具鏈直接用 CLIP 系列完全沒(méi)問(wèn)題生態(tài)成熟省事。如果你要自己從頭訓(xùn)或者在小規(guī)模數(shù)據(jù)上微調(diào)SigLIP 的 sigmoid 損失會(huì)讓你省心很多尤其是 batch 上不去的時(shí)候?,F(xiàn)在不少開(kāi)源 VLM 的視覺(jué)塔已經(jīng)默認(rèn)換成 SigLIP 了比如一些主流的開(kāi)源多模態(tài)模型視覺(jué)編碼器用的就是 SigLIP 的變體。提示SigLIP 的 sigmoid 損失在實(shí)現(xiàn)時(shí)要注意正負(fù)樣本的平衡。如果負(fù)樣本遠(yuǎn)多于正樣本N×N 矩陣?yán)镞@是必然的直接求和會(huì)讓負(fù)樣本主導(dǎo)梯度。常見(jiàn)做法是對(duì)正負(fù)樣本的損失做加權(quán)或者用 focal 式的調(diào)制。3. 視覺(jué)特征怎么翻譯成語(yǔ)言模型能吃的 token3.1 投影層一座必須存在的橋CLIP 和 SigLIP 輸出的圖像特征是固定維度的向量序列比如 ViT-L/14 輸出的是 768 維。而大語(yǔ)言模型的輸入是詞嵌入維度可能是 4096。這兩者維度不一樣語(yǔ)義空間也不一樣。所以中間必須有一個(gè)投影層projection layer把視覺(jué)特征映射到語(yǔ)言模型的嵌入空間。這個(gè)投影層的形式有好幾種。最簡(jiǎn)單的是一個(gè)線性層Linear直接把視覺(jué)維度映射到語(yǔ)言維度。稍微復(fù)雜點(diǎn)的是 MLP比如兩層帶 GELU 激活的全連接。還有用Q-Former的比如 BLIP-2 那套用一組可學(xué)習(xí)的 query 向量去查詢視覺(jué)特征壓縮成固定數(shù)量的視覺(jué) token。不同方案各有取舍線性層參數(shù)少、訓(xùn)練快但表達(dá)能力有限Q-Former 表達(dá)能力強(qiáng)能把變長(zhǎng)的視覺(jué)特征壓成固定長(zhǎng)度但訓(xùn)練更復(fù)雜需要額外的預(yù)訓(xùn)練階段。3.2 視覺(jué) token 的數(shù)量一個(gè)被低估的工程問(wèn)題一張圖經(jīng)過(guò) ViT 編碼后會(huì)產(chǎn)生多少個(gè)視覺(jué) token以 ViT-L/14 為例輸入 224×224 的圖patch size 是 14那么 patch 數(shù)量是 (224/14)2 256 個(gè)加上一個(gè) cls token 就是 257 個(gè)。如果輸入分辨率提高到 336×336patch 數(shù)就變成 576 個(gè)。這些 token 全都要送進(jìn)語(yǔ)言模型會(huì)占用大量上下文長(zhǎng)度。這是個(gè)很現(xiàn)實(shí)的工程問(wèn)題。語(yǔ)言模型的上下文窗口是有限的如果一張圖就吃掉幾百個(gè) token那多圖輸入或者長(zhǎng)對(duì)話就很容易爆。所以實(shí)際系統(tǒng)里通常要做視覺(jué) token 壓縮。常見(jiàn)手段包括用 Q-Former 壓到固定的 32 或 64 個(gè) token用池化pooling對(duì)相鄰 patch 特征做聚合或者用 perceiver 式的交叉注意力做重采樣。我實(shí)測(cè)下來(lái)把視覺(jué) token 從 576 壓到 64在多數(shù)問(wèn)答任務(wù)上性能損失很小但顯存和延遲改善非常明顯。3.3 拼接方式視覺(jué) token 放在哪影響很大視覺(jué) token 投影完之后怎么和文本 token 拼在一起送進(jìn)語(yǔ)言模型這也有講究。最常見(jiàn)的是前綴拼接把視覺(jué) token 放在文本 token 前面形成 [視覺(jué)token][文本token] 的序列。語(yǔ)言模型的自注意力機(jī)制會(huì)讓后面的文本 token 去 attend 前面的視覺(jué) token從而實(shí)現(xiàn)看圖。但前綴拼接有個(gè)問(wèn)題視覺(jué) token 和文本 token 在語(yǔ)義上是有斷層的模型需要額外的訓(xùn)練才能學(xué)會(huì)跨越這個(gè)斷層。有些方案會(huì)在視覺(jué)和文本之間插入特殊的分隔 token或者用特殊的 attention mask 來(lái)控制可見(jiàn)性。還有的方案比如一些早期工作用交叉注意力層讓文本 token 通過(guò) cross-attention 去查詢視覺(jué)特征而不是簡(jiǎn)單拼接。這兩種路線各有擁躉前綴拼接實(shí)現(xiàn)簡(jiǎn)單、易于擴(kuò)展交叉注意力則更接近原生多模態(tài)的設(shè)計(jì)。4. VLM 的訓(xùn)練范式凍結(jié)、對(duì)齊、聯(lián)合到底怎么選4.1 三階段訓(xùn)練為什么不能一步到位現(xiàn)在主流的 VLM 訓(xùn)練基本遵循一個(gè)多階段范式雖然具體劃分各家不同但核心邏輯類似。第一階段是視覺(jué)-語(yǔ)言對(duì)齊。這時(shí)候通常凍結(jié)視覺(jué)編碼器和語(yǔ)言模型只訓(xùn)練中間的投影層。目的是讓投影層學(xué)會(huì)把視覺(jué)特征映射到語(yǔ)言模型能理解的語(yǔ)義空間。這個(gè)階段數(shù)據(jù)量可以很大但訓(xùn)練目標(biāo)相對(duì)簡(jiǎn)單就是圖文對(duì)或者簡(jiǎn)單的描述生成。第二階段是指令微調(diào)。這時(shí)候會(huì)解凍語(yǔ)言模型有時(shí)也解凍視覺(jué)塔的高層用圖文指令數(shù)據(jù)訓(xùn)練讓模型學(xué)會(huì)按照人類指令去描述圖像、回答問(wèn)題。這個(gè)階段的數(shù)據(jù)質(zhì)量比數(shù)量更重要需要精心構(gòu)造的問(wèn)答對(duì)。第三階段是偏好對(duì)齊可選。用人類反饋或者 AI 反饋來(lái)進(jìn)一步優(yōu)化模型的輸出風(fēng)格和有用性類似語(yǔ)言模型里的 RLHF/DPO。為什么要分階段因?yàn)槿绻簧蟻?lái)就聯(lián)合訓(xùn)練所有參數(shù)視覺(jué)塔的梯度會(huì)非常嘈雜容易把預(yù)訓(xùn)練好的視覺(jué)表征破壞掉。分階段訓(xùn)練相當(dāng)于先搭好橋再讓兩岸的交通順暢起來(lái)。4.2 凍結(jié)視覺(jué)塔 vs 解凍一個(gè)反復(fù)被討論的取舍視覺(jué)塔到底該不該解凍這個(gè)問(wèn)題在社區(qū)里爭(zhēng)論了很久。我的經(jīng)驗(yàn)是看你的數(shù)據(jù)規(guī)模和任務(wù)類型。如果你的下游任務(wù)和預(yù)訓(xùn)練視覺(jué)塔的領(lǐng)域差異很大比如醫(yī)學(xué)影像、遙感圖像那解凍視覺(jué)塔至少解凍高層是必要的否則視覺(jué)特征根本不適配你的領(lǐng)域。但解凍的代價(jià)是顯存占用上升、訓(xùn)練不穩(wěn)定、容易過(guò)擬合。這時(shí)候通常用較小的學(xué)習(xí)率配合 layer-wise learning rate decay。如果下游任務(wù)是通用的圖文問(wèn)答而且數(shù)據(jù)量不大那凍結(jié)視覺(jué)塔、只訓(xùn)投影層和語(yǔ)言模型往往性價(jià)比最高。我做過(guò)對(duì)比實(shí)驗(yàn)在幾萬(wàn)條通用 VQA 數(shù)據(jù)上凍結(jié)視覺(jué)塔的方案和全解凍方案性能差距在 1-2 個(gè)點(diǎn)以內(nèi)但訓(xùn)練成本差了好幾倍。4.3 數(shù)據(jù)配比視覺(jué)指令數(shù)據(jù)的隱形陷阱做 VLM 微調(diào)數(shù)據(jù)配比是個(gè)大坑。很多人把大量純文本指令數(shù)據(jù)和圖文指令數(shù)據(jù)混在一起訓(xùn)結(jié)果發(fā)現(xiàn)模型的語(yǔ)言能力沒(méi)退化但視覺(jué)能力提升很慢。原因在于圖文數(shù)據(jù)的比例被稀釋了。我的建議是在視覺(jué)指令微調(diào)階段圖文數(shù)據(jù)應(yīng)該占主導(dǎo)純文本數(shù)據(jù)只保留一小部分用來(lái)防止語(yǔ)言能力災(zāi)難性遺忘。具體比例沒(méi)有定論但圖文:純文本在 4:1 到 10:1 之間是比較常見(jiàn)的區(qū)間。另外圖文數(shù)據(jù)的任務(wù)多樣性比單一任務(wù)的數(shù)據(jù)量更重要。描述、問(wèn)答、推理、定位這幾類任務(wù)都要有否則模型容易偏科。5. 本地部署 VLM 時(shí)踩過(guò)的那些坑5.1 顯存不夠視覺(jué)塔和語(yǔ)言模型誰(shuí)更吃顯存本地部署 VLM第一個(gè)攔路虎就是顯存。很多人以為語(yǔ)言模型是大頭其實(shí)視覺(jué)塔在高分辨率下也很吃顯存。ViT 的注意力是 patch 數(shù)量的平方復(fù)雜度分辨率翻倍patch 數(shù)翻四倍注意力矩陣就翻十六倍。所以如果你要處理高分辨率圖像視覺(jué)塔的顯存占用可能超出預(yù)期。實(shí)操上幾個(gè)有效的省顯存手段降低輸入分辨率但會(huì)損失細(xì)節(jié)、用梯度檢查點(diǎn)gradient checkpointing、把視覺(jué)塔量化到 FP16 或 INT8。我實(shí)測(cè)下來(lái)把視覺(jué)塔單獨(dú)量化到 INT8精度損失很小但顯存能省下不少。5.2 圖像預(yù)處理被忽視的對(duì)齊問(wèn)題CLIP 和 SigLIP 在訓(xùn)練時(shí)對(duì)圖像做了特定的預(yù)處理resize 到固定尺寸、歸一化用的均值和方差也是固定的。如果你部署時(shí)預(yù)處理不一致視覺(jué)特征就會(huì)偏移下游表現(xiàn)會(huì)明顯下降。這個(gè)坑我踩過(guò)——當(dāng)時(shí)用了默認(rèn)的圖像加載庫(kù)歸一化參數(shù)和訓(xùn)練時(shí)不一致結(jié)果模型回答質(zhì)量肉眼可見(jiàn)地變差。后來(lái)統(tǒng)一了預(yù)處理流程問(wèn)題就消失了。注意不同視覺(jué)塔的預(yù)處理參數(shù)不一樣。CLIP 用的是 OpenAI 那套均值和方差SigLIP 用的是另一套。部署前一定要查清楚你用的權(quán)重對(duì)應(yīng)哪套預(yù)處理別想當(dāng)然。5.3 視覺(jué) token 與上下文長(zhǎng)度的博弈前面提過(guò)視覺(jué) token 會(huì)占用上下文。本地部署時(shí)如果你的推理框架對(duì)上下文長(zhǎng)度有限制多圖輸入或者高分辨率輸入很容易觸發(fā)截?cái)?。這時(shí)候要么壓縮視覺(jué) token要么增大上下文窗口但顯存會(huì)漲。我的做法是根據(jù)任務(wù)動(dòng)態(tài)調(diào)整單圖問(wèn)答用較高分辨率多圖對(duì)比用較低分辨率加 token 壓縮在效果和資源之間找平衡。5.4 配置文件格式Y(jié)AML 還是別的現(xiàn)在不少本地部署工具用 YAML 來(lái)管理配置參數(shù)模型路徑、量化方式、上下文長(zhǎng)度、采樣參數(shù)都寫在里面。YAML 的好處是可讀性好、層級(jí)清晰改起來(lái)直觀。但要注意 YAML 對(duì)縮進(jìn)極其敏感一個(gè)空格錯(cuò)了整個(gè)配置就廢了。我建議改配置時(shí)用帶 YAML 校驗(yàn)的編輯器改完先跑一遍語(yǔ)法檢查再啟動(dòng)能省不少排查時(shí)間。6. 從特征對(duì)齊到真正看懂還差什么6.1 對(duì)比學(xué)習(xí)學(xué)到的是全局相似不是細(xì)粒度理解回到最開(kāi)始的問(wèn)題CLIP 和 SigLIP 把視覺(jué)特征對(duì)齊到了文本空間但這個(gè)對(duì)齊是全局的、粗粒度的。它們擅長(zhǎng)判斷這張圖整體上是不是關(guān)于這個(gè)主題但不擅長(zhǎng)回答圖中第三個(gè)物體是什么顏色這種需要空間和關(guān)系推理的問(wèn)題。VLM 通過(guò)把視覺(jué)特征接進(jìn)語(yǔ)言模型借助語(yǔ)言模型的推理能力在一定程度上彌補(bǔ)了這個(gè)短板。但要注意視覺(jué)塔本身的能力上限決定了 VLM 的視覺(jué)理解上限。如果視覺(jué)塔壓根沒(méi)編碼某個(gè)細(xì)節(jié)語(yǔ)言模型再?gòu)?qiáng)也推理不出來(lái)。6.2 視覺(jué)特征增強(qiáng)幾個(gè)實(shí)用的方向如果你想讓 VLM 的視覺(jué)理解更強(qiáng)除了換更大的視覺(jué)塔還有幾個(gè)方向可以試。一是多尺度特征融合把不同分辨率的視覺(jué)特征拼起來(lái)兼顧全局和細(xì)節(jié)。二是區(qū)域級(jí)特征先用檢測(cè)或分割模型框出感興趣區(qū)域再對(duì)每個(gè)區(qū)域單獨(dú)編碼喂給語(yǔ)言模型。三是視覺(jué) token 的層次化組織讓語(yǔ)言模型能按需關(guān)注不同粒度的視覺(jué)信息。這幾個(gè)方向在近期的研究里都有不少探索實(shí)際效果因任務(wù)而異。6.3 一個(gè)常被問(wèn)的問(wèn)題VLM 能替代專用視覺(jué)模型嗎經(jīng)常有人問(wèn)有了 VLM是不是就不用單獨(dú)訓(xùn)練檢測(cè)、分割模型了。我的看法是短期內(nèi)不能替代但能互補(bǔ)。VLM 強(qiáng)在開(kāi)放域的問(wèn)答和推理弱在精確定位和密集預(yù)測(cè)。檢測(cè)和分割任務(wù)需要像素級(jí)的輸出VLM 的輸出是文本 token天然不適合。但 VLM 可以作為調(diào)度器理解用戶意圖后調(diào)用專用的視覺(jué)模型這種組合在實(shí)際系統(tǒng)里越來(lái)越常見(jiàn)。7. 一些實(shí)操層面的經(jīng)驗(yàn)補(bǔ)充7.1 微調(diào) CLIP 時(shí)學(xué)習(xí)率怎么設(shè)微調(diào) CLIP 的視覺(jué)塔學(xué)習(xí)率通常要比從頭訓(xùn)練小一到兩個(gè)數(shù)量級(jí)。我一般從 1e-5 到 5e-6 起步配合 warmup。文本塔的學(xué)習(xí)率可以稍大一點(diǎn)因?yàn)槲谋舅念A(yù)訓(xùn)練表征相對(duì)更通用微調(diào)空間更大。如果只訓(xùn)投影層學(xué)習(xí)率可以到 1e-4 甚至更高因?yàn)橥队皩邮请S機(jī)初始化的需要快速收斂。7.2 評(píng)估 VLM 不能只看 lossVLM 的訓(xùn)練 loss 和實(shí)際生成質(zhì)量的相關(guān)性沒(méi)那么強(qiáng)。loss 降了生成的可能還是胡言亂語(yǔ)。所以評(píng)估一定要用生成式指標(biāo)比如人工評(píng)估、GPT 打分、或者任務(wù)特定的準(zhǔn)確率。我習(xí)慣在訓(xùn)練過(guò)程中定期抽樣生成人眼看幾條比盯著 loss 曲線有用得多。7.3 視覺(jué)塔的選擇不是越大越好ViT-L 比 ViT-B 大但不一定在你的任務(wù)上更好。大視覺(jué)塔需要更多數(shù)據(jù)才能訓(xùn)好小數(shù)據(jù)下反而容易過(guò)擬合。而且大視覺(jué)塔的推理延遲高本地部署時(shí)體驗(yàn)會(huì)打折。我的建議是先用中等規(guī)模的視覺(jué)塔跑通流程確認(rèn)任務(wù)可行后再考慮升級(jí)。7.4 關(guān)于視覺(jué)特征增強(qiáng)的一個(gè)誤區(qū)有人覺(jué)得視覺(jué)特征增強(qiáng)就是簡(jiǎn)單地把特征維度堆高、把 token 數(shù)加多。其實(shí)不然。特征的質(zhì)量比數(shù)量重要。一個(gè)經(jīng)過(guò)良好對(duì)齊的 64 維視覺(jué) token可能比一堆沒(méi)對(duì)齊的高維特征更有用。增強(qiáng)的核心是讓視覺(jué)特征攜帶更多對(duì)下游任務(wù)有用的信息而不是單純?cè)黾有畔⒘俊?. 寫在折騰之后從 CLIP 到 SigLIP 再到 VLM這條線走下來(lái)我最大的體會(huì)是視覺(jué)進(jìn)入語(yǔ)言模型這件事本質(zhì)上是一個(gè)翻譯問(wèn)題。CLIP 和 SigLIP 解決的是把圖像翻譯成文本語(yǔ)義空間里的向量投影層解決的是把這個(gè)向量翻譯成語(yǔ)言模型能吃的 token而 VLM 的訓(xùn)練范式解決的是讓語(yǔ)言模型學(xué)會(huì)理解這種翻譯后的輸入。每一層翻譯都會(huì)損失信息也會(huì)引入偏差理解這些損失和偏差在哪比記住某個(gè)模型的參數(shù)量更有用。實(shí)際做項(xiàng)目的時(shí)候我越來(lái)越傾向于夠用就好的原則。不是每個(gè)任務(wù)都需要最大的視覺(jué)塔、最多的視覺(jué) token、最復(fù)雜的訓(xùn)練范式。先跑通最小可行流程測(cè)出瓶頸在哪再針對(duì)性優(yōu)化往往比一上來(lái)就堆配置更高效。視覺(jué)大語(yǔ)言模型這個(gè)方向還在快速演進(jìn)今天的最佳實(shí)踐明天可能就被推翻但底層的對(duì)齊邏輯和工程取舍短期內(nèi)不會(huì)變。把這些搞明白換什么模型都能快速上手。