本資料是NLP核心知識點(diǎn)的ppt?。?!【文章較長,建議收藏】
本節(jié)課我們學(xué)習(xí)預(yù)訓(xùn)練模型。
前言
我們在學(xué)習(xí)詞向量的時候,應(yīng)該知道了多個產(chǎn)生詞向量的方法,包括基于矩陣(詞-詞共現(xiàn)矩陣)分解的方法、基于語言模型(word2vec)的方法、以及結(jié)合二者優(yōu)點(diǎn)的Glove模型等其他產(chǎn)生詞向量的方法。
然而,他們所產(chǎn)生的的詞向量,都屬于靜態(tài)的詞向量,這是由于這些方法產(chǎn)生的詞向量表示方式,將會拿來直接作為輸入層的輸入,并且在后面的下游任務(wù)模型訓(xùn)練過程中,詞向量不會再被調(diào)整, 所謂靜態(tài)是指,一經(jīng)產(chǎn)生,就不會再改變。
然而,對于一詞多義的問題,這種靜態(tài)的詞向量并不能很好的表示一個單詞的實(shí)際語義。例如,下面的兩句話:
蘋果好吃嗎?
蘋果好玩嗎?
我們知道,“蘋果”這個單詞,在第一句話中,表示水果,而在第二句話中,表示手機(jī)品牌。然而使用靜態(tài)詞向量卻無法很好的將二者語義區(qū)分開來,所以我們可以通過引入上下文信息建模更加復(fù)雜的神經(jīng)網(wǎng)絡(luò),從而將靜態(tài)詞向量轉(zhuǎn)換為動態(tài)詞向量。
那么有哪些模型可以實(shí)現(xiàn)動態(tài)詞向量呢?具體是如何得到的呢?
課程目錄
我們將從這幾個方面進(jìn)行講解。
NLP發(fā)展史
Attention
Transformer
BERT
ERINE
NLP發(fā)展史
2013年Mikolov提出了word2vec語言模型,解決了訓(xùn)練詞向量的方法。
2014年,循環(huán)神經(jīng)網(wǎng)絡(luò)及其變種LSTM/GRU開始被使用,并且Seq2Seq也被提出,
它是一種循環(huán)神經(jīng)網(wǎng)絡(luò)的變種,包括編碼器 (Encoder) 和解碼器 (Decoder) 兩部分。
2015年,Attention注意力機(jī)制被引入到網(wǎng)絡(luò)中,克服了“當(dāng)輸入序列非常長時,模型難以學(xué)到合理的向量表示”這一問題。
后面的發(fā)展中,我們發(fā)現(xiàn),Attention注意力機(jī)制發(fā)揮了重要作用。例如,2017年提出的Transformer中,就強(qiáng)調(diào)了Attention的重要性。再往后,著名的語言模型BERT、ERNIE等,Attention都是其中的核心組件。
接下來,我們就依次對Attention、Transformer、BERT、ERNIE進(jìn)行一個介紹。
Attention
如圖,是大腦中的注意力變化圖。
舉個例子,假如大家正在教室里認(rèn)真的聽老師講課,那么此時,大家的注意力肯定是放在了耳朵和眼睛上,但是如果現(xiàn)在問大家一個問題,你能感受到你現(xiàn)在穿鞋了嗎?其實(shí)大家肯定是穿了,但是問完這個問題以后,大家的注意力肯定會立馬轉(zhuǎn)移到腳上。那么左圖就是t時刻,我們大家大腦的注意力分布圖,右側(cè)就是t+1時刻,注意力轉(zhuǎn)移之后的分布圖。
我們再以一個序列語句“He is eating an green apple”為例,再來看一下我們的注意力分布變化。
當(dāng)我們在看第一個詞He的時候,其實(shí)我們的注意力會更多的去看它后面兩個單詞是什么,也就是x2(is)和x3(eating)的注意力會高一些,就像圖中的實(shí)線條所示;但是當(dāng)我們讀到第三個單詞“eating”時,我們會更多的將注意力放在x1(He)和x5(apple)上,那么此時的注意力曲線就會變成虛線所示。
如果將每一個時刻的輸入x看做是一個詞向量,那么注意力大小就可以看做是一個權(quán)重。此時,在不同時刻,我們?nèi)绻谜麄€句子中的每一個詞的向量和權(quán)重去表示當(dāng)前時刻的詞向量,那么就可以使用如下 公式表示:
其中i表示某一時刻,yi表示該時刻的輸出,xj表示每一個詞向量,wij表示i時刻不同單詞的權(quán)重。通過以上方式,我們其實(shí)就是在一句話中,重新表示了一個單詞的向量。這也就是動態(tài)詞向量的核心內(nèi)容。
那剛才我們提到的權(quán)重,也就是注意力分布是怎么計算的呢?
在Attention機(jī)制中,我們通過相似度來計算權(quán)重。
注意力機(jī)制可以分為兩步:
計算注意力分布
根據(jù) 來計算輸入信息的加權(quán)平均
以文本序列為例,圖中,q代表query,即要查詢某個單詞的詞向量,x1,x2…xN,代表了一個序列,其中每一個xi表示不同時刻的輸入單詞(向量)。我們從下往上看這幅圖,就是依次計算了q和x的相似度(通過矩陣相乘的方式),然后再通過softmax的方式進(jìn)行歸一化操作,此時計算的結(jié)果就是注意力分布 ,再然后,我們將x分別與之對應(yīng)的 進(jìn)行加權(quán)組合,得到最終的結(jié)果a,就是我們使用序列中所有單詞向量動態(tài)表示q的結(jié)果。
剛才我們一直提到的都是注意力機(jī)制,下面我們引入另一個單詞,自注意力機(jī)制,也就是self-Attention,很明顯,自注意力機(jī)制就是自己注意自己,也就是我們將前面的q換成序列中的單詞,用該句中的所有單詞去表示每一個單詞。
以“The weather is nice today”這句話為例。
假如我們要使用這句話中所有單詞去動態(tài)表示單詞“The”,根據(jù)剛才的步驟,我們依次計算“the”的向量和句子中每個單詞的相似度,再經(jīng)過softmax函數(shù),就得到了權(quán)重w1、w2、w3、w4、w5,最后我們用某個單詞的權(quán)重與該單詞的向量進(jìn)行加權(quán)求和,就可以得到單詞“The”在該句話中的動態(tài)表示。
那剛才我們提到了attention和self-attention,他們兩個有什么特點(diǎn)嗎?這個表格就給出了一些經(jīng)驗(yàn)。
Attention:通常被應(yīng)用在output層或者state層上,用于連接兩個不同組件(例如,從Encoder到Decoder的轉(zhuǎn)換),善于尋找兩個序列之間的關(guān)系;通常而言,一個模型中,只被使用1次;也可以連接兩種不同的模態(tài)(圖片和文字)。
Self-Attention:只關(guān)注一個組件,通常是關(guān)注input層,例如bert中,用在了Encoder;一個模型中,通常使用多次(Transformer18次,bert12次),善于尋找一個序列中不同部分的關(guān)系;更多的用于同一種模態(tài)。
Transformer
什么是transformer呢?
在不同的領(lǐng)域我們有不同的翻譯,例如,在動漫里,我們將其翻譯成“變形金剛”,在電力中,我們將其翻譯成“變壓器”,而我們所說的transformer,二者都不屬于,而是一種神經(jīng)網(wǎng)絡(luò)。文章來源:http://www.zghlxwxcb.cn/news/detail-845945.html
曾經(jīng)一段時間,有人把他翻譯成變壓器,這是由于該網(wǎng)絡(luò)的最初應(yīng)用是在語言翻譯中,而語言翻譯,就像變壓器一樣,是將一種語言翻譯成另一種語言,所以將其翻譯成變壓器,也無可厚非,但是,隨著transformer的應(yīng)用越來越廣泛,目前為止,已經(jīng)遠(yuǎn)遠(yuǎn)超過“變壓器”的含義。文章來源地址http://www.zghlxwxcb.cn/news/detail-845945.html
到了這里,關(guān)于NLP重要知識點(diǎn):預(yù)訓(xùn)練模型【核心且詳細(xì)】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!