【BERT中文改進版】預訓練ALBERT模型:參數更少,效果更好,拿下13項NLP任務

2021-02-20 深度學習自然語言處理

點擊上方,選擇星標置頂,每天給你送乾貨!

閱讀大概需要5分鐘

跟隨小博主,每天進步一丟丟

編輯:zenRRan

作者:brightmart

github:https://github.com/brightmart/albert_zh

albert_zh

海量中文語料上預訓練ALBERT模型:參數更少,效果更好

Chinese version of ALBERT pre-trained model

ALBERT模型介紹

ALBERT模型是BERT的改進版,與最近其他State of the art的模型不同的是,這次是預訓練小模型,效果更好、參數更少。

預訓練小模型也能拿下13項NLP任務,ALBERT三大改造登頂GLUE基準

它對BERT進行了三個改造:

1)詞嵌入向量參數的因式分解 Factorized embedding parameterization

O(V * H) to O(V * E + E * H)如以ALBert_xxlarge為例,V=30000, H=4096, E=128那麼原先參數為V * H= 30000 * 4096 = 1.23億個參數,現在則為V * E + E * H = 30000*128+128*4096 = 384萬 + 52萬 = 436萬,詞嵌入相關的參數變化前是變換後的28倍。

2)跨層參數共享 Cross-Layer Parameter Sharing

參數共享能顯著減少參數。共享可以分為全連接層、注意力層的參數共享;注意力層的參數對效果的減弱影響小一點。

3)段落連續性任務 Inter-sentence coherence loss.

使用段落連續性任務。正例,使用從一個文檔中連續的兩個文本段落;負例,使用從一個文檔中連續的兩個文本段落,但位置調換了。避免使用原有的NSP任務,原有的任務包含隱含了預測主題這類過於簡單的任務。We maintain that inter-sentence modeling is an important aspect of language understanding, but we propose a lossbased primarily on coherence. That is, for ALBERT, we use a sentence-order prediction (SOP) loss, which avoids topicprediction and instead focuses on modeling inter-sentence coherence. The SOP loss uses as positive examples thesame technique as BERT (two consecutive segments from the same document), and as negative examples the same twoconsecutive segments but with their order swapped. This forces the model to learn finer-grained distinctions aboutdiscourse-level coherence properties.

發布計劃 Release Plan1、albert_base, 參數量12M, 層數12,10月5號2、albert_large, 參數量18M, 層數24,10月13號3、albert_xlarge, 參數量59M, 層數24,10月6號4、albert_xxlarge, 參數量233M, 層數12,10月7號(效果最佳的模型)
訓練語料40g中文語料,超過100億漢字,包括多個百科、新聞、互動社區、小說、評論。模型性能與對比

模型參數和配置

Reference1、ALBERT: A Lite BERT For Self-Supervised Learning Of Language Representationshttps://openreview.net/pdf?id=H1eA7AEtvS2、預訓練小模型也能拿下13項NLP任務,ALBERT三大改造登頂GLUE基準http://baijiahao.baidu.com/s?id=1645712785366950083&wfr=spider&for=pc3、BERT: Pre-training of Deep Bidirectional Transformers for Language Understandinghttps://arxiv.org/pdf/1810.04805.pdf4、SpanBERT: Improving Pre-training by Representing and Predicting Spanshttps://arxiv.org/abs/1907.10529

實在智能算法團隊

作者介紹:

徐亮,實在智能算法專家,在深度學習、文本分類、意圖識別、問答系統方面有非常深入的研究和創新,github top10最受歡迎的文本分類項目作者。方便交流學習,備註:暱稱-學校(公司)-方向,進入DL&NLP交流群。
方向有很多:機器學習、深度學習,python,情感分析、意見挖掘、句法分析、機器翻譯、人機對話、知識圖譜、語音識別等。

相關焦點

  • albert-chinese-ner使用預訓練語言模型ALBERT做中文NER
    某種程度上可能比bert本身更具有意義,恰逢中文預訓練模型出來,還是按照之前的數據來做NER方面的fine-tune項目相關代碼獲取:關注微信公眾號 datayx  然後回復  命名識別  即可獲取。AI項目體驗地址 https://loveai.techalbert_zh海量中文語料上預訓練ALBERT模型:參數更少,效果更好。
  • 【NLP】Pytorch中文語言模型bert預訓練代碼
    這篇論文做了很多語言模型預訓練的實驗,系統的分析了語言模型預訓練對子任務的效果提升情況。有幾個主要結論:在目標領域的數據集上繼續預訓練(DAPT)可以提升效果;目標領域的語料與RoBERTa的原始預訓練語料越不相關,DAPT效果則提升更明顯。在具體任務的數據集上繼續預訓練(TAPT)可以十分「廉價」地提升效果。
  • Keras-BERT-NER albert、roberta、bert、wwm四個模型如何去做命名實體識別任務
    GitHub項目地址:https://github.com/liushaoweihua/keras-bert-ner中文命名實體識別任務下的Keras解決方案,下遊模型支持BiLSTM-CRF/BiGRU-CRF/IDCNN-CRF/single-CRF,預訓練語言模型採用BERT系列(谷歌的預訓練語言模型:支持BERT
  • 史上最強 NLP 預訓練模型 BERT 終於開源了!
    ,該預訓練模型能高效抽取文本信息並應用於各種 NLP 任務,該研究憑藉預訓練模型刷新了 11 項 NLP 任務的當前最優性能記錄。預訓練 NLP 模型其實預訓練模型或遷移學習很早就有人研究,但真正廣受關注還是在近幾年。清華大學劉知遠表示:「大概在前幾年,可能很多人都認為預訓練的意義不是特別大,當時感覺直接在特定任務上做訓練可能效果會更好。我認為 BERT 相當於在改變大家的觀念,即在極大數據集上進行預訓練對於不同的 NLP 任務都會有幫助。」
  • bert 學習筆記(一) 搞清楚bert預訓練原理 pytorch版
    ) = positionalembedding(train_dataset[1]["bert_input"]) = positionalembedding(torch.tensor([3,4,7,20,13,2,
  • 預訓練小模型也能拿下13項NLP任務,谷歌ALBERT三大改造登頂GLUE基準
    通常而言,在預訓練自然語言表徵時增加模型大小可以提升模型在下遊任務中的性能。但在某些情況下,由於 GPU/TPU 內存限制、訓練時間延長以及意外的模型退化等原因,進一步增加模型大小的難度也隨之增加。所以,為了解決這些問題,來自谷歌的研究者提出通過兩種參數精簡技術來降低內存消耗,加快 BERT 的訓練速度。
  • NLP專欄|圖解 BERT 預訓練模型!
    人們很快意識到,相比於在小規模數據集上和模型一起訓練詞嵌入,更好的一種做法是,在大規模文本數據上預訓練好詞嵌入,然後拿來使用。因此,我們可以下載由 Word2Vec 和 GloVe 預訓練好的單詞列表,及其詞嵌入。下面是單詞 "stick" 的 Glove 詞嵌入向量的例子(詞嵌入向量長度是 200)。
  • 按照時間線幫你梳理10種預訓練模型
    OpenAI在之後又提出了GPT-2模型,論文為《Language Models are Unsupervised Multitask Learners》,結構與GPT-1相似(依然採用transformer的encoder),但是採用多任務預訓練+超大數據集+超大規模模型,所以有更好的性能表現,但是參數也增加了更多。
  • PTMs| 2020最新NLP預訓練模型綜述
    該綜述系統地介紹了nlp中的預訓練模型。主要的貢獻包括:1.深入盤點了目前主流的預訓練模型,如word2vec,ELMo,BERT等。2. 提出了一種預訓練模型的分類體系,通過四種分類維度來劃分目前已有的預訓練模型。
  • 後 BERT 時代的那些 NLP 預訓練模型
    PretrainingWhole Word Masking 可以看做是對原來 BERT 模型的一個改進,一種增加任務難度的方法,因此我們並不是從頭開始 Pretraining,而是基於原來 Google 發布的中文模型繼續訓練的(我感覺另外一個原因就是沒有那麼多計算資源從頭開始)。
  • NLP - 基於 BERT 的中文命名實體識別(NER)
    原文地址,可點擊文末「閱讀原文」直達:https://eliyar.biz/nlp_chinese_bert_ner/歡迎大家投稿,AI、NLP相關即可。創建 BERT embedding12from kashgari.embeddings import BERTEmbeddingembedding = BERTEmbedding('<PATH_TO_BERT_FOLDER>', 100)創建模型並訓練1234
  • 天池NLP中文預訓練模型賽來了!
    自從2017年具有劃時代意義的Transformer模型問世以來,短短兩年多的時間內,如雨後春筍般的出現了大量的預訓練模型,比如:
  • NLP-BERT 谷歌自然語言處理模型:BERT-基於pytorch
    常用的中文漢字有 3500 個,這些字組合成詞彙,中文詞彙數量高達 50 萬個。假如詞向量的維度是 512,那麼語言模型的參數數量,至少是 512 * 50萬 = 256M模型參數數量這麼大,必然需要海量的訓練語料。從哪裡收集這些海量的訓練語料?《A Neural Probabilistic Language Model》這篇論文說,每一篇文章,天生是訓練語料。
  • 中文預訓練模型ERNIE超詳細使用指南
    所以第一步就是下載模型代碼(https://github.com/PaddlePaddle/ERNIE/tree/develop/ERNIE)以及相應的參數(https://baidu-nlp.bj.bcebos.com/ERNIE_stable-1.0.1.tar.gz)。接下去就是準備我們任務的數據,使其符合ERNIE模型輸入要求。
  • 26億參數,智源、清華開源中文大規模預訓練模型
    首期開源內容包括預訓練中文語言模型和預訓練知識表示模型,可廣泛應用於中文自然語言理解、生成任務以及知識計算應用,所有模型免費向學術界和產業界開放下載,供研究使用。根據清源 CPM 主頁介紹,該計劃發布的預訓練模型具備以下特點:模型規模大:本次發布的 CPM-LM 參數規模達 26 億,預訓練中文數據規模 100 GB,使用了 64 塊 V100 GPU,訓練時間約為 3 周;CPM-KG 的參數規模為 217 億,預訓練結構化知識圖譜為 WikiData 全量數據,包含近 1300 個關係、8500 萬實體、4.8 億個事實三元組
  • 預訓練永不止步,遊戲問答語言模型實操
    在這種背景下,預訓練應運而生,該技術可以從大量無標註數據中進行預訓使許多 NLP 任務獲得顯著的性能提升,大批的預訓練模型也相繼開源了。但是由於場景的偏差,通用的預訓練模型通常無法在垂直領域取得理想的效果,在我們的實際業務中同樣也遇到了這個問題, 為了能進一步提升業務下遊任務的性能,將大量無標籤領域數據價值發揮到最大,我們嘗試在遊戲問答場景下自研預訓練模型 [1],主要遇到的挑戰是如何在預訓時引入更多的知識。
  • 小白採坑---中文預訓練模型泛化能力挑戰賽(demo)
    中文預訓練模型泛化能力挑戰賽是阿里天池舉辦的NLP比賽。
  • 支持53種語言預訓練模型,斯坦福發布全新NLP工具包StanfordNLP
    今日,Stanford NLP 團隊發布了包含 53 種語言預訓練模型的自然語言處理工具包 StanfordNLP,該工具包支持 Python
  • 模型壓縮與蒸餾!BERT的忒修斯船
    模型壓縮模型在設計之初都是過參數化的,這是因為模型的參數量與複雜度代表著模型的容量與學習能力,但當我們實際使用時,我們需要更好的部署他(低資源),更快的響應(快速推理),常常需要進行模型壓縮。首先,模型在設計之初是都是會或多或少的過參數化,因為模型的參數量與複雜度代表著模型的容量與學習能力;其次,開始就用一個小模型,那這個小模型也是需要設計的,不能隨便拿來一個,而設計一個性能高參數規模小的小模型難度是非常大的,往往是模型小了性能也低了;第三點,大模型壓縮後與小模型雖然參數規模相當,但是對應的模型空間並不相同此外,為了更好的部署,如手機或FPGA等,得到精度更高模型更小(distillation
  • 谷歌ALBERT模型V2+中文版來了:之前刷新NLP各大基準,現在GitHub熱榜第二
    平均來看,ALBERT-xxlarge比v1略差一些,原因有以下2點:額外訓練了1.5M步(兩個模型的唯一區別就是訓練1.5M和3M步);對於v1,在BERT、Roberta和XLnet給出的參數集中做了一點超參數搜索;對於v2,只是採用除RACE之外的V1參數,其中使用的學習率為1e-5和0 ALBERT DR。