NLP:词向量与ELMo模型笔记
目錄:
基礎(chǔ)部分回顧(詞向量、語言模型)
NLP的核心:學(xué)習(xí)不同語境下的語義表示
基于LSTM的詞向量學(xué)習(xí)
深度學(xué)習(xí)中的層次表示以及Deep BI-LSTM
ELMo模型
總結(jié)
1. 基礎(chǔ)部分回顧(詞向量、語言模型)
1.1 獨(dú)熱編碼-詞的表示
1.2 詞向量-詞的表示
我們?yōu)槭裁葱枰~向量?(One-hot向量的缺點(diǎn)?)
基于One-hot能否表示單詞之間語義相似度?
1.2.1 基于One-hot能否表示單詞之間語義相似度?
答:不可以。因?yàn)?#xff0c;我們不管是通過歐式距離還是通過余弦相似度,計(jì)算用One-hot表示的詞編碼都是一樣的距離,不能區(qū)分單詞之間語義的相似度。比如,計(jì)算:我們、爬山的歐式距離、余弦相似度:
(爬山、運(yùn)動(dòng))的歐式距離是? ,(運(yùn)動(dòng)、昨天)的歐式距離是? 。當(dāng)然每個(gè)詞之間的余弦相似度也都是相同的。詞向量學(xué)習(xí)到的每個(gè)向量都是用不同的浮點(diǎn)數(shù)表示,計(jì)算每個(gè)單詞的相似度是不一樣的,可以表示單詞之間語義相似度。
1.2.2 One-hot向量的缺點(diǎn)?
One-hot向量稀疏性,詞向量是稠密向量;
One-hot向量不能表示單詞之間語義相似度;
詞向量從2013年提出開始,慢慢的發(fā)展成現(xiàn)在的Bert、XLNet等比較前言的技術(shù)。
1.3 詞向量-詞向量的可視化
把詞向量表示成二維數(shù)據(jù)后,可以發(fā)現(xiàn)類似的單詞是聚在一起的,因此可以得出詞向量可以區(qū)分單詞之間語義的相似度。
詞向量的可視化常用的算法是sklearn中的T-SNE,它是一種降維算法。降維算法還有PCA、ICA、LDA,針對(duì)詞向量的降維我們通常使用T-SNE,Bengio在他文章中介紹T-SNE非常清楚。我自己找了一下Bengio的文章,沒有找到介紹T-SNE的內(nèi)容,誰找到告訴一下哈!
1.4 詞向量-學(xué)習(xí)詞向量
把一堆文本輸入到某些模型中,我們可以得到詞向量。模型包括:CBOW、Skip-Gram、NNLM、Glove、MF、ELMo、Gaus Embedding、LDA、Bert等。
2. NLP的核心:學(xué)習(xí)不同語境下的語義表示
2.1 語言模型-概念
2.2 語言模型-對(duì)于句子的計(jì)算
2.2.1 Chain Rule
貝葉斯公式:
Chain Rule:
2.2.2 Chain Rule for Language Model
2.2.3 Markov Assumption
一階馬爾科夫假設(shè):
休息今天是春節(jié)我們都休息都
二階馬爾科夫假設(shè):
休息今天是春節(jié)我們都休息我們都
三階馬爾科夫假設(shè):
休息今天是春節(jié)我們都休息春節(jié)我們都
2.2.4 Language Model(Use 1st Order)
假設(shè)現(xiàn)在我們知道這些單詞的概率:
P(是|今天) = 0.01
P(今天) = 0.002
P(周日|是) = 0.001
P(周日|今天) = 0.0001
P(周日) = 0.02
P(是|周日) = 0.0002
比較:“今天是周日 VS 今天周日是 ”兩句話哪一句從語法上更通順?
顯然, P(今天是周日) >P(今天周日是) 。
ELMo是基于語言模型的目標(biāo)函數(shù)進(jìn)行訓(xùn)練的。
2.3 語言模型-相關(guān)必要知識(shí)點(diǎn)
Chain Rule, Markov Assumption
Unigram, Bigram, Ngram
Add-one smoothing, Good-turning smoothing...
Perplexity
圖片來源于:網(wǎng)友
2.4 基于分布式表示的模型總覽
介紹詞向量的總覽,各個(gè)詞向量模型之間的聯(lián)系和區(qū)別。
Global方法:把非常大的數(shù)據(jù)放到模型中學(xué)習(xí),得到全局的數(shù)據(jù)信息。優(yōu)勢(shì):可以從全局的角度考慮問題。劣勢(shì):1)計(jì)算量很大;2)不能在線學(xué)習(xí)。
Local方法:基于窗口式的方法進(jìn)行訓(xùn)練,是一種局部的方法。優(yōu)勢(shì):1)可以隨時(shí)的增加數(shù)據(jù)進(jìn)行訓(xùn)練,也就是可以在線學(xué)習(xí);2)可以用在大數(shù)據(jù)里面。缺點(diǎn):不能從全局的角度考慮問題。
基于語言模型的訓(xùn)練:對(duì)于一個(gè)語言序列?,我們有? 可以預(yù)測(cè)? ,有? 可以預(yù)測(cè)? ,有? 可以預(yù)測(cè)? ,有? 可以預(yù)測(cè)? 。我們可以把這樣一個(gè)過程寫成目標(biāo)函數(shù)?,目標(biāo)函數(shù)基于語言模型的目標(biāo)函數(shù)進(jìn)行訓(xùn)練的模型叫做基于語言模型的訓(xùn)練方式。
2.5 建議的學(xué)習(xí)路徑
2.6 詞向量訓(xùn)練常見的方法
SkipGram方法:預(yù)測(cè)相鄰單詞的概率。
CBOW方法:已知兩邊單詞,預(yù)測(cè)中間單詞。
NNLM方法:基于語言模型和馬爾科夫假設(shè)進(jìn)行訓(xùn)練。
基于SkipGram、CBOW和NNLM的方法,我們可以訓(xùn)練出每一個(gè)單詞的固定詞向量。但是在同一句話中,這些方法不能表示相同單詞的不同語義。因此我們引出ELMo、Bert和XLNet。
即,如何學(xué)出一個(gè)單詞在不同上下文中的詞向量呢?
3. 基于LSTM的詞向量學(xué)習(xí)
3.1 利用LSTM學(xué)習(xí)詞向量(語言模型)
3.2 從單向LSTM到雙向LSTM
單向LSTM只能從左到右的預(yù)測(cè)單詞,有時(shí)我們想利用單詞左右兩邊的信息,即雙向信息,因此我們需要雙向LSTM。
XLNet用Permutation language model ?實(shí)現(xiàn)真正的雙向LSTM模型。
以下這種形式不是完全雙向的LSTM模型:
4. 深度學(xué)習(xí)中的層次表示以及Deep BI-LSTM
4.1 啟發(fā):深度學(xué)習(xí)中的層次表示(Hierarchical Representation)
越高級(jí)的特征表示越來越具體化。
4.2 How Human Brain Works
4.3 圖像中有層次表示,NLP中是否也有?
4.4 Deep BI-LSTM
4.5 訓(xùn)練以及使用
ELMo具體細(xì)節(jié)可以翻閱論文:Peters M E , Neumann M , Iyyer M , et al. Deep contextualized word representations[J]. 2018.
5. ELMo模型
5.1?ELMo的數(shù)學(xué)表達(dá)
5.2?實(shí)驗(yàn)
這一部分展示了ELMo模型論文中的實(shí)驗(yàn)結(jié)果。
6. 總結(jié)
本文是Microstrong在觀看李文哲在B站上講解的直播課程《詞向量與ELMo模型》的筆記。直播地址:https://live.bilibili.com/11869202
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)在線手冊(cè)深度學(xué)習(xí)在線手冊(cè)AI基礎(chǔ)下載(pdf更新到25集)備注:加入本站微信群或者qq群,請(qǐng)回復(fù)“加群”獲取一折本站知識(shí)星球優(yōu)惠券,請(qǐng)回復(fù)“知識(shí)星球”喜歡文章,點(diǎn)個(gè)在看 與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的NLP:词向量与ELMo模型笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手把手教你实现基于LSTM的情感分析(L
- 下一篇: 推荐几个实用的Python“小伎俩”