2021-06-08 自然語(yǔ)言處理技術(shù)——學(xué)習(xí)筆記

最近聽(tīng)了太多與自然語(yǔ)言相關(guān)的內(nèi)容,覺(jué)得很神奇,但同時(shí)又是一頭霧水。今天終于決定要去找一些相關(guān)資料看一下,那些常常聽(tīng)到名詞到底是什么意思,順便做個(gè)記錄。


參考網(wǎng)址:https://www.zhihu.com/question/19895141

自然語(yǔ)言處理(簡(jiǎn)單NLP, Natural language process),是研究計(jì)算機(jī)處理人類語(yǔ)言的一門技術(shù)。包括:1.句法語(yǔ)義分析,2.信息提取,3.文本挖掘,4.機(jī)器翻譯,5.信息檢索,6.問(wèn)答系統(tǒng),7.對(duì)話系統(tǒng)。(我聽(tīng)到比較多的應(yīng)用是機(jī)器翻譯和問(wèn)題系統(tǒng))

GitHub上出現(xiàn)了一套NLP課程,課程為期13周,從文本嵌入分類開(kāi)始,講到Seq2Seq,再到機(jī)器翻譯、對(duì)話系統(tǒng)、對(duì)抗學(xué)習(xí)等等,內(nèi)容豐富。入門選手可以考慮。(課程網(wǎng)址請(qǐng)到參考網(wǎng)址中查收)


參考網(wǎng)址:https://zhuanlan.zhihu.com/p/96778666

1. word2vec

Firth在1957年提出一種重要的語(yǔ)言學(xué)思想:一個(gè)詞語(yǔ)的意思應(yīng)該由它的上下文表示。

在word2vec出現(xiàn)前,一種簡(jiǎn)單的對(duì)詞的表示是one-hot向量,這種表示方法最大的缺點(diǎn)在于沒(méi)辦法表示出詞語(yǔ)之間的相似性。

Tomas Mikolov在2013年發(fā)表了幾篇重要的論文,首次提出了CBOW和Skip-gram模型,而word2vec只是一個(gè)工具,其背后的模型就是CBOW?(Continuous Bag of Words)或Skip-gram模型。

2. Transformer

在說(shuō)明transformer前,需要簡(jiǎn)述一下attention機(jī)制。

seq2seq是由一個(gè)encoder和一個(gè)decoder構(gòu)成,編碼器負(fù)責(zé)把源序列編碼成向量,解碼器是一語(yǔ)言模型,負(fù)責(zé) 根據(jù)編碼的信息生成目標(biāo)序列。這個(gè)結(jié)構(gòu)的問(wèn)題在于,編碼器需要把整個(gè)Source sentence的信息全部編碼起來(lái),這是seq2seq的瓶頸所在。而attention機(jī)制就是解決這個(gè)瓶頸的一種方法。attention的核心想法是:在解碼器的每一個(gè)時(shí)間步,都和編碼器直接連接,然后只關(guān)注source sentence中的特定的一部分。(不是很明白)

但是seq2seq+attention機(jī)制,還是要按照序列順序去encoding的,不好做分布式計(jì)算,于是有了直接拋棄RNN, LSTM的self-attention機(jī)制,以及應(yīng)用了這個(gè)機(jī)制的transformer.

(個(gè)人理解:transformer的作用也是進(jìn)行序列的轉(zhuǎn)換,只是可以采用分布式地方式去處理encoding.)

3. Bert (Bidirectional Encoder Representations from Transformers)

整個(gè)bert分為兩步,pre-training和fine-tuning。在pre-training部分,在不同的pre-training任務(wù)中在未標(biāo)記的數(shù)據(jù)上進(jìn)行訓(xùn)練,在fine-tuning部分,模型先使用pre-trained的參數(shù)初始化,然后在下游任務(wù)中用標(biāo)記數(shù)據(jù)對(duì)所有參數(shù)進(jìn)行微調(diào),雖然初始化用的都是相同的pre-trained參數(shù),但是在下游不同任務(wù)中可以有不同的fine-tuning模型。

(參考網(wǎng)址:https://zhuanlan.zhihu.com/p/103226488)

因?yàn)閜re-training需要大量的數(shù)據(jù)和大量的計(jì)算資源,所以google開(kāi)源了多國(guó)的語(yǔ)言預(yù)訓(xùn)練模型,我們可以在這個(gè)基礎(chǔ)上進(jìn)行fine-tuning。

為了使bert可以適應(yīng)下游的任務(wù),輸入被改造成: [CLS]+句子A(+[SEP]+句子B+[SEP])。其中[CLS]代表的是分類任務(wù)中的特殊token,它的輸出就是模型的pooler output;[SEP]為分隔符;句子A和句子B是模型的輸入文本,其中句子B可以為空。

bert使用兩個(gè)非監(jiān)督任務(wù)來(lái)pre-training模型:

task1 masked LM: 為了訓(xùn)練深度雙向模型,作者使用了一種隨機(jī)掩蓋一定百分比的輸入詞的方法,然后再去預(yù)測(cè)這些掩蓋的詞,這種方法叫做Masked LM (MLM)。其實(shí)就可以想象成是完形填空,在作者實(shí)驗(yàn)中使用的 15%的詞,也就是隨機(jī)掩蓋15%的詞,然后再去預(yù)測(cè) 這些掩蓋的詞。

task2 Next Sequence Prediction: 很多下游任務(wù)比如QA, Natural language inference都是基于對(duì)兩個(gè)句子之間的關(guān)系去理解的,但是在語(yǔ)言模型中沒(méi)有捕捉到這個(gè)信息,bert就是為了解決這個(gè)問(wèn)題,加入了NSP訓(xùn)練任務(wù)。50%的時(shí)間選擇句子A真正的下一個(gè)句子B作為一個(gè)句子對(duì)(標(biāo)記為IsNext), 50%的時(shí)間選擇句子A和隨機(jī)句子作為句子對(duì)(標(biāo)記為NotNext)訓(xùn)練數(shù)據(jù)就是這樣,雖然簡(jiǎn)單,但是很有效。

bert使用了MLM+NSP的多任務(wù)學(xué)習(xí)模式,并利用Tansformer的self-attention機(jī)制實(shí)現(xiàn)雙向功能,設(shè)計(jì)了更通用的輸入和輸出層,適配了多任務(wù)下的遷移學(xué)習(xí)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容