NLP之Bert相關算法介紹
Bert相關算法介紹
主線
Bert的歷史沿革是什么,繼承了什么,創新了什么,為什么效果那么好,主要原因是什么
預訓練
為什么可以復用
底層特征比較通用、可以復用
為什么還要做fine-tuning?
高層特征任務有相關性
預訓練的特點
圖像預訓練
一方面ImageNet是圖像領域里有超多事先標注好訓練數據的數據集合,分量足是個很大的優勢,量越大訓練出的參數越靠譜;
另外一方面因為ImageNet有1000類,類別多,算是通用的圖像數據,跟領域沒太大關系,所以通用性好
word embedding
神經網絡語言模型
NNLM
概念
根據句子里面前面的一系列前導單詞預測后面跟哪個單詞的概率大小(理論上除了上文之外,也可以引入單詞的下文聯合起來預測單詞出現概率)
方法
單詞用onehot編碼
乘以矩陣Q
獲得向量C(W)
拼接每個單詞的C(W)
鏈接隱含層
接softmax預測應該接哪個單詞
Q
包含v行,v代表詞典大小
每一行對應的單詞的word embedding
Q需要學習
總體看
輸入一個詞的上文,預測下文
word2vec
分類
CBOW
Continous bag of words model
Skip-gram
Continous skip-gram model
方法
Word2Vec的網絡結構其實和NNLM是基本類似的
CBOW
用一個詞的上下文,預測中心詞
Skip-gram
用一個,預測它的上下文單詞
目標
構建word embedding結果
一個單詞表達成word embedding后,比較容易找到語義相近的其他詞匯
使用Word2Vec或者Glove,通過做語言模型任務,就可以獲得每個單詞的Word Embedding
效果
提升1-2個點
有什么問題?
多義詞問題
因此一個詞只對應一行embedding
靜態的word embedding
訓練好之后每個單詞的表達就固定住了,以后使用的時候,不論新句子上下文單詞是什么,這個單詞的Word Embedding不會跟著上下文場景的變化而改變
如何解決多義詞問題?
EMLO
ELMO
名稱
Embedding from Language Models
論文題目
Deep contextualized word representation
概念思路
先用語言模型學好一個單詞的Word Embedding,此時多義詞無法區分,不過這沒關系。
實際使用Word Embedding的時候,單詞已經具備了特定的上下文了,可以根據上下文單詞的語義去調整單詞的Word Embedding表示,這樣經過調整后的Word Embedding更能表達在這個上下文中的具體含義,自然也就解決了多義詞的問題了。
所以ELMO本身是個根據當前上下文對Word Embedding動態調整的思路。
算法思路
第一個階段是利用語言模型進行預訓練;
第二個階段是在做下游任務時,從預訓練網絡中提取對應單詞的網絡各層的Word Embedding作為新特征補充到下游任務中。
網絡結構
雙層雙向LSTM
圖中左端的前向雙層LSTM代表正方向編碼器,輸入的是從左到右順序的除了預測單詞外Wi的上文Context-before;
右端的逆向雙層LSTM代表反方向編碼器,輸入的是從右到左的逆序的句子下文Context-after;
每個編碼器的深度都是兩層LSTM疊加。
每個單詞都能得到對應的三個Embedding
單詞的Word Embedding
第一層LSTM中,對應單詞位置的Embedding
句法信息更多
第二層LSTM中,對應單詞位置的Embedding
語義信息更多
如何使用
每個單詞得到3個Embedding
每個embedding給一個權重a
權重可以學習
特點
Feature-based Pre-Training
提取特征,然后整體整合在一起
是否解決多義詞問題?
第一層LSTM編碼了很多句法信息,這在這里起到了重要作用
缺點
LSTM抽取特征能力,弱于Transformer
拼接方式雙向融合特征的融合能力偏弱
GPT
Generative Pre-Training
生成式的預訓練
基于Fine-tuning模式的預訓練模型
預訓練思路
第一個階段是利用語言模型進行預訓練
第二階段通過Fine-tuning的模式解決下游任務。
如何用在下游任務
對于分類問題,不用怎么動,加上一個起始和終結符號即可;
對于句子關系判斷問題,比如Entailment,兩個句子中間再加個分隔符即可;
對文本相似性判斷問題,把兩個句子順序顛倒下做出兩個輸入即可,這是為了告訴模型句子順序不重要;
對于多項選擇問題,則多路輸入,每一路把文章和答案選項拼接作為輸入即可
與其他方法的區別
與ELMO的區別
用了transformer的結構,而不是LSTM
沒有上下文同時預測
僅用上文預測
Bert
幾大類語言任務
序列標注
中文分詞
詞性標注
命名實體識別
分類任務
文本分類
情感計算
句子關系判定
QA等
判斷語義關系
生成任務
機器翻譯
文本摘要
roberta
更長的時間,更大的batch size,更多的數據進行訓練
訓練方式發生變化
去掉BERT中的NSP目標(next sentence prediction)
如何選取sentence組合
segment組合
sentence組合
full sentence組合
沒有NSP任務等
跨越文檔的sentence組合
在更長的句子上進行訓練
根據訓練數據動態地改變mask的模式
BERT的masking是在預處理時進行的,導致這種Masking是靜態的,每個epoch的masking結果一致。原本的BERT為了避免這種情況,把數據復制了十份,然后進行了十種不同的靜態masking。這樣在40個epochs的訓練中,同樣masking的數據會在整個訓練中出現四次。
RoBERTa中使用Dynamic Masking,只是在序列送入模型中的時候才去進行動態的masking,這樣在更大的數據集上或者更多步數的訓練上會表現更好
學習鏈接
https://zhuanlan.zhihu.com/p/49271699
Transformer
https://zhuanlan.zhihu.com/p/37601161
相關基礎知識
https://jalammar.github.io/illustrated-transformer/
Jay Alammar可視化地介紹Transformer的博客文章
http://nlp.seas.harvard.edu/2018/04/03/attention.html
哈佛大學NLP研究組寫的“The Annotated Transformer. ”
代碼原理雙管齊下,講得非常清楚。
附件: Introduction - ZL.pptx 718.07KB 下載次數:1次
AI 機器學習 深度學習 自然語言處理基礎
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。