CS224n笔记3 高级词向量表示
本文轉(zhuǎn)自:http://www.hankcs.com/nlp/cs224n-advanced-word-vector-representations.html
這節(jié)課從傳統(tǒng)的基于計(jì)數(shù)的全局方法出發(fā),過(guò)渡到結(jié)合兩者優(yōu)勢(shì)的GloVe,并介紹了詞向量的調(diào)參與評(píng)測(cè)方法。
復(fù)習(xí):word2vec的主要思路
-
遍歷整個(gè)語(yǔ)料庫(kù)中的每個(gè)詞
-
預(yù)測(cè)每個(gè)詞的上下文:
-
然后在每個(gè)窗口中計(jì)算梯度做SGD
SGD與詞向量
但每個(gè)窗口最多只有2m + 1個(gè)單詞,所以?θJt(θ)會(huì)非常稀疏:
實(shí)際上有正確答案需要去對(duì)比的只有窗口中的詞語(yǔ)。所以每次更新只更新W矩陣中的少數(shù)列,或者為每個(gè)詞語(yǔ)建立到詞向量的哈希映射:
近似:負(fù)采樣
還有一個(gè)問(wèn)題亟待解決,詞表V的量級(jí)非常大,以至于下式的分母很難計(jì)算:
于是,練習(xí)1中要求用negative sampling實(shí)現(xiàn)skip-gram。這是一種采樣子集簡(jiǎn)化運(yùn)算的方法。
具體做法是,對(duì)每個(gè)正例(中央詞語(yǔ)及上下文中的一個(gè)詞語(yǔ))采樣幾個(gè)負(fù)例(中央詞語(yǔ)和其他隨機(jī)詞語(yǔ)),訓(xùn)練binary logistic regression(也就是二分類器)。
negative sampling和skip-gram
目標(biāo)函數(shù):
這里t是某個(gè)窗口,k是采樣個(gè)數(shù),P(w)是一個(gè)unigram分布,詳見(jiàn):http://www.hankcs.com/nlp/word2vec.html#h3-12?
σ是sigmoid函數(shù):
根據(jù)上次課講的,內(nèi)積可以代表相關(guān)性。那么這個(gè)目標(biāo)函數(shù)就是要最大化中央詞與上下文的相關(guān)概率,最小化與其他詞語(yǔ)的概率。
word2vec通過(guò)把相似的詞語(yǔ)放到同一個(gè)地方附近來(lái)增大目標(biāo)函數(shù):
?
?
其他方法
word2vec將窗口視作訓(xùn)練單位,每個(gè)窗口或者幾個(gè)窗口都要進(jìn)行一次參數(shù)更新。要知道,很多詞串出現(xiàn)的頻次是很高的。能不能遍歷一遍語(yǔ)料,迅速得到結(jié)果呢?
早在word2vec之前,就已經(jīng)出現(xiàn)了很多得到詞向量的方法,這些方法是基于統(tǒng)計(jì)共現(xiàn)矩陣的方法。如果在窗口級(jí)別上統(tǒng)計(jì)詞性和語(yǔ)義共現(xiàn),可以得到相似的詞。如果在文檔級(jí)別上統(tǒng)計(jì),則會(huì)得到相似的文檔(潛在語(yǔ)義分析LSA)。
基于窗口的共現(xiàn)矩陣
比如窗口半徑為1,在如下句子上統(tǒng)計(jì)共現(xiàn)矩陣:
-
I like deep learning.?
-
I like NLP.
-
I enjoy flying.
會(huì)得到:
樸素共現(xiàn)向量的問(wèn)題
根據(jù)這個(gè)矩陣,的確可以得到簡(jiǎn)單的共現(xiàn)向量。但是它存在非常多的局限性:
-
當(dāng)出現(xiàn)新詞的時(shí)候,以前的舊向量連維度都得改變
-
高緯度(詞表大小)
-
高稀疏性
解決辦法:低維向量
用25到1000的低維稠密向量來(lái)儲(chǔ)存重要信息。如何降維呢?
SVD吧:
r維降到d維,取奇異值最大的兩列作為二維坐標(biāo)可視化:
改進(jìn)
-
限制高頻詞的頻次,或者干脆停用詞
-
根據(jù)與中央詞的距離衰減詞頻權(quán)重
-
用皮爾遜相關(guān)系數(shù)代替詞頻
效果
方法雖然簡(jiǎn)單,但效果也還不錯(cuò):
SVD的問(wèn)題
-
不方便處理新詞或新文檔
-
與其他DL模型訓(xùn)練套路不同
Count based vs direct prediction
這些基于計(jì)數(shù)的方法在中小規(guī)模語(yǔ)料訓(xùn)練很快,有效地利用了統(tǒng)計(jì)信息。但用途受限于捕捉詞語(yǔ)相似度,也無(wú)法拓展到大規(guī)模語(yǔ)料。
而NNLM, HLBL, RNN, Skip-gram/CBOW這類進(jìn)行預(yù)測(cè)的模型必須遍歷所有的窗口訓(xùn)練,也無(wú)法有效利用單詞的全局統(tǒng)計(jì)信息。但它們顯著地提高了上級(jí)NLP任務(wù),其捕捉的不僅限于詞語(yǔ)相似度。
綜合兩者優(yōu)勢(shì):GloVe
這種模型的目標(biāo)函數(shù)是:
?
優(yōu)點(diǎn)是訓(xùn)練快,可以拓展到大規(guī)模語(yǔ)料,也適用于小規(guī)模語(yǔ)料和小向量。
明眼人會(huì)發(fā)現(xiàn)這里面有兩個(gè)向量u和v,它們都捕捉了共現(xiàn)信息,怎么處理呢?試驗(yàn)證明,最佳方案是簡(jiǎn)單地加起來(lái):
相對(duì)于word2vec只關(guān)注窗口內(nèi)的共現(xiàn),GloVe這個(gè)命名也說(shuō)明這是全局的(我覺(jué)得word2vec在全部語(yǔ)料上取窗口,也不是那么地local,特別是負(fù)采樣)。
評(píng)測(cè)方法
有兩種方法:Intrinsic(內(nèi)部) vs extrinsic(外部)
Intrinsic:專門設(shè)計(jì)單獨(dú)的試驗(yàn),由人工標(biāo)注詞語(yǔ)或句子相似度,與模型結(jié)果對(duì)比。好處是是計(jì)算速度快,但不知道對(duì)實(shí)際應(yīng)用有無(wú)幫助。有人花了幾年時(shí)間提高了在某個(gè)數(shù)據(jù)集上的分?jǐn)?shù),當(dāng)將其詞向量用于真實(shí)任務(wù)時(shí)并沒(méi)有多少提高效果,想想真悲哀。
Extrinsic:通過(guò)對(duì)外部實(shí)際應(yīng)用的效果提升來(lái)體現(xiàn)。耗時(shí)較長(zhǎng),不能排除是否是新的詞向量與舊系統(tǒng)的某種契合度產(chǎn)生。需要至少兩個(gè)subsystems同時(shí)證明。這類評(píng)測(cè)中,往往會(huì)用pre-train的向量在外部任務(wù)的語(yǔ)料上retrain。
Intrinsic word vector evaluation
也就是詞向量類推,或說(shuō)“A對(duì)于B來(lái)講就相當(dāng)于C對(duì)于哪個(gè)詞?”。這可以通過(guò)余弦?jiàn)A角得到:
我曾經(jīng)通過(guò)這些方法驗(yàn)證了民間很多流行的word2vec實(shí)現(xiàn)準(zhǔn)確率比原版低幾十個(gè)百分點(diǎn):http://www.hankcs.com/nlp/word2vec.html#h2-15?
這種方法可視化出來(lái),會(huì)發(fā)現(xiàn)這些類推的向量都是近似平行的:
下面這張圖說(shuō)明word2vec還可以做語(yǔ)法上的類比:
其他有趣的類比:
這在數(shù)學(xué)上是沒(méi)有證明的。
結(jié)果對(duì)比
在不同大小的語(yǔ)料上,訓(xùn)練不同維度的詞向量,在語(yǔ)義和語(yǔ)法數(shù)據(jù)集上的結(jié)果如下:
GloVe的效果顯著地更好。另外,高緯度并不一定好。而數(shù)據(jù)量越多越好。
調(diào)參
窗口是否對(duì)稱(還是只考慮前面的單詞),向量維度,窗口大小:
大約300維,窗口大小8的對(duì)稱窗口效果挺好的,考慮到成本。
對(duì)GloVe來(lái)講,迭代次數(shù)越多越小,效果很穩(wěn)定:
維基百科語(yǔ)料上得到的效果比新聞?wù)Z料要好:
另一個(gè)數(shù)據(jù)集
還有直接人工標(biāo)注詞語(yǔ)相似度的:
www.cs.technion.ac.il/~gabr/resources/data/wordsim353/?
對(duì)某個(gè)單詞相似度排序后,得到最相關(guān)的詞語(yǔ)。于是可以量化評(píng)測(cè)了。
Extrinsic word vector evaluation
做NER實(shí)驗(yàn):
GloVe效果依然更好,但從數(shù)據(jù)上來(lái)看只好那么一點(diǎn)點(diǎn)。
視頻中還談了談一些適合word vector的任務(wù),比如單詞分類。有些不太適合的任務(wù),比如情感分析。課件中則多了一張談消歧的,中心思想是通過(guò)對(duì)上下文的聚類分門別類地重新訓(xùn)練。
相同顏色的是同一個(gè)單詞的不同義項(xiàng)。
TA也講過(guò)這個(gè)問(wèn)題。
轉(zhuǎn)載于:https://www.cnblogs.com/koocn/p/7699051.html
總結(jié)
以上是生活随笔為你收集整理的CS224n笔记3 高级词向量表示的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: node.js上传图片
- 下一篇: 动态路由选择协议(二)距离矢量路由选择协