T5 PEGASUS:开源一个中文生成式预训练模型
?PaperWeekly 原創 ·?作者|蘇劍林
單位|追一科技
研究方向|NLP、神經網絡
去年在文章那個屠榜的T5模型,現在可以在中文上玩玩了中我們介紹了 Google 的多國語言版 T5 模型(mT5),并給出了用 mT5 進行中文文本生成任務的例子。誠然,mT5 做中文生成任務也是一個可用的方案,但缺乏完全由中文語料訓練出來模型總感覺有點別扭,于是決心要搞一個出來。
經過反復斟酌測試,我們決定以 mT5 為基礎架構和初始權重,先結合中文的特點完善 Tokenizer,然后模仿 PEGASUS [1] 來構建預訓練任務,從而訓練一版新的 T5 模型,這就是本文所開源的 T5 PEGASUS。
Tokenizer
首先,這里介紹我們對 Tokenizer 的完善工作。mT5 使用的 Tokenizer 是 sentencepiece [2] ,這是一個 C++ 所寫的分詞庫,具有高效輕便的特點,但是很遺憾,對于中文來說它并不是特別友好,主要體現為:
1. sentencepiece 會把某些全角符號強制轉化為半角符號,這在某些情況下是難以接受的,而且還可能影響任務的評測結果;
2. sentencepiece 內置的算法雖然有能力分出中文詞來,但對于中文分詞來說其實還是不夠智能的;
3. sentencepiece 用 C++ 寫的,雖然開源了,但對于用慣 Python 的人來說 C++ 就相當于黑箱,難以閱讀源碼,改起來也不容易。
這些特點讓我們決定將 Tokenizer 切換回 BERT 的 Tokenizer。但直接替換原始版本的中文 BERT 的 Tokenizer 是不夠的,一來是我們之前的工作《提速不掉點:基于詞顆粒度的中文 WoBERT》[3] 已經表明以詞為單位來做生成模型能獲得更好的效果。
二來哪怕只看字中文 BERT 的 vocab.txt 也是很不完善的,漏了一些常見的標點符號(如雙引號)和中文字(比如“琊”等)。為此,我們選擇給 BERT 的 tokenizer 加入分詞功能,并進一步完善 vocab.txt。
具體來說,我們往原始中文 BERT 的 token_dict 里邊加入結巴分詞的前 20 萬個詞,然后修改 Tokenizer 的邏輯,使得它能夠切分出詞來,這些改動都已經內置在 bert4keras 中了,直接調用就行。接著,我們用這個修改后的 Tokenizer 去遍歷切分我們準備的預訓練語料,統計各個 token 的頻數,最后只保留最高頻的 5 萬個 token,得到一個規模為 5 萬的 vocab.txt 來構建我們最終的 Tokenizer。
除了用這個新 Tokenizer 來訓練 T5 PEGASUS 外,我們還用它來重新訓練了一版 WoBERT 模型(WoBERT+),也歡迎讀者嘗試。
https://github.com/ZhuiyiTechnology/WoBERT
預訓練任務
對于預訓練任務,我們希望更加接近自然語言生成(而不是像 T5 那樣的只預測挖空部分),并且盡可能具有實用價值。為此,我們關注到了 PEGASUS,來自論文《PEGASUS: Pre-training with Extracted Gap-sentences for Abstractive Summarization》[4]。
PEGASUS 在其論文稱是專門為摘要定制的預訓練模型,但在我們看來,它也可以作為通用的生成式預訓練任務。PEGASUS 的大體思路是通過最長公共子序列的方式該摘要類似的數據對,T5 PEGASUS 并沒有完全復現 PEGASUS 的做法,只是借鑒了 PEGASUS 的思路做語料構建。
▲ T5 PEGASUS的訓練數據示例
具體來說,假設一個文檔有 n 個句子,我們從中挑出大約 n/4 個句子(可以不連續),使得這 n/4 個句子拼起來的文本,跟剩下的 3n/4 個句子拼起來的文本,最長公共子序列盡可能長,然后我們將 3n/4 個句子拼起來的文本視為原文,n/4 個句子拼起來的文本視為摘要,這樣就構成了一個“(原文, 摘要)”的偽摘要數據對了,就用這些數據對去訓練 Seq2Seq 模型即可。
注意,如果文檔里沒有重復句子的話,那么原文跟摘要的句子是不會有交集的,所以這樣的生成任務并非是原文的簡單復制,因此還是有一定難度的。
搜索算法則是通過如下的貪心算法逐步搜索至滿足長度要求:
1. 先找出 1 個句子,使得它跟生成的 n-1 個句子的最長公共子序列最長;
2. 假設已經找到了 k 個句子,那么繼續找第 k+1 個句子,使得這 k+1 個句子拼起來的文本,跟剩下的 n-k-1 個句子拼起來的文本的最長公共子序列最長。
參數與配置
目前開源的 T5 PEGASUS 是 base 版,總參數量為 2.75 億,訓練時最大長度為512,batch_size [5] 為 96,學習率為 ,使用 6 張 3090 訓練了 100 萬步,訓練時間約 13 天,數據是 30 多 G 的精處理通用語料,訓練 acc 約 47%,訓練 loss 約 2.97。模型使用 bert4keras 進行編寫、訓練和測試。
Github地址:https://github.com/ZhuiyiTechnology/t5-pegasus
實驗與評測
在 CSL 和 LCSTS 兩個文本生成任務上,T5 PEGASUS 是我們已知的所有模型中的 SOTA:
更重要的是,T5 PEGASUS 有著非常出色的小樣本學習能力:哪怕樣本標注樣本降低到 10 個,T5 PEGASUS 依然可以微調出一個摘要(標題)生成模型出來,性能顯著超過其他模型。在 LCSTS上,T5 PEGASUS 具有類似的小樣本學習效果,只不過非 T5 PEGASUS 模型效果實在太差了,所以就沒有把表格整理在此了。?小樣本演示
下面是標注樣本數為 10 個時訓練出來的模型生成效果演示:?
輸入:針對以超立方體網絡為藍本的多處理機系統的可靠性和容錯能力的精準度量問題,結合多處理機系統遭受計算機病毒攻擊時常常發生結構性故障的特點,研究了 n 維超立方體網絡的結構連通性和子結構連通性評價問題。首先,使用構造 n 維超立方體網絡的 3 路結構割的方法得到其 3 路結構連通度的一個上界;然后,使用構造 n 維超立方體網絡的 3 路子結構集的等價變換或約簡變換的方法,得到其 3 路結構子連通度的一個下界;最后,利用任意網絡的 3 路結構連通度不小于 3 路子結構連通度的性質,證實了超立方體網絡的 3 路結構連通度和子結構連通度均為該超立方體網絡維數?
標題:超立方體網絡的3路結構連通度及子結構連通度
預測:基于n維超立方體網絡結構連通性和子結構連通性評價研究
輸入:針對傳統無線體域網(WBAN)預測模型對感知數據預測精度低、計算量大、能耗高的問題,提出一種基于懲罰誤差矩陣的自適應三次指數平滑算法。首先在感知節點與路由節點之間建立輕量級預測模型,其次采用地毯式搜索方式對預測模型進行參數優化處理,最后采用懲罰誤差矩陣對預測模型參數作進一步的細粒化處理。實驗結果表明,與 Zig Bee 協議相比,在 1000 時隙范圍內,所提方法可節省 12% 左右的能量;而采用懲罰誤差矩陣與地毯式搜索方式相比,預測精度提高了 3.306%。所提方法在有效降低計算復雜度的同時能進一步降低 WBAN 的能耗。
標題:基于懲罰誤差矩陣的同步預測無線體域網節能方法
預測:基于懲罰誤差矩陣的自適應三次指數平滑算法
輸入:針對車聯網(IoV)環境下消息傳輸效率低下、網絡資源開銷較大等諸多問題,提出一種適用于城市交通場景下基于車輛節點認知交互的路由算法。首先,依據信任理論提出節點認知交互度的概念,并在此基礎上對車聯網中的車輛節點進行分類,賦予它們不同的認知交互度初值;同時還引入車輛節點交互時間、交互頻率、車輛節點物理間隔距離、間隔跳數以及消息生存時間等影響因子,進而構建了車輛節點認知交互評估模型。基于該模型計算并更新節點的認知交互度,并通過比較對應車輛節點間的認知交互度值來選取認知交互度相對較高的鄰居節點作為中繼節點進行消息轉。
標題:車聯網環境下基于節點認知交互的路由算法
預測:基于車輛節點認知交互的路由算法
輸入:針對近場源波達方向(DOA)和距離的聯合估計問題,提出一種近場迭代自適應算法(NF-IAA)。首先通過劃分二維網格表示出近場區域內信源所有可能的位置,每個位置都看作存在一個潛在的信源入射到陣列上,表示出陣列輸出的數據模型;然后通過循環迭代利用上一次譜估計的結果構建信號的協方差矩陣,將協方差矩陣的逆作為加權矩陣估計出每個位置對應的潛在信源能量;最后繪制出三維能量譜圖,由于只有真實存在的信源能量不為 0,因此譜峰對應的位置即為真實存在信源的位置。仿真實驗表明在 10 個快拍條件下,NF-IAA的DOA 分辨概率達到了 9。
標題:基于迭代自適應方法的近場源二維參數聯合估計
預測:基于nf-iaa的近場迭代自適應算法
輸入:針對現有的軟件眾包工人選擇機制對工人間協同開發考慮不足的問題,在競標模式的基礎上提出一種基于活躍時間分組的軟件眾包工人選擇機制。首先,基于活躍時間將眾包工人劃分為多個協同開發組;然后,根據組內工人開發能力和協同因子計算協同工作組權重;最后,選定權重最大的協同工作組為最優工作組,并根據模塊復雜度為每個任務模塊從該組內選擇最適合的工人。實驗結果表明,該機制相比能力優先選擇方法在工人平均能力上僅有 0.57% 的差距, 同時因為保證了工人間的協同而使項目風險平均降低了 32%,能有效指導需多人協同進行的眾包軟件任務的工。
標題:基于活躍時間分組的軟件眾包工人選擇機制
預測:基于活躍時間分組的軟件眾包工人選擇機制?
可以看到哪怕標注樣本很少,但依然能夠得到可讀性較好的生成結果,這得益于 PEGASUS 式的偽摘要預訓練與下游任務是很貼近的。?
簡單的總結 ?
本文主要分享了我們的中文生成式預訓練模型 T5 PEGASUS,它以 mT5 為基礎,在中文語料上使用 PEGASUS 式的偽摘要預訓練,最終有著不錯的文本生成表現,尤其是出色的小樣本學習能力,歡迎有文本生成需求的讀者使用。
參考文獻
[1] https://arxiv.org/abs/1912.08777
[2] https://github.com/google/sentencepiece
[3] https://kexue.fm/archives/7758
[4] https://arxiv.org/abs/1912.08777
[5] https://kexue.fm/archives/bert4keras
更多閱讀
#投 稿?通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術干貨。我們的目的只有一個,讓知識真正流動起來。
?????來稿標準:
? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?
? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志
?????投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發送?
? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結
以上是生活随笔為你收集整理的T5 PEGASUS:开源一个中文生成式预训练模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 银联在线支付怎么开通
- 下一篇: 胶囊网络全新升级!引入自注意力机制的Ef