預訓練模型(四) Ernie

2022-07-19 21:06:23 字數 2378 閱讀 6374

一. ernie 1.0

ernie和bert有什麼異同呢?

1.ernie:通過實體和短語mask能夠學習語法和句法資訊的語言模型

2.訓練方法:與bert類似

如何mask?

1.ernie的輸入是字粒度的輸入

2.不同級別的mask(單字,實體,短語)

seg_labels就是記錄分詞邊界的,有三種取值,0:詞首,1:其他,-1:佔位

mask_word_tags表示masked word(連續mask) 還是masked char

然後再構造語料時,通過mask_word_tags標誌判斷是否mask實體,短語還是單字,若是判斷為連續mask,則通過seg_labels判斷是不是乙個單詞的詞首位置,若為詞首則開始連續mask該實體

面試題:怎麼理解詞源級別的mask比字元級別的好?

bert 模型主要是聚焦在針對字或者英文word粒度的完形填空學習上面,沒有充分利用訓練資料當中詞法結構,語法結構,以及語義資訊去學習建模。比如 「我要買蘋果手機」,bert 模型 將 「我」,「要」, 「買」,「蘋」, 「果」,「手」, 「機」 每個字都統一對待,隨機mask,丟失了「蘋果手機」 是乙個很火的名詞這一資訊,這個是詞法資訊的缺失。同時 我 + 買 + 名詞 是乙個非常明顯的購物意圖的句式,bert 沒有對此類語法結構進行專門的建模,如果預訓練的語料中只有「我要買蘋果手機」,「我要買華為手機」,哪一天出現了乙個新的手機牌子比如栗子手機,而這個手機牌子在預訓練的語料當中並不存在,沒有基於詞法結構以及句法結構的建模,對於這種新出來的詞是很難給出乙個很好的向量表示的,而ernie 通過對訓練資料中的詞法結構,語法結構,語義資訊進行統一建模,極大地增強了通用語義表示能力,在多項任務中均取得了大幅度超越bert的效果!

其他細節改動:

中文繁體->簡體

英文大寫->小寫

詞表大寫:17964

對nsp任務的改動:

輸入多輪對話修改nsp任務(random replace 構造負樣本)

(二) ernie2.0

2.0的改動就比較大了,首先它採用了多工持續學習預訓練框架,然後構建了三種型別的無監督任務,去訓練模型。

首先看一下2.0的框架圖,左邊是進行預訓練準備的資料和任務(prior knowledge是指分詞後的資訊),然後把任務和資料放進右邊持續多工學習框架中去訓練。

為什麼用連續多工學習呢?

先來說一下連續多工學習的優點:

不遺忘之前的訓練結果

多工高效的進行訓練

使用上一任務的引數,並且新舊任務一起訓練

將每個任務分成多次迭代,框架完成不同迭代的訓練自動分配

再來解釋一下啥叫多工訓練?

我們知道無論bert還是ernie,訓練的任務無非是兩類,句子級別的任務和單詞級別的任務,每個任務都有獨立的loss function,sentence task 可以和word task一起訓練

那麼,2.0有哪些任務呢?

任務(一):詞法級別預訓練任務

1.knowledge masking task(ernie 1.0):繼續沿用1.0的任務,學習當前和全域性依賴

2.capitalization prediction task:大寫用於專名識別等,小寫也可用在其他任務

感覺該任務類似於主題提取,關鍵字提取,tf-idf

任務(二):語言結構級別**預訓練任務

4.sentence reordering task:文件中的句子打亂(分成1到m段,shuffle),識別正確順序

感覺該任務類似於判斷句子之間短距離依賴關係

5.sentence distance task:句子間的距離,3分類任務

0 相連的句子

1同一文件中不相連的句子

2兩篇文件間的句子

感覺該任務類似於判斷句子之間長距離依賴關係

任務(二):語法級別**預訓練任務

6.discourse relation task:計算兩句間的語義與修辭關係

有了這些任務,2.0怎麼進行訓練呢?

預訓練模型

elmo elmo是一種是基於特徵的語言模型,用預訓練好的語言模型,生成更好的特徵。而elmo的主要做法是先訓練乙個完整的語言模型,再用這個語言模型去處理需要訓練的文字,生成相應的詞向量。文字分類實戰 九 elmo 預訓練模型 在nlp領域,使用預訓練模型或元件的監督學習任務被稱為下游任務 bert...

OpenVino 四) 預訓練模型工具學習

進入目錄 例如我們選擇模型 vehicle license plate detection barrier 0106 選擇目錄 description 選擇 html 或 jpeg 都可以,是改模型屬性 的描述 進入目錄 cd c intelswtools openvino deployment t...

TensorFlow Keras預訓練模型測試

densenet121 densenet169 densenet201 inceptionresnetv2 inceptionv3 mobilenet nasnetlarge nasnetmobile resnet50 vgg16 vgg19 xception 這些人工神經網路模型的類都有各自對應的...