「自然語言處理」ELECTRA:谷歌提出的新的預訓練架構

兩個月前,谷歌提出了一個新的預訓練框架,論文的名字叫


《ELECTRA: PRE-TRAINING TEXT ENCODERS AS DISCRIMINATORS RATHER THAN GENERATORS》

「自然語言處理」ELECTRA:谷歌提出的新的預訓練架構

這篇論文通過提出一種利用類似生成對抗網絡似的訓練方法,提出了一個簡單的預訓練架構,主要訓練細節如下:

1、相比bert隨機mask一些詞,ELECTRA利用generator生成一些詞進行替換

2、然後利用discrimitor判斷句子中的每個詞,是否是被替換的。

通過上面兩種方式,ELECTRA在實現bert、xlnet這些模型相同效果的情況下,訓練的時間還大大降低(參數只有bert-large的1/20,訓練時間只需要1/135)

訓練的細節

ELECTRA雖然訓練的思想跟GAN類似,但是由於使用GAN的架構在訓練的時候無法收斂,所以沒有采用這種方式。而是採用兩個網絡單獨訓練generator和discriminator的方式。

ELECTRA的示意圖如下,我們將分別從圖中將它的generator和discriminator的實現方法:

「自然語言處理」ELECTRA:谷歌提出的新的預訓練架構

ELECTRA generator實現方法:
1、首先跟bert類似,將一些單詞進行mask

2、通過語言模型將預測mask單詞,輸入是mask後的句子,預測是mask的位置單詞。
如上圖中mask後的單詞為[mask] chef [mask] the meal,generator預測the、cooked這兩個位置的單詞。

損失函數為:


「自然語言處理」ELECTRA:谷歌提出的新的預訓練架構

m為mask單詞數量,x上標masked就是mask後的句子


ELECTRA discriminator實現方法:
1、將generator mask位置預測的單詞進行替換
比如上面句子generator要預測兩個位置,第一個位置預測是the、第二個位置是ate,就把這兩個單詞恢復到原來的位置中,成為
the chef ate the meal,這部分作為discimitor的輸入。

2、對於所有的單詞,做一個二分類問題,判斷單詞是否和原來的句子一樣。

損失函數為:


「自然語言處理」ELECTRA:谷歌提出的新的預訓練架構

帶corrupt的為替換後句子中的單詞


分享到:


相關文章: