一.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 這些人工神經網路模型的類都有各自對應的...