性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

SigLIP——采用sigmoid損失的圖文預(yù)訓(xùn)練方式

基于對比學(xué)習(xí)的圖文預(yù)訓(xùn)練方式,自從CLIP [1] 橫空出世后,就成為了圖文預(yù)訓(xùn)練的主流方式,引申出了一系列的工作,如ALIGN [3]、FLIP [4]、LiT [5]等。這些工作在數(shù)據(jù)使用、訓(xùn)練效率等上進(jìn)行了探索,但是其核心損失還是采用了infoNCE,也即是對比型的損失。在SigLIP [2] 中,作者提出了基于sigmoid損失的圖文預(yù)訓(xùn)練方式,并且指出采用sigmoid損失能帶來更高效的圖文預(yù)訓(xùn)練效率和效果。在此之前,我們有必要再復(fù)習(xí)下CLIP的基本思想。CLIP是一個(gè)雙塔結(jié)構(gòu),分別有圖片塔f(⋅)和文本塔g(⋅),那么損失可以表達(dá)為式子(1),其中的xi=f(Ii)||f(Ii)||2yi=g(Ti)||g(Ti)||2,是圖片特征和文本特征的L2 normalization后的結(jié)果,t=exp?(t′)為溫度系數(shù),其中t′為可學(xué)習(xí)參數(shù),B為一個(gè)批次(batch)的數(shù)據(jù)。

其基本思想就是從打分矩陣中,從i->tt->i的方向去判斷出正樣本的位置(也就是對角線的位置),注意到由于采用的是softmax形式去歸一化正負(fù)樣本,將其視為了概率分布,因此正負(fù)樣本之間的概率關(guān)系是耦合在一起的,在提高正樣本概率的同時(shí),勢必會(huì)壓低負(fù)樣本的概率。

Fig 1. CLIP的基本結(jié)構(gòu)由圖片塔和文本塔組成,打分矩陣的對角線為正樣本,從i2t和t2i的方向分別計(jì)算infoNCE損失。

而在SigLIP中,損失函數(shù)為式子(2)所示,其中的zij為給定圖片文本對的標(biāo)簽,當(dāng)為成對的正樣本時(shí)候zij=1,當(dāng)不是成對的負(fù)樣本時(shí)候zij=−1。此時(shí)對于正負(fù)樣本來說是解耦的,增加正樣本的概率并不意味著壓低負(fù)樣本的概率。負(fù)樣本數(shù)量的絕對占優(yōu),會(huì)導(dǎo)致在訓(xùn)練初期負(fù)樣本的損失主導(dǎo)了整個(gè)損失,因此引入了一個(gè)可學(xué)習(xí)的偏置項(xiàng)b去緩解初始階段的訓(xùn)練困難問題,此處的b在原文中被初始化為-10,這也容易理解,初始的logit減去一個(gè)較大的值(如-10),使得正負(fù)樣本logit的差別相對不會(huì)很大,在正負(fù)樣本數(shù)量極大不均勻的情況下,可以讓初始狀態(tài)更加均勻,從而不會(huì)帶來過度調(diào)整。

整個(gè)損失的建模,如以下代碼所示:

# img_emb : image model embedding [n, dim]
# txt_emb : text model embedding [n, dim]
# t_prime, b : learnable temperature and bias
# n : mini-batch size
t = exp(t_prime)
zimg = l2_normalize(img_emb)
ztxt = l2_normalize(txt_emb)
logits = dot(zimg, ztxt.T) * t + b
labels = 2 * eye(n) - ones(n) # -1 with diagonal 1
l = -sum(log_sigmoid(labels * logits)) / n

這個(gè)就是SigLIP的核心優(yōu)化點(diǎn),我們先不考慮這個(gè)建模的模型效果,先看到這種建模方式帶來的模型訓(xùn)練的優(yōu)勢。

  • 在CLIP中,正負(fù)樣本是pairwise建模的:由于采用的softmax函數(shù)去建模正負(fù)樣本之間的關(guān)系,而CLIP訓(xùn)練的global batch size一般都很大(如32k),這意味著GPU #1上的正樣本需要見到其他所有GPU上的樣本,并以此作為負(fù)樣本。因此通常都需要匯聚多節(jié)點(diǎn)多卡的特征向量,這個(gè)時(shí)候需要頻繁地調(diào)用all_gather,帶來了沉重的通信代價(jià),也會(huì)拖慢整個(gè)訓(xùn)練過程的速度。
  • 在SigLIP中,正負(fù)樣本是pointwise建模的:采用的sigmoid loss是獨(dú)立對每個(gè)正負(fù)樣本進(jìn)行計(jì)算的,最后再進(jìn)行l(wèi)oss的累加,這意味著可以在本地完成大部分的計(jì)算,在涉及到本地的正樣本和其他設(shè)備的負(fù)樣本進(jìn)行交互計(jì)算的時(shí)候,僅需要很少的gather操作就能完成設(shè)備間向量的交換就可以(對于圖文預(yù)訓(xùn)練來說,交換文本特征向量即可,通信代價(jià)很低),而不需要all_gather操作。

我們著重介紹下SigLIP是如何進(jìn)行分布式訓(xùn)練的,假設(shè)全局的batch size為B,一共有D個(gè)GPU,那么每個(gè)GPU上的batch size為b=B/D,可以將公式(2)的損失拆解為公式(3)所示,在Fig 2. 展示了整個(gè)過程的示意圖,在初始化階段,我們以第一個(gè)GPU為例子,其所包含的樣本為:

此時(shí)GPU 1可以完成一次公式(3)中的C計(jì)算,然后,交換GPU 1和GPU 2的文本編碼器特征向量,既是:

此時(shí)GPU 2完成一次公式(3)中的B計(jì)算,以此類推,直到GPU 1遍歷完所有樣本為止,其他GPU也是如此操作的,最終把所有卡上的損失匯聚即可,也就是A計(jì)算。這個(gè)輪流交換不同GPU之間數(shù)據(jù)的操作,可以稱之為permutation。不難發(fā)現(xiàn),整個(gè)過程的通信成本來自于permutation,一共需要D−1gather操作即可完成一次permutation,而在CLIP中需要對圖文的編碼器特征都進(jìn)行匯聚,因此需要2次all-gather操作。如果all-gather采用ring的話,那么一個(gè)all-gather就是D−1gather操作。由此我們得出一個(gè)SigLIP和CLIP的性能復(fù)雜度對比:

容易發(fā)現(xiàn),SigLIP無論從通信復(fù)雜度,儲(chǔ)存復(fù)雜度還是計(jì)算復(fù)雜度上,都遠(yuǎn)比CLIP更為優(yōu)越。

Fig 2. SigLIP高效的損失計(jì)算示意圖,假設(shè)有3個(gè)設(shè)備,每個(gè)設(shè)備上的batch size為4,global batch size為12。

讓我們再關(guān)注到SigLIP的模型能力表現(xiàn),作者主要對比的是SigLIP,以及將圖片表征固定的SigLiT(從而可以將batch size設(shè)置到非常大,比如100萬)以及CLIP的表現(xiàn)。我們都知道在CLIP中采用對比損失,意味著越大的batch size能極大地提高對比效率,從而提升效果,受限于softmax的內(nèi)存占用情況和GPU卡數(shù)等原因,無法將batch size設(shè)置得很大,在SigLiT中則可以將batch size設(shè)置到百萬以上,從而探索極大batch size情況下的收益。如Fig 3.所示,作者對比了三種模型在batch size進(jìn)行尺度放大后的0-shot能力,訓(xùn)練量都是18B的數(shù)據(jù)量,容易發(fā)現(xiàn)幾點(diǎn)結(jié)論:

  1. 在batch size小于32k的時(shí)候,采用sigmoid的SigLIP的性能都會(huì)優(yōu)于采用softmax的CLIP。
  2. 在batch size足夠大的時(shí)候,CLIP能夠追上,甚至超越SigLIP的表現(xiàn),但是最佳性能仍然是SigLIP@32k情況下得到,從實(shí)際應(yīng)用來看,采用SigLIP能用更少的資源更快的訓(xùn)練速度得到更好的性能。
  3. 從SigLiT的實(shí)驗(yàn)來看,隨著batch size的尺度放大性能將會(huì)在32k batch size的情況下達(dá)到飽和,同時(shí)能觀察到SigLiT在不同batch size下持續(xù)優(yōu)于LiT。繼續(xù)提高batch size將不能帶來更好的收益,甚至?xí)屑?xì)微的性能下降。

Fig 3. SigLiT、SigLIP和CLIP在batch size進(jìn)行尺度放大情況下的0-shot性能對比。

超大的batch size是否需要更長的訓(xùn)練量支持?作者在SigLiT的設(shè)置下,訓(xùn)練了更長時(shí)間(也即是見了更多數(shù)據(jù)量),如Fig 4.所示,在超大batch size,如262k的情況下,對比較小batch size(如8k)提供更長的訓(xùn)練時(shí)間的確能觀察到性能的較大提升。并且也能觀察到在超大batch size下,采用sigmoid和采用softmax的區(qū)別很小,但是在較小batch size(如8k)的情況下,則差距明顯。因此,在資源受限的情況下,采用SigLIP是很劃算的,所需資源少而且性能更強(qiáng)。同時(shí),這個(gè)試驗(yàn)也說明了,超大的batch size并不意味著訓(xùn)練得更快,反而還需要更長的訓(xùn)練時(shí)間。

Fig 4. 擴(kuò)大了見過的數(shù)據(jù)量后,越大的batch size能帶來較為明顯的性能提升,同時(shí),可以觀察到在超大batch size下,采用sigmoid和采用softmax的區(qū)別很小,但是在較小batch size(如8k)的情況下,則差距明顯。

除了batch size的影響外,作者還探索了很多有趣的點(diǎn),包括SigLIP在多語言數(shù)據(jù)集上的表現(xiàn)、大尺度batch size下的訓(xùn)練穩(wěn)定性問題、訓(xùn)練中負(fù)樣本比例的影響、sigmoid訓(xùn)練的魯棒性探索等問題。在多語言數(shù)據(jù)集上,作者發(fā)現(xiàn)性能同樣在32k batch size上達(dá)到了飽和,其他細(xì)節(jié)就不累述了,感興趣的讀者自行翻閱。

筆者比較感興趣的是其他問題,比如在大尺度batch size下,訓(xùn)練容易出現(xiàn)不穩(wěn)定的情況,這個(gè)原因在于在訓(xùn)練過程中,gradient norm會(huì)出現(xiàn)大幅度的尖峰,如Fig 5. 所示,這導(dǎo)致了參數(shù)和訓(xùn)練損失的不穩(wěn)定(也即是尖峰),作者觀察到,如果將Adam優(yōu)化器的β2值從0.999下降到0.95,那么訓(xùn)練過程就會(huì)穩(wěn)定下來。

Fig 5. 大尺度batch size下訓(xùn)練容易出現(xiàn)不穩(wěn)定的情況。

從公式(2)中,注意到SigLIP是對所有正負(fù)樣本的pair進(jìn)行計(jì)算損失然后累加求和的,這意味著可以從中剔除掉負(fù)樣本以控制負(fù)樣本的比例。對于batch size為|B|的一次損失計(jì)算而言,其中有|B|個(gè)正樣本,有|B|2−|B|個(gè)負(fù)樣本,負(fù)樣本其實(shí)在后期很多都是簡單負(fù)樣本,是否可以剔除簡單負(fù)樣本是一個(gè)值得探究的問題。作者提出了幾種消融試驗(yàn),去挑選負(fù)樣本,從而控制正負(fù)樣本比例:

  • 隨機(jī):隨機(jī)挑選負(fù)樣本對,并且對其進(jìn)行剔除。
  • 難負(fù)樣本:把難負(fù)樣本保留下來,即是通過將最高打分的topk負(fù)樣本保留下來。
  • 簡單負(fù)樣本:把簡單負(fù)樣本保留下來,即是將打分最低的lowk負(fù)樣本保留下來。
  • 難負(fù)樣本+對齊訓(xùn)練量:保留難負(fù)樣本的同時(shí),提高訓(xùn)練step數(shù)量以對齊訓(xùn)練數(shù)據(jù)量。

實(shí)驗(yàn)結(jié)果如Fig 6.所示,其中的橫坐標(biāo)為一個(gè)batch內(nèi)的正樣本數(shù)量:負(fù)樣本數(shù)量,其中的1:16k則是不進(jìn)行任何負(fù)樣本剔除的基線,從實(shí)驗(yàn)中可以得出幾個(gè)結(jié)論:

  • 只保留簡單負(fù)樣本,會(huì)使得模型性能完全崩潰。
  • 隨機(jī)剔除負(fù)樣本,也會(huì)損失模型性能。
  • 只保留難負(fù)樣本,對模型性能的損失是最小的,在對齊了訓(xùn)練數(shù)據(jù)量后(因?yàn)樘蕹素?fù)樣本,同個(gè)step下模型講過的數(shù)據(jù)對數(shù)量就少了,因此需要訓(xùn)練更多step去對齊訓(xùn)練數(shù)據(jù)量),性能甚至還能比基線更好,這說明了難負(fù)樣本才是最有價(jià)值的,怎么去合理地挑選難負(fù)樣本是提高模型性能的關(guān)鍵因素。
  • 再看到隨著負(fù)樣本數(shù)量的減少,可學(xué)習(xí)偏置b的值和正負(fù)樣本的平均logit值都在遞增,這也是符合預(yù)期的。有趣的一點(diǎn)是,當(dāng)采用難負(fù)例保留的策略中,隨著負(fù)樣本數(shù)量逐漸減少,正負(fù)例的logit區(qū)分度在加速減少,并且正例的logit變化基本上是平坦的,這個(gè)現(xiàn)象和隨機(jī)丟棄的策略是不同的。對此的解釋是,本來難負(fù)樣本和正樣本就比較接近,在減少了負(fù)樣本數(shù)量,只保留最難的負(fù)樣本后,負(fù)樣本的logit值就加速地上漲,從而導(dǎo)致了區(qū)分度減低的情況,這也是符合預(yù)期的。

Fig 6. 采用不同策略控制損失中的正負(fù)樣本比例的效果對比。

前文已經(jīng)提到了sigmoid和softmax的區(qū)別在于,前者解耦了正負(fù)樣本的概率關(guān)系,這使得即便負(fù)樣本中出現(xiàn)假陰性樣本,也只會(huì)影響自己的損失,而不會(huì)影響到其他樣本,因此這帶來了數(shù)據(jù)的健壯性。作者也進(jìn)行了對應(yīng)的試驗(yàn),如Fig 7.所示,作者對數(shù)據(jù)中的圖片、文本進(jìn)行隨機(jī)加噪、對batch內(nèi)的圖文對進(jìn)行隨機(jī)打亂、或者將上面的加噪方式都進(jìn)行組合,發(fā)現(xiàn)基于sigmoid的訓(xùn)練過程,總是比基于softmax的訓(xùn)練過程更加魯棒。

Fig 7. 基于sigmoid的訓(xùn)練能夠提高訓(xùn)練的健壯性,對數(shù)據(jù)中的噪聲更為魯棒。

總的來說,SigLIP是一個(gè)很棒的工作,作者采用sigmoid損失去取代對比學(xué)習(xí)中的softmax函數(shù),以更小的資源開銷帶來了更好的模型表現(xiàn),目前也被很多多模態(tài)大模型所采用,作為視覺端的編碼器。

Reference

[1]. Radford, A., Kim, J. W., Hallacy, C., Ramesh, A., Goh, G., Agarwal, S., ... & Sutskever, I. (2021, July). Learning transferable visual models from natural language supervision. In International Conference on Machine Learning (pp. 8748-8763). PMLR. aka CLIP

[2]. Zhai, Xiaohua, Basil Mustafa, Alexander Kolesnikov, and Lucas Beyer. "Sigmoid loss for language image pre-training." In Proceedings of the IEEE/CVF International Conference on Computer Vision, pp. 11975-11986. 2023. aka SigLIP

[3]. Jia, C., Yang, Y., Xia, Y., Chen, Y. T., Parekh, Z., Pham, H., ... & Duerig, T. (2021, July). Scaling up visual and vision-language representation learning with noisy text supervision. In International Conference on Machine Learning (pp. 4904-4916). PMLR. Short for ALIGN

[4]. Li, Y., Fan, H., Hu, R., Feichtenhofer, C., & He, K. (2022). Scaling Language-Image Pre-training via Masking. arXiv preprint arXiv:2212.00794. aka FLIP

[5]. Zhai, X., Wang, X., Mustafa, B., Steiner, A., Keysers, D., Kolesnikov, A., & Beyer, L. (2022). Lit: Zero-shot transfer with locked-image text tuning. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (pp. 18123-18133). aka LiT

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 1
收藏 2
關(guān)注 52
成為作者 賺取收益
全部留言
0/200
成為第一個(gè)和作者交流的人吧