T5 PEGASUS:開源一個中文生成式預訓練模型

2022-02-03 PaperWeekly

收錄於話題 #自然語言處理 203個

去年在文章那個屠榜的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,學習率為

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 路結構連通度和子結構連通度均為該超立方體網絡維數 預測:基於n維超立方體網絡結構連通性和子結構連通性評價研究輸入:針對傳統無線體域網(WBAN)預測模型對感知數據預測精度低、計算量大、能耗高的問題,提出一種基於懲罰誤差矩陣的自適應三次指數平滑算法。首先在感知節點與路由節點之間建立輕量級預測模型,其次採用地毯式搜索方式對預測模型進行參數優化處理,最後採用懲罰誤差矩陣對預測模型參數作進一步的細粒化處理。實驗結果表明,與 Zig Bee 協議相比,在 1000 時隙範圍內,所提方法可節省 12% 左右的能量;而採用懲罰誤差矩陣與地毯式搜索方式相比,預測精度提高了 3.306%。所提方法在有效降低計算複雜度的同時能進一步降低 WBAN 的能耗。標題:基於懲罰誤差矩陣的同步預測無線體域網節能方法輸入:針對車聯網(IoV)環境下消息傳輸效率低下、網絡資源開銷較大等諸多問題,提出一種適用於城市交通場景下基於車輛節點認知交互的路由算法。首先,依據信任理論提出節點認知交互度的概念,並在此基礎上對車聯網中的車輛節點進行分類,賦予它們不同的認知交互度初值;同時還引入車輛節點交互時間、交互頻率、車輛節點物理間隔距離、間隔跳數以及消息生存時間等影響因子,進而構建了車輛節點認知交互評估模型。基於該模型計算並更新節點的認知交互度,並通過比較對應車輛節點間的認知交互度值來選取認知交互度相對較高的鄰居節點作為中繼節點進行消息轉。輸入:針對近場源波達方向(DOA)和距離的聯合估計問題,提出一種近場迭代自適應算法(NF-IAA)。首先通過劃分二維網格表示出近場區域內信源所有可能的位置,每個位置都看作存在一個潛在的信源入射到陣列上,表示出陣列輸出的數據模型;然後通過循環迭代利用上一次譜估計的結果構建信號的協方差矩陣,將協方差矩陣的逆作為加權矩陣估計出每個位置對應的潛在信源能量;最後繪製出三維能量譜圖,由於只有真實存在的信源能量不為 0,因此譜峰對應的位置即為真實存在信源的位置。仿真實驗表明在 10 個快拍條件下,NF-IAA的DOA 分辨概率達到了 9。輸入:針對現有的軟體眾包工人選擇機制對工人間協同開發考慮不足的問題,在競標模式的基礎上提出一種基於活躍時間分組的軟體眾包工人選擇機制。首先,基於活躍時間將眾包工人劃分為多個協同開發組;然後,根據組內工人開發能力和協同因子計算協同工作組權重;最後,選定權重最大的協同工作組為最優工作組,並根據模塊複雜度為每個任務模塊從該組內選擇最適合的工人。實驗結果表明,該機制相比能力優先選擇方法在工人平均能力上僅有 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 的交流群裡。

相關焦點

  • 26億參數,智源、清華開源中文大規模預訓練模型
    近日,北京智源人工智慧研究院和清華大學研究團隊合作開展了一項名為「清源 CPM (Chinese Pretrained Models)」的大規模預訓練模型開源計劃,旨在構建以中文為核心的大規模預訓練模型。首期開源內容包括預訓練中文語言模型和預訓練知識表示模型,可廣泛應用於中文自然語言理解、生成任務以及知識計算應用,所有模型免費向學術界和產業界開放下載,供研究使用。
  • ELECTRA中文預訓練模型開源,僅1/10參數量,性能依舊媲美BERT
    如上圖所示,ELECTRA模型能夠在訓練步長更少的前提下得到了比其他預訓練模型更好的效果。同樣,在模型大小、數據和計算相同的情況下,ELECTRA的性能明顯優於基於MLM的方法,如BERT和XLNet。所以,ELECTRA 與現有的生成式的語言表示學習方法相比,前者具有更高的計算效率和更少的參數(ELECTRA-small的參數量僅為BERT-base的 1/10)。
  • 華為開源預訓練語言模型「哪吒」:提升多項中文NLP任務性能
    雷鋒網 AI 開發者按:一個月前,在「AICon 全球人工智慧與機器學習技術大會」上,華為諾亞方舟實驗首席科學家劉群剛分享了新發布的中文預訓練語言模型 NEZHA(哪吒);就在這兩天,NEZHA 已在 Github 上開源,同時開源的還有壓縮 BERT 模型「TinyBERT」,它在推理時大小可縮小 7.5 倍,並且速度加快 9.4 倍。
  • 中文最佳,哈工大訊飛聯合發布全詞覆蓋中文BERT預訓練模型
    而在中文領域,哈工大訊飛聯合實驗室也於昨日發布了基於全詞覆蓋的中文 BERT 預訓練模型,在多個中文數據集上取得了當前中文預訓練模型的最佳水平,效果甚至超過了原版 BERT、ERINE 等中文預訓練模型。基於 Transformers 的雙向編碼表示(BERT)在多個自然語言處理任務中取得了廣泛的性能提升。
  • RoBERTa中文預訓練模型,你離中文任務的「SOTA」只差個它
    昨天,國內開發者 brightmart 開源了最新的 RoBERTa 中文預訓練語言模型,開發社區又有新的中文模型可以用了。值得注意的是,pytorch-transformers 同時支持導入 TensorFlow 預訓練的模型與 PyTorch 預訓練的模型,它們倆都可以導入到庫中。清華的預訓練 BERT早兩個月,清華大學開源了一個名為 OpenCLaP 的項目,即多領域開源中文預訓練語言模型庫。
  • 開源古漢語BERT預訓練模型:SikuBERT與SikuRoBERTa
    由南京農業大學、南京師範大學、南京理工大學聯合發布開源古漢語BERT預訓練模型SikuBERTSikuRoBERTaBERT是當今最火熱的預訓練語言模型之一,自2018年公布以來提高了許多自然語言理解任務的水平;隨著古籍智能處理與數字人文等領域研究的深化
  • 一作解讀NLPCC最佳學生論文:1200萬中文對話數據和預訓練模型CDial-GPT
    基於Transformer的大規模預訓練語言模型極大地促進了開放領域對話的研究進展。然而目前這一技術在中文對話領域並未被廣泛應用,主要原因在於目前缺乏大規模高質量的中文對話開源數據。為了推動中文對話領域的研究,彌補中文對話語料不足這一問題,我們發布了一個包含1200萬對話的大規模中文對話數據集LCCC,並開源了在LCCC上預訓練的大規模中文對話生成模型CDial-GPT。
  • 一作解讀NLPCC最佳學生論文:1200萬中文對話數據和預訓練模型CDial...
    基於Transformer的大規模預訓練語言模型極大地促進了開放領域對話的研究進展。然而目前這一技術在中文對話領域並未被廣泛應用,主要原因在於目前缺乏大規模高質量的中文對話開源數據。  為了推動中文對話領域的研究,彌補中文對話語料不足這一問題,我們發布了一個包含1200萬對話的大規模中文對話數據集LCCC,並開源了在LCCC上預訓練的大規模中文對話生成模型CDial-GPT。
  • 華為開源中文版BERT模型
    近日,華為諾亞實驗室開源中文預訓練語言模型「哪吒」,基於BERT模型,並進行了多處優化,能夠在一系列中文自然語言理解任務達到先進水平。。現在戳右邊連結上新智元小程序了解更多! 自Google於2018年發布預訓練語言模型BERT ,並在11項自然語言處理(NLP)任務上取得最好成績,預訓練語言模型開始得到學術界和工業界的極大關注,已經成為自然語言處理的新範式。
  • 開源|谷歌發布最新「天馬」模型,自動生成文本摘要已超越人類!
    從「間隙句子」到文本摘要,小樣本性能更佳研究人員假設,預訓練目標越接近下遊任務,微調的性能越好。為此,他們設定下遊語言任務為「提取文本摘要」,而預訓練目標為「生成間隙句子」(Gap Sentences Generation)。研究人員在輸入文檔中刪除一些完整句子,天馬模型的任務就是恢復他們。
  • 阿里重磅發布PLUG,中文社區最大規模預訓練語言模型來了
    據了解,PLUG 採用了 1TB 以上高質量中文文本訓練數據,涵蓋新聞、小說、詩歌、問答等廣泛類型及領域,其模型訓練依託了阿里雲 EFLOPS 高性能 AI 計算集群。PLUG 超大規模預訓練中文理解 & 生成統一模型,是目前中文社區最大規模的純文本預訓練語言模型,集語言理解與生成能力於一身。
  • 登頂GLUE百度ERNIE再突破:語言生成預訓練模型ERNIE-GEN刷新SOTA
    藉助飛槳的高效分布式訓練優勢,百度開源了 ERNIE-GEN 的英文預訓練模型,並對開源工具進行了動靜合一升級,核心代碼精簡了 59% 。之前的預訓練模型主要關注語言理解類任務,在生成任務上還處於一個探索階段。因此百度的研究人員對生成預訓練技術進行了深入的探索和研究。以 BERT、ERNIE 為代表的語言理解預訓練模型只進行了編碼器的表徵學習。而基於序列到序列 (Seq2Seq) 的語言生成技術不僅依賴編碼器獲取源文本的語義表示,還需要解碼器對目標文本進行序列預測。
  • 中文ELECTRA預訓練模型再升級
    在今年3月,哈工大訊飛聯合實驗室推出了中文ELECTRA預訓練模型,並將相關資源進行開源,目前在GitHub上已獲得580個star。本次更新中,我們將預訓練語料從原有的約20G提升至180G,利用接近9倍大小的數據集。
  • 華為諾亞方舟開源預訓練模型「哪吒」,4項任務均達到SOTA
    BERT之後,新的預訓練語言模型XLnet、RoBERTa、ERNIE不斷推出,這次,華為諾亞方舟實驗室開源了基於BERT的中文預訓練語言模型NEZHA(哪吒),寓意模型能像哪吒那樣三頭六臂、大力出奇蹟,可以處理很多不同的自然語言任務。 據介紹,當前版本的NEZHA基於BERT模型,並進行了多處優化,能夠在一系列中文自然語言理解任務達到先進水平。
  • 賽爾原創@Findings|中文預訓練語言模型回顧
    簡介以BERT為代表的預訓練語言模型在眾多自然語言處理任務中取得了顯著性能提升,並且隨後湧現出一批效果更優的預訓練語言模型。在本文中,我們將經典的預訓練語言模型應用在中文場景並使用相同的實驗設置去驗證它們在中文領域的性能表現。
  • 最強NLP預訓練模型庫PyTorch-Transformers正式開源!支持6個預訓練框架,27個預訓練模型
    AI 前線導讀:日前,Github 上有一個非常不錯的 NLP 工具發布了:PyTorch-Transformers。該項目支持 BERT、GPT、GPT-2、Transformer-XL、XLNet、XLM 等,並包含了 27 個預訓練模型。
  • 《預訓練周刊》第14期:World-GAN:Minecraft 世界的生成模型、CMU博士論文探究可控文本生成
    其中大規模預訓練語言模型在表現出不良的表徵偏見方面具有潛在的危險性,主要原因在於由傳播涉及性別、種族、宗教和其他社會構造的負面概括的陳規定型觀念所導致的有害偏見。作為提高語言模型公平性的一個步驟,本文在提出新的基準和衡量標準之前,仔細定義了代表偏見的幾個來源,並提出了在文本生成過程中減輕社會偏見的步驟,在為高保真文本生成保留關鍵的上下文信息的同時,有效地減輕了偏見。
  • 賽爾原創@Findings | 中文預訓練語言模型回顧
    簡介以BERT為代表的預訓練語言模型在眾多自然語言處理任務中取得了顯著性能提升,並且隨後湧現出一批效果更優的預訓練語言模型。在本文中,我們將經典的預訓練語言模型應用在中文場景並使用相同的實驗設置去驗證它們在中文領域的性能表現。
  • transformer預訓練模型
    用維基百科的前104種語言在區分大小寫的文本上訓練(見細節:https://github.com/google-research/bert/blob/master/multilingual.md)。bert-base-chinese12個層,768個隱藏節點,12個heads,110M參數量。在中文簡體和繁體中文上訓練。
  • 使用Hugging Face管道輕鬆應用NLP預訓練模型
    預訓練首先,該模型是在維基百科這樣的大型純文本語料庫上預訓練的。預訓練應該是通用的,以便在以後的廣泛目標中使用該模型。其次,預訓練是在自我監督下進行的,這樣輸入就不需要標記,這反過來意味著我們有一個幾乎無限的訓練數據供應。BERT模型的預訓練分為兩個任務:掩碼語言建模(MLM):對語料庫中15%的詞進行掩碼,目的是預測掩碼的token。