日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

对比学习可以使用梯度累积吗?

發布時間:2024/10/8 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对比学习可以使用梯度累积吗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?PaperWeekly 原創 ·?作者?|?蘇劍林

單位?|?追一科技

研究方向?|?NLP、神經網絡

在之前的文章用時間換取效果:Keras 梯度累積優化器中,我們介紹過“梯度累積”,它是在有限顯存下實現大 batch_size 效果的一種技巧。一般來說,梯度累積適用的是 loss 是獨立同分布的場景,換言之每個樣本單獨計算 loss,然后總 loss 是所有單個 loss 的平均或求和。然而,并不是所有任務都滿足這個條件的,比如最近比較熱門的對比學習,每個樣本的 loss 還跟其他樣本有關。

那么,在對比學習場景,我們還可以使用梯度累積來達到大 batch_size 的效果嗎?本文就來分析這個問題。

簡介

一般情況下,對比學習的 loss 可以寫為:

這里的 b 是 batch_size; 是事先給定的標簽,滿足 ,它是一個 one ?hot 矩陣,每一列只有一個 1,其余都為0;而 是樣本 i 和樣本 j 的相似度,滿足 ,一般情況下還有個溫度參數,這里假設溫度參數已經整合到 中,從而簡化記號。模型參數存在于 中,假設為 。

可以驗證,一般情況下:

所以直接將小 batch_size 的對比學習的梯度累積起來,是不等價于大 batch_size 的對比學習的。類似的問題還存在于帶 BN(Batch Normalization)的模型中。

梯度

注意,剛才我們說的是常規的簡單梯度累積不能等效,但有可能存在稍微復雜一些的累積方案的。為此,我們分析式(1)的梯度:

其中 表示不需要對 求 的梯度,也就是深度學習框架的?stop_gradient 算子。上式表明,如果我們使用基于梯度的優化器,那么使用式(1)作為 loss,跟使用 作為 loss,是完全等價的(因為算出來的梯度一模一樣)。

內積

接下來考慮 的計算,一般來說它是向量的內積形式,即 ,參數 在 里邊,這時候:

所以 loss 中的 可以替換為 而效果不變:

第二個等號源于將 那一項的求和下標 i,j 互換而不改變求和結果。

流程

式(5)事實上就已經給出了最終的方案,它可以分為兩個步驟。第一步就是向量:

的計算,這一步不需要求梯度,純粹是預測過程,所以 batch_size 可以比較大;第二步就是把 當作“標簽”傳入到模型中,以 為單個樣本的 loss 進行優化模型,這一步需要求梯度,但它已經轉化為每個樣本的梯度和的形式了,所以這時候就可以用常規的梯度累積了。

假設反向傳播的最大 batch_size 是 b,前向傳播的最大 batch_size 是 nb,那么通過梯度累積讓對比學習達到 batch_size 為 nb 的效果,其格式化的流程如下:

1. 采樣一個 batch 的數據 ,對應的標簽矩陣為 ,初始累積梯度為 g=0;

2. 模型前向計算,得到編碼向量 以及對應的概率矩陣 ;

3. 根據式(6)計算標簽向量 ;

4. 對于 ,執行:

5. 用 g 作為最終梯度更新模型,然后重新執行第 1 步。

總的來說,在計算量上比常規的梯度累積多了一次前向計算。當然,如果前向計算的最大 batch_size 都不能滿足我們的需求,那么也可以分批前向計算,因為我們只需要把各個 算出來存好,而 可以基于 算出來。

最后還要提醒的是,上述流程只是在優化時等效于大 batch_size 模型,也就是說 的梯度等效于原 loss 的梯度,但是它的值并不等于原 loss 的值,因此不能用 作為 loss 來評價模型,它未必是單調的,也未必是非負的,跟原來的 loss 也不具有嚴格的相關性。

問題

上述流程有著跟《節省顯存的重計算技巧也有了 Keras 版了》[1] 介紹的“重計算”一樣的問題,那就是跟 Dropout 并不兼容,這是因為每次更新都涉及到了多次前向計算,每次前向計算都有不一樣的 Dropout,這意味著我們計算標簽向量 時所用的 跟計算梯度時所用的 并不是同一個,導致計算出來的梯度并非最合理的梯度。

這沒有什么好的解決方案,最簡單有效的方法就是在模型中去掉 Dropout。這對于 CV 來說沒啥大問題,因為 CV 的模型基本也不見 Dropout 了;對于 NLP 來說,第一反應能想到的結果就是 SimCSE 沒法用梯度累積,因為 Dropout 是 SimCSE 的基礎。

小結

本文分析了對比學習的梯度累積方法,結果顯示對比學習也可以用梯度累積的,只不過多了一次前向計算,并且需要在模型中去掉 Dropout。本文同樣的思路還可以分析 BN 如何使用梯度累積,有興趣的讀者不妨試試。

參考文獻

[1] https://kexue.fm/archives/7367

更多閱讀

#投 稿?通 道#

?讓你的文字被更多人看到?

如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。

總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?

PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學術熱點剖析科研心得競賽經驗講解等。我們的目的只有一個,讓知識真正流動起來。

?????稿件基本要求:

? 文章確系個人原創作品,未曾在公開渠道發表,如為其他平臺已發表或待發表的文章,請明確標注?

? 稿件建議以?markdown?格式撰寫,文中配圖以附件形式發送,要求圖片清晰,無版權問題

? PaperWeekly 尊重原作者署名權,并將為每篇被采納的原創首發稿件,提供業內具有競爭力稿酬,具體依據文章閱讀量和文章質量階梯制結算

?????投稿通道:

? 投稿郵箱:hr@paperweekly.site?

? 來稿請備注即時聯系方式(微信),以便我們在稿件選用的第一時間聯系作者

? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿

△長按添加PaperWeekly小編

????

現在,在「知乎」也能找到我們了

進入知乎首頁搜索「PaperWeekly」

點擊「關注」訂閱我們的專欄吧

關于PaperWeekly

PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。

總結

以上是生活随笔為你收集整理的对比学习可以使用梯度累积吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。