再說(shuō)到語(yǔ)義標(biāo)簽之前在博文[1,2]中曾經(jīng)簡(jiǎn)單地介紹過(guò)語(yǔ)義標(biāo)簽(semantic label)與多模態(tài)模型之間的一些關(guān)系,為了對(duì)這個(gè)話題有著更全面的了解,請(qǐng)讀者先移步[1,2]對(duì)語(yǔ)義標(biāo)簽進(jìn)行簡(jiǎn)單了解。在[1]的最后,我們談到
這些任務(wù)都是需要很高層次的語(yǔ)義標(biāo)注才能實(shí)現(xiàn)的。通常來(lái)說(shuō),此時(shí)人工標(biāo)注能做到的就是給定一個(gè)圖片,讓多個(gè)人以相近的標(biāo)準(zhǔn)去進(jìn)行描述,然后形成圖文對(duì)<image, text#1, text#2...text#n>,讓模型進(jìn)行學(xué)習(xí)
作為語(yǔ)義標(biāo)簽中最為切實(shí)可行的方案,對(duì)圖片進(jìn)行文字描述(caption)是可行的,而且互聯(lián)網(wǎng)上也存在著海量這樣的數(shù)據(jù)。通常來(lái)說(shuō),這類型的數(shù)據(jù)如Fig 1.1所示。
Fig 1.1 圖片-文本對(duì)的形式的多模態(tài)數(shù)據(jù)集,常用于進(jìn)行預(yù)訓(xùn)練。通常對(duì)于一張圖片,會(huì)有一個(gè)以上的文本描述。
在CLIP[3]這篇工作中,作者提出了對(duì)比圖文預(yù)訓(xùn)練 (Contrastive Language-Image Pretraining)方法對(duì)從網(wǎng)絡(luò)中收集到的4億(400M)條圖文對(duì)進(jìn)行預(yù)訓(xùn)練,因此這個(gè)工作也是采用語(yǔ)義標(biāo)簽對(duì)模型進(jìn)行預(yù)訓(xùn)練的經(jīng)典例子。在這個(gè)過(guò)程中,值得注意的是作者團(tuán)隊(duì)采用了巨大的batch size,一個(gè)batch size竟達(dá)到了32,768,當(dāng)然這也需要巨量的算力資源。這種“大力出奇跡”的做法,使得CLIP模型的zero-shot能力驚人地出色,在眾多數(shù)據(jù)集中甚至超過(guò)了采用全監(jiān)督的SOTA方法。我們接下來(lái)的篇幅主要看看CLIP的模型設(shè)計(jì),訓(xùn)練策略以及最主要的,作者團(tuán)隊(duì)在論文中的實(shí)驗(yàn)結(jié)果和分析。
對(duì)比圖文預(yù)訓(xùn)練 CLIPCLIP的模型結(jié)構(gòu)并沒(méi)有特別多值得注意的地方,其采用的是經(jīng)典的雙塔結(jié)構(gòu),對(duì)于圖片域和文本域有著不同的圖片編碼器(Image Encoder)和文本編碼器(Text Encoder)。其中文本編碼器采用了經(jīng)典的Transformer結(jié)構(gòu)[4],而圖片編碼器則采用了兩種:第一種是改進(jìn)后的ResNet,作者選擇用基于注意力的池化層去替代ResNet的全局池化層,此處的注意力機(jī)制同樣是與Transformer類似的多頭QKV注意力;作者同樣采用ViT結(jié)構(gòu)[5]作為第二種圖片編碼器進(jìn)行實(shí)驗(yàn)。本文用表示文本編碼器,
表示圖片編碼器,
表示一個(gè)batch的圖片,而
表示一個(gè)batch的文本,那么有:
通過(guò)線性映射層將圖片特征和文本特征
都映射到相同的嵌入特征維度
? ,那么有:
為了保證數(shù)值尺度的一致性,對(duì)其進(jìn)行L2標(biāo)準(zhǔn)化,即是:
那么有:
Fig 2.1 CLIP的負(fù)樣本采樣,采用了in-batch負(fù)采樣的方法。其CLIP模型也是經(jīng)典的雙塔結(jié)構(gòu)。此時(shí)如Fig 2.1所示,對(duì)圖片嵌入特征和文本嵌入特征進(jìn)行矩陣相乘。那么形成的打分矩陣上,對(duì)角線上都是配對(duì)的正樣本對(duì)打分,而矩陣的其他元素,則是由同個(gè)batch內(nèi)的圖片和不配對(duì)的文本(相反亦然)組成的負(fù)樣本。這種策略可以形成個(gè)負(fù)樣本。整個(gè)過(guò)程可以用公式(2.5)描述。
而后只需要對(duì)的每一行和每一列求交叉熵?fù)p失,并且加和起來(lái)即形成了總損失了。其中每一行可以視為是同個(gè)圖片,與同個(gè)batch內(nèi)其他所有樣本對(duì)的文本進(jìn)行組合構(gòu)成的負(fù)樣本對(duì)形成的損失,而每一列自然就是同個(gè)文本,對(duì)于每個(gè)圖片進(jìn)行組合而構(gòu)成的損失了。整個(gè)過(guò)程如下面的偽代碼所示。
# 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
CLIP的模型結(jié)構(gòu)和正負(fù)樣本組成策略并不復(fù)雜,其負(fù)樣本構(gòu)成方式是經(jīng)典的batch negative方式,也即是從batch內(nèi)部去構(gòu)成負(fù)樣本,而CLIP的貢獻(xiàn)點(diǎn)在于采用了海量的圖文對(duì)數(shù)據(jù)和超大batch size進(jìn)行預(yù)訓(xùn)練,并不在于其模型結(jié)構(gòu)。我們看一下CLIP是如何去進(jìn)行zero-shot任務(wù)的。如Fig 2.2所示,考慮到大部分的數(shù)據(jù)集的標(biāo)簽都是以單詞的形式存在的,比如“bird”,“cat”等等,然而在預(yù)訓(xùn)練階段的文本描述大多都是某個(gè)短句,為了填補(bǔ)這種數(shù)據(jù)分布上的差別,作者考慮用“指示上下文”(guide context)對(duì)標(biāo)簽進(jìn)行擴(kuò)展。以Fig 2.2為例子,可以用a photo of a <LABEL>.作為文本端的輸入,其中的<LABEL>恰恰是需要預(yù)測(cè)的zero-shot標(biāo)簽。
Fig 2.2 將CLIP應(yīng)用到zero-shot中,需要文本端采用“指示上下文”的形式。
考慮到以單詞作為標(biāo)簽存在多義的情況,比如在Oxford-IIIT Pet dataset 數(shù)據(jù)集中boxer表示斗牛犬,而在其他數(shù)據(jù)集中則可能表示拳擊運(yùn)動(dòng);在ImageNet中,crane同時(shí)表示了起重機(jī)和鶴。這種詞語(yǔ)的多義顯然對(duì)是因?yàn)槿鄙賹?duì)標(biāo)簽的上下文描述導(dǎo)致的。為了解決這種問(wèn)題,作者在指示上下文中添加了一些提示標(biāo)簽類型的詞語(yǔ),比如A photo of a <LABEL>, a type of pet.。作者將這個(gè)方法稱之為“prompt engineering”。在合適地選取了不同的指示上下文,并且將其打分進(jìn)行ensemble之后。作者發(fā)現(xiàn)這些Tricks竟能在zero-shot實(shí)驗(yàn)上提高5個(gè)絕對(duì)百分位,如Fig 2.3所示。
Fig 2.3 采用了prompt engineering和ensemble之后,可以在zero-shot指標(biāo)上提高5個(gè)絕對(duì)百分位。
這個(gè)說(shuō)明了通過(guò)指示上下文,提供標(biāo)簽的上下文信息可以有效地提高zero-shot效果。在zero-shot這塊,作者也做了充足的實(shí)驗(yàn)。首先作者通過(guò)和經(jīng)過(guò)強(qiáng)監(jiān)督學(xué)習(xí)的Resnet-50提取的特征對(duì)比,任務(wù)都是分類任務(wù),因此作者基于Resnet-50和CLIP提取出的特征,只是訓(xùn)練了最后的分類器,分類結(jié)果如Fig 2.4所示??梢园l(fā)現(xiàn)僅僅通過(guò)無(wú)監(jiān)督的對(duì)比學(xué)習(xí)預(yù)訓(xùn)練得到的特征,即便是和強(qiáng)監(jiān)督模型特征相比也是不分伯仲的。同時(shí)可以發(fā)現(xiàn),zero-shot CLIP在一些動(dòng)作識(shí)別任務(wù)中,比如Kinetics 700,UCF 101中有著比較大的提高,作者認(rèn)為這可能是因?yàn)槟壳暗奈谋久枋鲋杏泻芏嘁詣?dòng)詞,動(dòng)作為中心的句子導(dǎo)致的。
Fig 2.4 CLIP的zero-shot性能,與Resnet-50的特征進(jìn)行對(duì)比。
作者同樣將CLIP應(yīng)用在了few-shot中,如Fig 2.5所示,橫坐標(biāo)是few-shot中的X-ways,指的是用多少有標(biāo)注的樣本進(jìn)行Linear Probe的分類器訓(xùn)練(這個(gè)過(guò)程中僅僅采用了預(yù)訓(xùn)練模型的特征,而線性分類器需要重新訓(xùn)練)。從圖中可以發(fā)現(xiàn)zero-shot CLIP大概相當(dāng)于 4-ways few-shot CLIP的結(jié)果,而顯然的,Linear Probe CLIP比其他few-shot基線模型有著更為優(yōu)秀而穩(wěn)定的表現(xiàn),領(lǐng)先了有10多個(gè)絕對(duì)百分點(diǎn)。這個(gè)實(shí)驗(yàn)同時(shí)也揭露了zero-shot和few-shot的區(qū)別,在監(jiān)督學(xué)習(xí)中模型需要基于標(biāo)簽學(xué)習(xí)出相同類別樣本的共同特征,不同類樣本的差別,因此通常都需要更多的標(biāo)注數(shù)據(jù)才能達(dá)到較理想的效果。如果沒(méi)有太多的標(biāo)注數(shù)據(jù)提供類別的上下文信息,那么性能可能比zero-shot還差。而且,從預(yù)訓(xùn)練中學(xué)習(xí)到的概念可能是很通用的,比如一張圖中可能有很多視覺(jué)實(shí)體,如果不提供一定的標(biāo)注去聲明任務(wù)需要注意的視覺(jué)實(shí)體,那么就無(wú)法完成任務(wù)。而zero-shot由于是直接學(xué)習(xí)概念,并且和概念進(jìn)行對(duì)比,似乎就不會(huì)存在這個(gè)問(wèn)題。
Fig 2.5 few-shot CLIP與其他few-shot基線模型的對(duì)別。
筆者的個(gè)人啟示基于雙塔結(jié)構(gòu)的CLIP模型在數(shù)據(jù)量足夠的情況下,可以在預(yù)訓(xùn)練階段學(xué)習(xí)到很多通用的視覺(jué)語(yǔ)義概念,并且給下游任務(wù)提供非常大的幫助。受限于端到端的方式,目前的負(fù)樣本數(shù)量仍然是受限于mini batch size的大小,在MoCo中給出了一個(gè)可行的解決方案[6,7]。這種預(yù)訓(xùn)練方式能在大規(guī)模的商業(yè)搜索,推薦廣告系統(tǒng)中廣泛應(yīng)用,值得我們研究。
Reference
[1]. https://fesian.blog.csdn.net/article/details/114958239
[2]. https://fesian.blog.csdn.net/article/details/118256321
[3]. Radford, A., Kim, J. W., Hallacy, C., Ramesh, A., Goh, G., Agarwal, S., … & Sutskever, I. (2021). Learning transferable visual models from natural language supervision. arXiv preprint arXiv:2103.00020.
[4]. Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones,L., Gomez, A. N., Kaiser, ?., and Polosukhin, I. Attention is all you need. In Advances in neural information processing systems, pp. 5998–6008, 2017
[5]. Dosovitskiy, Alexey, Lucas Beyer, Alexander Kolesnikov, Dirk Weissenborn, Xiaohua Zhai, Thomas Unterthiner, Mostafa Dehghani et al. “An image is worth 16x16 words: Transformers for image recognition at scale.” arXiv preprint arXiv:2010.11929 (2020).
[6]. https://fesian.blog.csdn.net/article/details/119515146
[7]. He, K., Fan, H., Wu, Y., Xie, S., & Girshick, R. (2020). Momentum contrast for unsupervised visual representation learning. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (pp. 9729-9738).