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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

又是Dropout两次!这次它做到了有监督任务的SOTA

發(fā)布時間:2024/10/8 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 又是Dropout两次!这次它做到了有监督任务的SOTA 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?PaperWeekly 原創(chuàng) ·?作者?|?蘇劍林

單位?|?追一科技

研究方向?|?NLP、神經(jīng)網(wǎng)絡(luò)

關(guān)注 NLP 新進(jìn)展的讀者,想必對四月份發(fā)布的 SimCSE [1] 印象頗深,它通過簡單的“Dropout 兩次”來構(gòu)造正樣本進(jìn)行對比學(xué)習(xí),達(dá)到了無監(jiān)督語義相似度任務(wù)的全面 SOTA。無獨有偶,最近的論文《R-Drop: Regularized Dropout for Neural Networks》提出了 R-Drop,它將“Dropout兩次”的思想用到了有監(jiān)督任務(wù)中,每個實驗結(jié)果幾乎都取得了明顯的提升。此外,筆者在自己的實驗還發(fā)現(xiàn),它在半監(jiān)督任務(wù)上也能有不俗的表現(xiàn)。

小小的“Dropout兩次”,居然跑出了“五項全能”的感覺,不得不令人驚訝。本文來介紹一下 R-Drop,并分享一下筆者對它背后原理的思考。

論文標(biāo)題:R-Drop: Regularized Dropout for Neural Networks

論文鏈接:https://arxiv.org/abs/2106.14448

代碼鏈接:https://github.com/dropreg/R-Drop

SimCSE

《中文任務(wù)還是 SOTA 嗎?我們給 SimCSE 補充了一些實驗》[1] 中,我們已經(jīng)對 SimCSE 進(jìn)行了介紹。簡單來說,SimCSE 是 NLP 的一種對比學(xué)習(xí)方案,對比學(xué)習(xí)的標(biāo)準(zhǔn)流程是同一個樣本通過不同的數(shù)據(jù)擴(kuò)增手段得到的結(jié)果視為正樣本對,而 batch 內(nèi)的所有其他樣本視為負(fù)樣本,然后就是通過 loss 來縮小正樣本的距離、拉大負(fù)樣本的距離了。

所以難度主要集中在數(shù)據(jù)擴(kuò)增手段上。對于 NLP 來說,我們很難人工構(gòu)建保證語義不變的數(shù)據(jù)擴(kuò)增,所以 SimCSE 干脆不人工進(jìn)行數(shù)據(jù)擴(kuò)增,而是通過“Dropout 兩次”的方式來得到同一個輸入的不同特征向量,并將它們視為正樣本對。奇怪的是,這個簡單的“Dropout 兩次”構(gòu)造正樣本,看上去是一種“無可奈何”的妥協(xié)選擇,但消融實驗卻發(fā)現(xiàn)它幾乎優(yōu)于所有其他數(shù)據(jù)擴(kuò)增方法,令人驚訝之余又讓人感嘆“大道至簡”。

▲ SimCSE示意圖

在實現(xiàn)上,SimCSE 也相當(dāng)簡單,所謂“Dropout 兩次”,只需要將樣本重復(fù)地輸入到模型,然后計算相應(yīng)的 loss 就行了,如上圖所示。由于 Dropout 本身的隨機(jī)性,每個樣本的 Dropout 模式都是不一樣的,所以只要單純地重復(fù)樣本,就可以實現(xiàn)“Dropout 兩次”的效果。

R-Drop

從結(jié)果上來看,SimCSE 就是希望 Dropout對模型結(jié)果不會有太大影響,也就是模型輸出對 Dropout 是魯棒的。所以很明顯,“Dropout 兩次”這種思想是可以推廣到一般任務(wù)的,這就是 R-Drop(Regularized Dropout)。

2.1 分類問題

在筆者看來,R-Drop 跟 SimCSE 是高度相關(guān)的,甚至 R-Drop 應(yīng)該是受到了 SimCSE 啟發(fā)的,不過 R-Drop 論文并沒有引用 SimCSE,所以這就比較迷了。

▲?R-Drop示意圖

具體來說,以分類問題為例,訓(xùn)練數(shù)據(jù)為 ,模型為 ,每個樣本的 loss 一般是交叉熵:

在“Dropout 兩次”的情況下,其實我們可以認(rèn)為樣本已經(jīng)通過了兩個略有不同的模型,我們分別記為 和 。這時候 R-Drop 的 loss 分為兩部分,一部分是常規(guī)的交叉熵:

另一部分則是兩個模型之間的對稱 KL 散度,它希望不同 Dropout 的模型輸出盡可能一致:

最終 loss 就是兩個 loss 的加權(quán)和:

也就是說,它在常規(guī)交叉熵的基礎(chǔ)上,加了一項強(qiáng)化模型魯棒性正則項。

2.2 一般形式

可能有些讀者會問非分類問題應(yīng)該將 KL 項替換為什么,事實上原論文并沒有在非分類問題上進(jìn)行實驗,不過這里可以補充一下。我們可以留意到:

所以,上述 只不過是 KL 散度的反復(fù)使用,它的一般形式是:

因此對于非分類問題,我們將 換成適當(dāng)?shù)亩攘?#xff08;而不是 KL 散度)即可。

實驗效果

我們先來看看 R-Drop 的實驗結(jié)果。

R-Drop 的主要超參有三個:batch_size、 和 Dropout 概率。batch_size 一 般取決于我們的算力,對個人來說調(diào)整空間不大;原論文的 從 都有,筆者自己的實驗中,則取了 ,也沒細(xì)調(diào)。至于 Dropout的概率,跟筆者在《中文任務(wù)還是 SOTA 嗎?我們給 SimCSE ?補充了一些實驗》[1] 所選的一樣,設(shè)為 0.3 效果比較好。

3.1 論文報告

說實話,原論文所報告的 R-Drop 的效果是相當(dāng)讓人驚艷的,這也是筆者不得不要介紹一波 R-Drop 的主要原因。原論文在 NLU、NLG、CV 的分類等多種任務(wù)上都對 R-Drop 做了對比實驗,大部分實驗效果都稱得上“明顯提升”。

官方實現(xiàn):https://github.com/dropreg/R-Drop

下面截圖一部分實驗結(jié)果:

▲?R-Drop在機(jī)器翻譯任務(wù)上的效果

▲?R-Drop在GLUE任務(wù)上的效果

特別地,在機(jī)器翻譯任務(wù)上,簡單的“Transformer + R-Drop”超過了其他更加復(fù)雜方法的效果:

▲?機(jī)器翻譯任務(wù)上不同方法的對比

論文還包括自動摘要、語言模型、圖像分類等實驗,以及關(guān)于超參數(shù)的一些消融實驗,大家仔細(xì)看原論文就好。總的來說,R-Drop 的這份“成績單”,確實足以讓人為之點贊了。

3.2 個人嘗試

當(dāng)然,筆者堅持的觀點是“沒有在中文測試過的模型是沒有靈魂的”,一般情況下筆者都是在中文任務(wù)上親自嘗試過之后,才會寫作分享。

個人實現(xiàn):https://github.com/bojone/r-drop

有中文監(jiān)督任務(wù)上,筆者實驗了兩個文本分類任務(wù)(CLUE 榜單的 IFLYTEK 和 TNEWS)。

和一個文本生成任務(wù)(CSL 標(biāo)題生成,參考 Seq2Seq 中 Exposure Bias 現(xiàn)象的淺析與對策):

可以看到,R-Drop 的結(jié)果足以 PK 在對抗訓(xùn)練淺談:意義、方法和思考(附Keras 實現(xiàn))中介紹的著名正則化手段“對抗訓(xùn)練”和“梯度懲罰”了。

3.3 實現(xiàn)要點

相比于對抗學(xué)習(xí)等復(fù)雜正則化方法,R-Drop 的實現(xiàn)難度可謂是相當(dāng)?shù)土?#xff0c;這里以 bert4keras 為例,簡單介紹一下如何將一個普通的訓(xùn)練腳本改為帶 Dropout 的模式。

首先,是數(shù)據(jù)生成部分,改動如下:

class?data_generator(DataGenerator):"""數(shù)據(jù)生成器"""def?__iter__(self,?random=False):batch_token_ids,?batch_segment_ids,?batch_labels?=?[],?[],?[]for?is_end,?(text,?label)?in?self.sample(random):token_ids,?segment_ids?=?tokenizer.encode(text,?maxlen=maxlen)#?batch_token_ids.append(token_ids)#?batch_segment_ids.append(segment_ids)#?batch_labels.append([label])for?i?in?range(2):batch_token_ids.append(token_ids)batch_segment_ids.append(segment_ids)batch_labels.append([label])#?if?len(batch_token_ids)?==?self.batch_size?or?is_end:if?len(batch_token_ids)?==?self.batch_size?*?2?or?is_end:batch_token_ids?=?sequence_padding(batch_token_ids)batch_segment_ids?=?sequence_padding(batch_segment_ids)batch_labels?=?sequence_padding(batch_labels)yield?[batch_token_ids,?batch_segment_ids],?batch_labelsbatch_token_ids,?batch_segment_ids,?batch_labels?=?[],?[],?[]

然后,自定義一個新 loss:

from?keras.losses?import?kullback_leibler_divergence?as?klddef?categorical_crossentropy_with_rdrop(y_true,?y_pred):"""配合上述生成器的R-Drop?Loss其實loss_kl的除以4,是為了在數(shù)量上對齊公式描述結(jié)果。"""loss_ce?=?K.categorical_crossentropy(y_true,?y_pred)??#?原來的lossloss_kl?=?kld(y_pred[::2],?y_pred[1::2])?+?kld(y_pred[1::2],?y_pred[::2])return?K.mean(loss_ce)?+?K.mean(loss_kl)?/?4?*?alpha

最后把模型的 Dropout 打開,并用這個 data_generator 和 categorical_crossentropy_with_rdrop 來訓(xùn)練模型就行了。

個人理解

看完了讓人賞心悅目的實驗結(jié)果后,我們來啃一下理論。原論文提供了對 R-Drop 的一個理論分析,大致意思是 R-Drop 會促進(jìn)參數(shù)的同化,從而起到正則化作用。不過個人感覺這個解釋并不直觀,而且還不夠本質(zhì)。下面筆者試圖提供 R-Drop 的另外幾個角度的理解。

4.1 一致性

R-Dropout 可以看成是 Dropout 的改進(jìn),那 Dropout 有什么問題呢?其實 Dropout 是典型的訓(xùn)練和預(yù)測不一致的方法。具體來說,Dropout 在訓(xùn)練階段往(某些層的)輸入加上了乘性噪聲,使得模型從 變成了 ,其中 的每個元素有 p 的概率為 0,剩下 1-p 的概率為 1/(1-p),訓(xùn)練目標(biāo)就是:

這樣訓(xùn)練之后,我們應(yīng)該用哪個模型預(yù)測最好呢?不確定,但如果損失函數(shù)是 距離的話,那么我們可以推出最佳預(yù)測模型應(yīng)該是:

推導(dǎo):如果用 損失,此時單個樣本的損失是:

注意,現(xiàn)在我們的問題是“模型訓(xùn)練完后應(yīng)該用什么函數(shù)來預(yù)測”,所以 是常數(shù),y 才是要優(yōu)化的變量,這只不過是一個二次函數(shù)的最小值問題,容易解得 時損失函數(shù)最小。

我們假定這個結(jié)果能泛化到一般情況。上式告訴我們,帶 Dropout 的模型的正確步驟是“模型融合”:

對同一個輸入多次傳入模型中(模型不關(guān)閉 Dropout),然后把多次的預(yù)測結(jié)果平均值作為最終的預(yù)測結(jié)果。

但我們一般情況下的預(yù)測方式顯然不是這樣的,而是直接關(guān)閉 Dropout 進(jìn)行確定性的預(yù)測,這等價于預(yù)測模型由“模型平均”變成了“權(quán)重平均”:

這里的 1 指的是全 1 向量。所以,我們訓(xùn)練的是不同 Dropout 的融合模型,預(yù)測的時候用的是關(guān)閉 Dropout 的單模型,兩者未必等價,這就是 Dropout 的訓(xùn)練預(yù)測不一致問題。

現(xiàn)在,我們就不難理解 R-Drop 了,它通過增加一個正則項,來強(qiáng)化模型對 Dropout 的魯棒性,使得不同的 Dropout 下模型的輸出基本一致,因此能降低這種不一致性,促進(jìn)“模型平均”與“權(quán)重平均”的相似性,從而使得簡單關(guān)閉 Dropout 的效果等價于多 Dropout 模型融合的結(jié)果,提升模型最終性能。

4.2 連續(xù)性

本文開頭就提到 R-Drop 與 SimCSE 的相似性,事實上它還跟另外一個方法相當(dāng)相似,那便是“虛擬對抗訓(xùn)練(Virtual Adversarial Training,VAT)”。(不過 R-Drop 也沒引 VAT,難道就只有筆者覺得像嗎??)

關(guān)于 VAT 的介紹,大家可以參考筆者之前的文章泛化性亂彈:從隨機(jī)噪聲、梯度懲罰到虛擬對抗訓(xùn)練。簡單來說,VAT 也是通過一個正則項,使得模型對擾動更加魯棒,增強(qiáng)模型本身的連續(xù)性(小的變化不至于對結(jié)果產(chǎn)生大的影響)。它們不同的地方在于加擾動的方式,VAT 只把擾動加入到輸入中,并且通過對抗的思想提升擾動的針對性;R-Drop 的擾動則可以施加到模型的每一層中,并且擾動是隨機(jī)的。

有讀者可能想到了,VAT 可是主打半監(jiān)督訓(xùn)練的,那是不是意味著 R-Drop 也可以做半監(jiān)督訓(xùn)練?這部分原論文并沒有實驗,是筆者自己做的實驗,答案是確實可以,跟 VAT 類似,R-Drop 新增的 KL 散度項是不需要標(biāo)簽的,因此可以無監(jiān)督訓(xùn)練,混合起來就是半監(jiān)督了,效果也還不錯。下面是筆者的實驗結(jié)果:

可以看到,R-Drop 的半監(jiān)督效果完全不遜色于 VAT,而且它實現(xiàn)比 VAT 簡單,速度也比 VAT 快!看來 VAT 有望退休了~ 直覺上來看,雖然 R-Drop 的擾動是隨機(jī)的,但是 R-Drop 的擾動更多,所以它造成的擾動也會放大,也可能比得上 VAT 經(jīng)過對抗優(yōu)化的擾動,所以 R-Drop 能夠不遜色于 VAT。

4.3 非目標(biāo)類

一個比較直接的疑問是,如果我的模型夠復(fù)雜,單靠交叉熵這一項,不能使得模型對 Dropout 魯棒嗎?KL 散度那一項造成了什么直接的區(qū)別?

事實上,還真的不能。要注意的是,交叉熵的訓(xùn)練目標(biāo)主要是:讓目標(biāo)類的得分大于非目標(biāo)類的得分,這樣模型就能正確地把目標(biāo)類預(yù)測出來了(參考將“softmax+交叉熵”推廣到多標(biāo)簽分類問題)。也就是說,如果只有交叉熵這一項,模型的訓(xùn)練結(jié)果頂多是:

不同的 Dropout 下,目標(biāo)類的得分都大于非目標(biāo)類的得分。

而不能做到:

不同的 Dropout 下,每個類的得分一致。

所以也就沒有解決訓(xùn)練預(yù)測不一致的問題。從公式上來看,交叉熵(2)只跟目標(biāo)類別有關(guān),不關(guān)心非目標(biāo)類的分布,假如目標(biāo)類為第一個類別,那么預(yù)測結(jié)果是 [0.5, 0.2, 0.3] 或 [0.5, 0.3, 0.2],對它來說都沒區(qū)別。但對于 KL 散度項(3)來說就不一樣了,每個類的得分都要參與計算,[0.5, 0.2, 0.3] 或 [0.5, 0.3, 0.2] 是有非零損失的。

本文小結(jié)

本文介紹了 R-Drop,它將“Dropout 兩次”的思想用到了有監(jiān)督任務(wù)中,每個實驗結(jié)果幾乎都取得了明顯的提升。此外,筆者在自己的實驗還發(fā)現(xiàn),它在半監(jiān)督任務(wù)上也能有不俗的表現(xiàn)。最后,分享了筆者對 R-Drop 的三個角度的思考。

參考文獻(xiàn)

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

更多閱讀

#投 稿?通 道#

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

如何才能讓更多的優(yōu)質(zhì)內(nèi)容以更短路徑到達(dá)讀者群體,縮短讀者尋找優(yōu)質(zhì)內(nèi)容的成本呢?答案就是:你不認(rèn)識的人。

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

PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優(yōu)質(zhì)內(nèi)容,可以是最新論文解讀,也可以是學(xué)術(shù)熱點剖析科研心得競賽經(jīng)驗講解等。我們的目的只有一個,讓知識真正流動起來。

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

? 文章確系個人原創(chuàng)作品,未曾在公開渠道發(fā)表,如為其他平臺已發(fā)表或待發(fā)表的文章,請明確標(biāo)注?

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

? PaperWeekly 尊重原作者署名權(quán),并將為每篇被采納的原創(chuàng)首發(fā)稿件,提供業(yè)內(nèi)具有競爭力稿酬,具體依據(jù)文章閱讀量和文章質(zhì)量階梯制結(jié)算

?????投稿通道:

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

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

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

△長按添加PaperWeekly小編

????

現(xiàn)在,在「知乎」也能找到我們了

進(jìn)入知乎首頁搜索「PaperWeekly」

點擊「關(guān)注」訂閱我們的專欄吧

關(guān)于PaperWeekly

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

總結(jié)

以上是生活随笔為你收集整理的又是Dropout两次!这次它做到了有监督任务的SOTA的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 99热成人 | 美女靠逼app | 亚洲码在线观看 | 国产精品人八做人人女人a级刘 | av中文字幕免费在线观看 | 一区二区三区免费在线观看 | 欧美一级片观看 | 朱竹清到爽高潮痉挛 | 欧美视频www| 6080福利 | 91丨porny丨中文 | 三上悠亚ed2k | 免费成人在线观看视频 | 亚洲国产高清在线 | 国产图区 | 伊人av综合网 | 成人黄色电影网址 | 中文字幕亚洲一区二区三区五十路 | 乱熟女高潮一区二区在线 | 337p日本欧洲亚洲大胆张筱雨 | 国产成人精品在线 | 免费福利av | 福利久久久 | 亚洲精品无码久久久久 | 日本爱爱免费视频 | 在线观看日韩精品 | 免费草逼网站 | 97精品视频 | 91精品啪在线观看国产线免费 | 欧美第三页| 亚洲一区二区免费看 | 91在线在线 | 欧洲女性下面有没有毛发 | 欧美精品免费一区二区 | 亚洲激情在线观看 | 天天躁夜夜躁 | 五月在线 | 国产男女猛烈无遮挡免费视频动漫 | 午夜激情在线播放 | 天堂网在线看 | 天天舔天天操 | 国产精品熟妇人妻g奶一区 a少妇 | 国产无套内射又大又猛又粗又爽 | 制服丝袜在线视频 | 黄色污污网站在线观看 | 人民的名义第二部 | 日韩欧美在线观看免费 | 肉色超薄丝袜脚交69xx | 热久久影院 | 国产免费又粗又猛又爽 | 国产高清一二三区 | 波多野结衣一本 | 五月色婷 | 国产午夜精品免费一区二区三区视频 | 成人黄色在线看 | 让男按摩师摸好爽视频 | 天天射综合网站 | wwwww在线观看| 国产无套精品一区二区三区 | 国产欧美日本在线 | 日韩视频在线观看一区二区 | 2021av视频 | 亚洲91久久| h片在线免费观看 | 日本人和亚洲人zjzjhd | 中文字幕一区二区三区视频 | 久久国产精品国语对白 | 黑白配高清国语在线观看 | 一级黄色性生活视频 | 日韩福利 | 欧美丰满美乳xxⅹ高潮www | 中文在线免费观看 | 天堂成人在线 | 99热这里只有精品在线观看 | 亚洲第一视频在线观看 | 久久一卡二卡 | jizzzxxxx| 国产高清av在线 | wwwxxxx日本 | 精品成人免费视频 | 日韩欧美在线视频免费观看 | 国产一级在线视频 | 亚洲婷婷综合网 | 亲切的金子餐桌片段的金子 | 国产免费高清视频 | 成人av番号网 | 久久艹中文字幕 | 男女做受视频 | 中文字幕有码在线播放 | 色窝窝无码一区二区三区 | 在线不卡一区二区 | 超碰97av| 91福利视频在线 | 亚洲视频图片小说 | 婷婷精品 | 深夜成人福利 | www免费视频 | 国产一级片精品 | 中国黄色三级视频 |