ZEN、ELECTRA、ALBERT


一、ZEN

目前,大多數中文預訓練模型基本上沿用了英文模型的做法,聚焦於小顆粒度文本單元(字)的輸入。然而,與英文相比,中文沒有空格等明確的詞語邊界。這個特點使得很多文本表達中存在的交叉歧義也被帶入了以字為序列的文本編碼中,使得模型更難從單字的序列中學習到大顆粒度文本蘊含的語義信息,例如雙字或者多字詞的整體含義等。雖然通過大規模文本建模可以一定程度上區分不同上下文環境的語義,但是依然沒有充分並顯式地利用預訓練和微調整語料中經常出現的詞、短語、實體等更大顆粒度的信息。目前很多模型的解決方法依然是遵循傳統BERT模型的遮蓋(masking)策略,例如采用多層(詞,短語等)遮蓋策略來彌補這一缺陷。然而遮蓋策略依然只是一種弱監督學習方法,用於學習詞邊界信息含有諸多問題

它最大的創新在於輸入除了字還有N-gram,把N-gram加在對應的字上,N-gram的向量編碼是通過6層的Transformer獲得的(作為前6層Transformer輸入的一部分,共同訓練主語言模型)。

網絡結構圖如下:

注意力會更多的關注在有效的n-gram。比如“波士頓”的權重明顯高於“士頓”。對於有划分歧義的句子,n-gram encoder可以正確的關注到“速度”而不是“高速”。 更加有趣的是,在不同層次的encoder關注的n-gram也不同。更高層的encoder對於“提高速度”和“波士頓咨詢”這樣更長的有效n-gram分配了更多的權重。這表明,結合n-gram的方法的預訓練,不僅僅提供給文本編碼器更強大的文本表征能力,甚至還間接產生了一種文本分析的有效方法。(這樣就可以更好的利用到詞級別的信息,同時能夠避免分詞錯誤的影響。)

論文下載地址:https://arxiv.org/pdf/1911.00720.pdf

二、ELECTRA

它的全稱是Efficiently Learning an Encoder that Classifies Token Replacements Accurately(有效的學習能夠准確分類被替代Token的編碼器)它最大的創新在於提出了新的預訓練任務和框架,采用了類似於GAN的結構,但與其又有區別。

 

它的生成器和判別器都是由一個編碼器組成,例如Transformer

先通過小MLM(生成器的大小在判別器的1/4到1/2之間效果是最好的。作者認為原因是過強的生成器會增大判別器的難度)對被MASK的Token進行生成,然后通過判別器對每個Token進行預測,預測是不是被Mask的詞。判別器的目標是序列標注(判斷每個token是真是假),兩者同時進行訓練,但判別器的梯度不會傳給生成器,目標函數如下:

因為判別器的任務相對來說容易些,RTD loss相對MLM loss會很小,因此加上一個系數,作者訓練時使用了50。另外要注意的一點是,在優化判別器時計算了所有token上的loss,而以往計算BERT的MLM loss時會忽略沒被mask的token。作者在后來的實驗中也驗證了在所有token上進行loss計算會提升效率和效果

權值的共享

作者認為生成器對embedding有更好的學習能力,因為在計算MLM時,softmax是建立在所有vocab上的,之后反向傳播時會更新所有embedding,而判別器只會更新輸入的token embedding。最后作者只使用了embedding sharing。

BERT雖然對上下文有很強的編碼能力,卻缺乏細粒度語義的表示token編碼降維后的效果,可以看到sky和sea明明是天與海的區別,卻因為上下文一樣而得到了極為相似的編碼。細粒度表示能力的缺失會對真實任務造成很大影響。

對抗神經網絡在NLP中的應用成為了接下來研究的一個新的點。

論文下載地址:https://openreview.net/pdf?id=r1xMH1BtvB

 三、ALBERT

它是基於Bert的改進。

改進一:

在BERT中,字embedding與encoder輸出的embedding維度是一樣的都是768。但是ALBERT認為,字級別的embedding是沒有上下文依賴的表述,而隱藏層的輸出值不僅包括了字本身的意思還包括一些上下文信息,理論上來說隱藏層的表述包含的信息應該更多一些,因此應該讓H>>E,所以ALBERT的字向量的維度是小於encoder輸出值維度的。

在NLP任務中,通常詞典都會很大,embedding matrix的大小是V×E(其中V是字表的大小,它是一個很大的值,E是每個字向量的維度),如果和BERT一樣讓H=E(H是隱藏節點的個數),那么embedding matrix的參數量會很大,並且反向傳播的過程中,更新的內容也比較稀疏。

因此ALBERT采用了一種因式分解的方法來降低參數量。首先把one-hot向量映射到一個低維度的空間,大小為E,然后再映射到一個高維度的空間,說白了就是先經過一個維度很低的embedding matrix,然后再經過一個高維度matrix把維度變到隱藏層的空間內,從而把參數量從O(V×H)(因為要使得字向量的維度和hidden_size的維度相等,保持相等時因為有個殘差網絡的直接相加,所以不得不使得字向量的維度設為H)降低到了O(V×E+E×H)(通過V×E維度的矩陣和E×H維度的矩陣相乘),當E<<H時參數量減少的很明顯。

改進二:
對於預訓練任務的改進。論文中指出預測下一句(NSP)任務相比於MLM而言過於簡單,BERT的NSP任務實際上是一個二分類,訓練數據的正樣本是通過采樣同一個文檔中的兩個連續的句子,而負樣本是通過采用兩個不同的文檔的句子。該任務主要是希望能提高下游任務的效果,例如NLI自然語言推理任務。但是后續的研究發現該任務效果並不好,主要原因是因為其任務過於簡單。NSP其實包含了兩個子任務,主題預測與關系一致性預測,但是主題預測相比於關系一致性預測簡單太多了,並且在MLM任務中其實也有類似的效果。

ALBERT中,為了只保留一致性任務去除主題識別的影響,提出了一個新的任務 sentence-order prediction(SOP),SOP的正樣本和NSP的獲取方式是一樣的,負樣本把正樣本的順序反轉即可。SOP因為是在同一個文檔中選的,其只關注句子的順序並沒有主題方面的影響。並且SOP能解決NSP的任務,但是NSP並不能解決SOP的任務,該任務的添加給最終的結果提升了一個點。

 改進三:

作者提出預訓練任務很難會過擬合,因此去除了dropout.

改進四:

跨層的參數共享:在ALBERT還提出了一種參數共享的方法,Transformer中共享參數有多種方案,只共享全連接層,只共享attention層,ALBERT結合了上述兩種方案,全連接層與attention層都進行參數共享,也就是說共享encoder內的所有參數,同樣量級下的Transformer采用該方案后實際上效果是有下降的,但是參數量減少了很多,訓練速度也提升了很多。

論文下載地址:https://openreview.net/pdf?id=H1eA7AEtvS

中文版預訓練好的模型:https://github.com/brightmart/albert_zh


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM