兩個月前,谷歌提出了一個新的預訓練框架,論文的名字叫
《ELECTRA: PRE-TRAINING TEXT ENCODERS AS DISCRIMINATORS RATHER THAN GENERATORS》
這篇論文通過提出一種利用類似生成對抗網絡似的訓練方法,提出了一個簡單的預訓練架構,主要訓練細節如下:
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 generator實現方法:
1、首先跟bert類似,將一些單詞進行mask
2、通過語言模型將預測mask單詞,輸入是mask後的句子,預測是mask的位置單詞。
如上圖中mask後的單詞為[mask] chef [mask] the meal,generator預測the、cooked這兩個位置的單詞。
損失函數為:
m為mask單詞數量,x上標masked就是mask後的句子
ELECTRA discriminator實現方法:
1、將generator mask位置預測的單詞進行替換
比如上面句子generator要預測兩個位置,第一個位置預測是the、第二個位置是ate,就把這兩個單詞恢復到原來的位置中,成為
the chef ate the meal,這部分作為discimitor的輸入。
2、對於所有的單詞,做一個二分類問題,判斷單詞是否和原來的句子一樣。
損失函數為:
帶corrupt的為替換後句子中的單詞
關鍵字: 位置 句子 discriminator