論文標題:
CharBERT: Character-aware Pre-trained Language Model
論文連結:
https://arxiv.org/abs/2011.01513
程式碼連結:
https://github.com/wtma/CharBERT
一、動機
預訓練模型的利用已經成為當前自然語言處理的正規化,使用預訓練模型處理輸出,然後在此基礎上根據具體任務進行調整。為了提升預訓練模型的效果,人們提出了很多改進的辦法,例如更好的 masking 方法,更大的 batch 等。但很少有工作關注於輸入的編碼,當前的 word piece 編碼方式 BPE 雖然能夠降低字典大小,同時緩解 OOV 問題,但仍然存在一些問題。
如下圖所示,首先 BPE 的方法無法表示完整詞的資訊以及更細粒度的字元級別的資訊,如下圖左邊所示,第一層和第三層的內容都沒有被表示出來,第二 BPE 的方法很容易受到攻擊,如果替換了輸入詞中的一個字元,那麼切分出來 word piece 受到的影響就會比較大。為了解決 BPE 存在的這些問題,本文從輸入編碼的角度提出了 CharBERT,透過更全面的編碼方式和更好的融合方式提升預訓練模型的效果。
二、模型
下圖就是 CharBERT 模型的結構,為了更好的表示輸入詞,作者使用了一個雙路結構,然後充分 CNN,RNN 的優勢,最終實現了效果的提升,接下來,將對模型的技術細節進行分析
2.1 Character Encoding
2.2 Heterogeneous Interaction
在得到兩種不同的 embedding 表示之後,作者提出了一種新的融合方式。具體而言,該方法首先透過 FFN 將兩種不同的 embedding 對映到同一空間,然後拼接起來,並在此基礎上使用 CNN 抽取區域性特徵,在得到區域性特徵之後,分別使用不同的 FFN 再對映會原來各自的空間,然後進行殘差連結,透過這樣的形式就進行了一次融合,具體過程如下:
這就完成了一次互動,然後再過 transformer,然後再進行互動,不斷重複該過程,實現對輸入的更好的建模。
2.3 Unsupervised Character Pre-training
除了模型結構上的增加,為了解決 BPE 比較脆弱的問題,作者也增加了一個非監督的字元級別預訓練,該過程可以用下圖表示:
原來的 MLM 預訓練任務保持,但同時作者考慮了一個 NLM(Noise Language Model),該任務針對的就是字元級別的表示,將原始輸入中的某些字元替換掉(包括丟掉,增加,交換),模型需要預測數來原始的輸入詞是什麼,透過這種方式實現了更穩定的模型效能。
這裡需要說明的是 MLM 和 NLM 是不交叉的,即如果某個詞被替換了某個字元,那麼這個詞就不會被 mask 掉,保證了 MLM 任務的乾淨。
以上就是整個方法的技術內容。
三、實驗
在實驗部分,作者使用了 BERT 和 RoBERTa 作為基本模型,English Wikipedia 作為預訓練的語料集,下游測試任務為 SQuAD,Text Classification,Sequence Labeling。相關實驗結果如下:
當然作者還進行了一些模型健壯性,消融實驗和其他的一些實驗,用於支援文中提出的方法
四、總結
本文最突出的一個地方在於考慮了更好的 embedding 方法,而不是隻使用 BPE 的結果,透過結合字元級別和詞級別的資訊實現了更為全面的輸入編碼,同時,結合 RNN 和 CNN 的優勢也是本文的另一個亮點,基本上 CNN,RNN,Transformer 都使用上了,也體現了新老研究成果的結合在一定程度上能進一步提升方法的效能,可以認為是一個可行的研究方向。