寫在前面
昨天看完NoisyTune論文,做好實(shí)驗(yàn)就來了。一篇ACL2022通過微調(diào)前給預(yù)訓(xùn)練模型參數(shù)增加噪音提高預(yù)訓(xùn)練語言模型在下游任務(wù)的效果方法-NoisyTune,論文全稱《NoisyTune: A Little Noise Can Help You Finetune Pretrained Language Models Better》。
paper地址:https://aclanthology.org/2022.acl-short.76.pdf
由于僅加兩行代碼就可以實(shí)現(xiàn),就在自己的數(shù)據(jù)上進(jìn)行了實(shí)驗(yàn),發(fā)現(xiàn)確實(shí)有所提高,為此分享給大家;不過值得注意的是,「不同數(shù)據(jù)需要加入噪音的程度是不同」,需要自行調(diào)參。
模型
自2018年BERT模型橫空出世,預(yù)訓(xùn)練語言模型基本上已經(jīng)成為了自然語言處理領(lǐng)域的標(biāo)配,「pretrain+finetune」成為了主流方法,下游任務(wù)的效果與模型預(yù)訓(xùn)練息息相關(guān);然而由于預(yù)訓(xùn)練機(jī)制以及數(shù)據(jù)影響,導(dǎo)致預(yù)訓(xùn)練語言模型與下游任務(wù)存在一定的Gap,導(dǎo)致在finetune過程中,模型可能陷入局部最優(yōu)。
為了減輕上述問題,提出了NoisyTune方法,即,在finetune前加入給預(yù)訓(xùn)練模型的參數(shù)增加少量噪音,給原始模型增加一些擾動(dòng),從而提高預(yù)訓(xùn)練語言模型在下游任務(wù)的效果,如下圖所示,
通過矩陣級(jí)擾動(dòng)(matrix-wise perturbing)方法來增加噪聲,定義預(yù)訓(xùn)練語言模型參數(shù)矩陣為,其中,表示模型中參數(shù)矩陣的個(gè)數(shù),擾動(dòng)如下:
其中,表示從到范圍內(nèi)均勻分布的噪聲;表示控制噪聲強(qiáng)度的超參數(shù);表示標(biāo)準(zhǔn)差。
代碼實(shí)現(xiàn)如下:
forname,parainmodel.namedparameters():
model.statedict()[name][:]+=(torch.rand(para.size())?0.5)*noise_lambda*torch.std(para)
這種增加噪聲的方法,可以應(yīng)用到各種預(yù)訓(xùn)練語言模型中,可插拔且操作簡單。
如下表所示,在BERT、XLNET、RoBERTa和ELECTRA上均取得不錯(cuò)的效果。
并且比較的四種不同增加噪聲的方法,發(fā)現(xiàn)在矩陣級(jí)均勻噪聲最優(yōu)。
在不同數(shù)據(jù)量下,NoisyTune方法相對(duì)于finetune均有所提高。
在不同噪聲強(qiáng)度下,效果提升不同,對(duì)于GLUE數(shù)據(jù)集,在0.1-0.15間為最佳。
總結(jié)
蠻有意思的一篇論文,加入少量噪音,提高下游微調(diào)效果,并且可插拔方便易用,可以納入到技術(shù)庫中。
本人在自己的中文數(shù)據(jù)上做了一些實(shí)驗(yàn),發(fā)現(xiàn)結(jié)果也是有一些提高的,一般在0.3%-0.9%之間,但是噪聲強(qiáng)度在0.2時(shí)最佳,并且在噪聲強(qiáng)度小于0.1或大于0.25后,會(huì)比原始效果差。個(gè)人實(shí)驗(yàn)結(jié)果,僅供參考。
審核編輯 :李倩
-
噪音
+關(guān)注
關(guān)注
1文章
170瀏覽量
24232 -
模型
+關(guān)注
關(guān)注
1文章
3527瀏覽量
50497 -
自然語言處理
+關(guān)注
關(guān)注
1文章
628瀏覽量
14178
原文標(biāo)題:ACL2022 | NoisyTune:微調(diào)前加入少量噪音可能會(huì)有意想不到的效果
文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
用PaddleNLP為GPT-2模型制作FineWeb二進(jìn)制預(yù)訓(xùn)練數(shù)據(jù)集

憶聯(lián)PCIe 5.0 SSD支撐大模型全流程訓(xùn)練

YOLOv5類中rgb888p_size這個(gè)參數(shù)要與模型推理和訓(xùn)練的尺寸一致嗎?一致會(huì)達(dá)到更好的效果?
請(qǐng)問如何能讓模型的效果更好?
從Open Model Zoo下載的FastSeg大型公共預(yù)訓(xùn)練模型,無法導(dǎo)入名稱是怎么回事?
使用OpenVINO?訓(xùn)練擴(kuò)展對(duì)水平文本檢測(cè)模型進(jìn)行微調(diào),收到錯(cuò)誤信息是怎么回事?
用PaddleNLP在4060單卡上實(shí)踐大模型預(yù)訓(xùn)練技術(shù)

【「基于大模型的RAG應(yīng)用開發(fā)與優(yōu)化」閱讀體驗(yàn)】+大模型微調(diào)技術(shù)解讀
《具身智能機(jī)器人系統(tǒng)》第7-9章閱讀心得之具身智能機(jī)器人與大模型
KerasHub統(tǒng)一、全面的預(yù)訓(xùn)練模型庫
名單公布!【書籍評(píng)測(cè)活動(dòng)NO.52】基于大模型的RAG應(yīng)用開發(fā)與優(yōu)化
LLM和傳統(tǒng)機(jī)器學(xué)習(xí)的區(qū)別
PyTorch GPU 加速訓(xùn)練模型方法
直播預(yù)約 |數(shù)據(jù)智能系列講座第4期:預(yù)訓(xùn)練的基礎(chǔ)模型下的持續(xù)學(xué)習(xí)

評(píng)論