各種預訓練語言模型介紹

2022-07-19 21:06:26 字數 2141 閱讀 1344

一.elmo

背景:word2vec,glove和fasttext雖然能表示語義和語法資訊,但是並不能夠區分一詞多義

網路建構:

兩個單向的lstm進行拼接,把每層拼接的中間結果之和作為輸出

q:為啥不用bi-lstm?

避免傳播前後向未來要**的資訊

原理與損失函式:

前向模型:

後向模型:

目標函式最大化:

詞向量的表示基於當前的句子上下文

高層lstm:捕捉上下文的詞特徵(語義)

底層lstm:捕捉句法層次資訊(語法)

優點:解決了一詞多義

在一些任務上有提公升

缺點:lstm序列,訓練成本大

lstm對長距離的提取特徵不如transformer

elmo是對特徵進行拼接,沒有bert對特徵進行融合效果好

二. gpt1

背景:深度學習需要大量標註資料:通過未標記資料的語言模型+少量標註資料解決這個問題

方法:半監督方法處理語言理解任務

使用非監督預訓練+監督微調

框架:

框架類似於decoder(除去了encoder-decoder-multihead attention),或者說帶有mask的attention

核心思路:

無監督訓練:

本質是使用語言模型,前k個詞去**後面的詞的最大概率

1.position的權重和輸入word embeding的權重(乘以u矩陣)相加

2.同時經過n層transformer

3.最終最大化word embeding和最終層隱藏層對p(u)的**結果

有監督微調:

訓練在x輸入下y的**概率:

wy為y的embeding,h為最終隱藏層的向量

最終整個訓練目標是使預訓練的損失和微調的損失降到最小:

q:怎麼**?

如圖所示,輸入的語句有 start + text + extract,則經過transformer後的extract向量作為輸出,經過linear層和softmax層去進行判斷

缺點:是個單向的語言模型(mask),只用前面的詞訓練後面的詞。

三.roberta  vs  bert

1.bert的mask是靜態,即是每一輪mask的位置都是相同的,而roberta的每一輪mask是動態的

2.去掉了nsp任務,roberta任務nsp任務沒什麼用,而且使用句子對浪費了輸入空間大小

3.roberta使用了更多的資料,更大的batch size,更長時間去訓練

四.albert vs bert

1.減少了引數,詞表v到隱藏層h的中間,插入了較小的維度e,是v*h的訓練量變成了v*e + e*h

2.共享所有層引數,每輪的attention和ffn都是一樣

3.sop任務替換了nsp任務,負樣本換成了句子對的逆序

4.albert的**是n-gram片段

5.對比於bert large的引數:h:1024->4096,l:24->12,也就是說從bert有深又窄的模型變為又寬又淺的模型

6.bert訓練的時候採用了加速機制:90%的句子長度是128;而albert中90%的句子長度是512

預訓練模型

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

預訓練語言模型學習筆記

bert解決長序列問題 架構設計 為了能讓機器可以讀非常長的序列,transformer xl 可以讓機器讀跨越片段的內容。為了讓自注意力的計算複雜度變小,從 o t 變成了 o tlogt 甚至更低,reformer 使用了區域性敏感性的雜湊注意力。為了讓自注意力的空間複雜度也變小,從o t 變小...

TensorFlow Keras預訓練模型測試

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