RoFormerV2:自然语言理解的极限探索
?PaperWeekly 原創 ·?作者 | 蘇劍林
單位 | 追一科技
研究方向 | NLP、神經網絡
大概在 1 年前,我們提出了旋轉位置編碼(RoPE),并發布了對應的預訓練模型 RoFormer [1]。隨著時間的推移,RoFormer 非常幸運地得到了越來越多的關注和認可,比如 EleutherAI 新發布的 60億 [2] 和 200億 [3] 參數的 GPT 模型中就用上了 RoPE 位置編碼,Google 新提出的 FLASH 模型論文中則明確指出了 RoPE 對 Transformer 效果有明顯的提升作用。
與此同時,我們也一直在嘗試繼續加強 RoFormer 模型,試圖讓 RoFormer 的性能“更上一層樓”。經過近半年的努力,我們自認為取得了還不錯的成果,因此將其作為“RoFormerV2”正式發布:
Github:
https://github.com/ZhuiyiTechnology/roformer-v2
極限探索
在預訓練模型興起之后,不少研究人員都對一個問題相當感興趣:預訓練模型的極限在哪里?當然,“極限”這個詞含義很豐富,以 GPT3 為代表的一系列工作試圖探索的是參數量、數據量的極限,而微軟近來提出的 DeepNet 則探究的是深度的極限。對于我們來說,我們更想知道同一參數量下的性能極限,試圖最充分地“壓榨”預訓練模型的性能,RoFormerV2 正是這一理念的產物。
簡單來說,RoFormerV2 先在 RoFormer 的基礎上對模型結構做了適當的簡化,從而獲得了一定的速度提升。訓練方面,除了進行常規的無監督 MLM 預訓練外,我們還收集了 20 多 G 的標注數據,進行了有監督的多任務預訓練。在有監督式訓練之下,模型效果獲得了長足的提升,基本上實現了同一參數量下速度和效果的最優解。
特別地,3 億參數量的 RoFormer large,在 CLUE 榜單 [4] 上超過了若干 10 億 + 參數量的模型,做到了第 5 名,它也是榜上前5名中參數量最少的模型:
▲ RoFormerV2 large在CLUE上的“成績單”
模型介紹
相比 RoFormer,RoFormerV2 的主要改動是簡化模型結構、增加訓練數據以及加入有監督訓練,這些改動能讓 RoFormerV2 最終取得了速度和效果的“雙贏”。
結構的簡化
在結構上,RoFormerV2 主要去掉了模型的所有 Bias 項,以及 Layer Norm 換成了簡單的 RMS Norm,并且去掉了 RMS Norm 的 gamma 參數。這些改動的靈感主要來自 Google 的 T5 模型。
大家的潛意識里可能會覺得 Bias 項以及 Layer Norm 的 beta 和 gamma 參數計算量都很小,至少對速度來說是無關痛癢的。但事實出乎我們的意料:去掉這些看似“無關痛癢”的參數外,RoFormerV2 的訓練速度獲得了明顯的提升!
一些參考數據如下(RoFormer 和 RoBERTa 速度接近,就不列出來了,base 版的測試顯卡為 3090,large 版的測試顯卡為 A100):
無監督訓練
同 RoFormer 一樣,RoFormerV2 也是先通過 MLM 任務進行無監督預訓練,不同的地方主要有兩點:
1. RoFormer 是在 RoBERTa 權重基礎上進行訓練,RoFormerV2 是從零訓練;
2. RoFormer 的無監督訓練只有 30 多 G 數據,RoFormerV2 則用到了 280G 數據。
從零訓練相比于在已有權重基礎上繼續訓練會更加困難,主要體現在 Post Norm 結構更難收斂。為此,我們提出了一種新的訓練技術:將殘差設計為
其中 初始化為 0 并線性地緩慢增加到 1,相關討論還可以參考《淺談 Transformer 的初始化、參數化與標準化》[5]。該方案跟 ReZero 相似,不同的是 ReZero 中 是可訓練參數且去掉 操作,而實驗顯示我們的改動相比 ReZero 的最終效果更好,幾乎是 DeepNet 之前的最優解。
多任務訓練
前面提到 RoFormerV2 的結構有所簡化以獲得速度的提升,但由于“沒有免費的午餐”,同樣的訓練設置之下 RoFormerV2 相比 RoBERTa、RoFormer 的效果會有輕微下降。為了彌補回這部分下降的效果,更有效地挖掘模型潛力,我們補充了有監督式的多任務預訓練。
具體來說,我們收集了 77 個共計 20G 的標注數據集,構建了 92 個任務進行多任務訓練,這些數據集涵蓋文本分類、文本匹配、閱讀理解、信息抽取、指代消解等常見自然語言理解任務,以求模型能獲得比較全面的自然語言理解能力。為了完成訓練,我們在 bert4keras 基礎上進一步開發了一個多任務訓練框架,靈活支持不同格式的任務進行混合訓練,并整合了梯度歸一化等技術(參考《多任務學習漫談(二):行梯度之事》)來確保每個任務都達到盡可能優的效果。
RoFormerV2 并不是第一個嘗試多任務預訓練的模型,在它之前有 MT-DNN [6]、T5 [7] 以及前段時間的 ZeroPrompt [8] 都已經肯定過多任務預訓練的價值,而我們主要是在中文上進行了充分的驗證并首先進行了開源。
實驗結果
我們主要在 CLUE 榜單上對比效果:
可以看到,多任務訓練的提升是相當可觀的,在大多數任務上 RoFormerV2 不僅“追回”了結構簡化帶來的效果差距,還有一定的提升,平均來說算得上達到了同級模型的最優效果。另外,CMNLI 和 CHID 兩個任務上,RoFormerV2 都不如 RoBERTa,這是因為這兩個任務都訓練數據都非常多(數十萬級別),當訓練數據量足夠大時,模型的效果主要取決于模型的容量,多任務訓練帶來的提升比較小。
所以,總的來說就是:如果你的任務類型比較常規,數據量不是特別大,那么 RoFormerV2 往往是一個不錯的選擇;如果你希望加快一點訓練速度,那么也可以選擇 RoFormerV2;但如果你的任務數據量特別大,那么 RoFormerV2 通常不會有優勢。
本文小結
本文主要對我們新發布的 RoFormerV2 模型做了基本的介紹,它主要通過結構的簡化來提升速度,并通過無監督預訓練和有監督預訓練的結合來提升效果,從而達到了速度與效果的“雙贏”。
參考文獻
[1] https://github.com/ZhuiyiTechnology/roformer
[2] https://github.com/kingoflolz/mesh-transformer-jax/#gpt-j-6b
[3] https://blog.eleuther.ai/announcing-20b/
[4] https://www.cluebenchmarks.com/rank.html
[5] https://kexue.fm/archives/8620
[6] https://arxiv.org/abs/1901.11504
[7] https://arxiv.org/abs/1910.10683
[8] https://arxiv.org/abs/2201.06910
🔍
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
·
總結
以上是生活随笔為你收集整理的RoFormerV2:自然语言理解的极限探索的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信自动转账怎么回事
- 下一篇: 新手买股票流程