斯坦福CS224N深度學習自然語言處理(三)
國內視頻地址:斯坦福CS224N深度學習自然語言處理課程(三)GloVe詞向量表示
Lecture 3: More Word Vectors
AtDeepertLooktattWordtVectors :
?? Finishtword2vect
?? Whattdoestword2vectcapture?t
?? HowtcouldtwetcapturetthistessencetmoreteffecRvely?t?? Howtcantwetanalyzetwordtvectors?t n(了解w2c的本質,以及如何對其進行分析。)
(稀疏問題)
(做正則時非常消耗時間,因為要對全量詞表做exp操作。這裡引入negative sampling方法)
(主要思想就是使用窗口裡的word作為正樣本pair,但不再用全量窗口外的數據,而是使用一個窗口內的word和一個隨機word組成隨機noise pair。
兩種樣本的比例將是非常關鍵的地方,注意。)
(skip-gram model 和 negative sampling在下面這個paper中有介紹。)
(這裡值得細說一下我的理解:
這裡的是objective function並非loss function,不需要求其最小值,而是求最大值。是在語料中逐步移動的每一個窗口的objective function 的平均值。
又分成兩部分,由於log和都是正相關函數,表示的是與窗口中word的相關度,因此需要最大化該項。
後一部分表示隨機按照某種抽樣方法抽取k個word,得到隨機noise pair,需要使其最小,又由於log和都是正相關函數,因此添加了負號。
這裡,相當於對頻次過高的query進行一些打壓。
視頻課程中老師說k通常取10,不用太大。但下面這段話有些不解,是不是寫錯了?
)Summary of word2vec
? Go through each word of the whole corpus
? Predict surrounding words of each word
? This captures cooccurrence of words one at a time(其實本質上就是獲得words間的共現信息。)但是:
(假如我們把窗口擴大到doc的大小,此時獲取到的是topic話題信息~潛在語義分析,而之前使用的窗口,會得到句法語法的信息。
再回到上面的問題,為什麼不直接統計語料中words的共現頻次?)
(統計出來的共現頻次表確實可以表徵出來word之間的關聯信息。但也存在著某些問題。)
Problems with simple co-occurrence vectors
- Increase in size with vocabulary
- Very high dimensional: require a lot of storage
- Subsequent classification models have sparsity issues
- Models are less robust
(每當語料擴充或是有新詞時,需要刷新並且該表的規模也隨之增長。需要N*N的高維存儲,N為辭彙量,通常都很大。對於一些情況下有稀疏問題,因為沒統計到就為0。同時,缺少魯棒性。)
解決方案就是將高維空間壓縮到低維空間:
(第一個方法就是使用SVD,逐個正交的找到重要的方向,這裡簡單了解即可。)
一些小的技巧:
(一些有意思的語義pattern以及句法pattern上的merge,怎麼merge的?論文中應該有寫。)
SVD的缺點:計算開銷太大,同時處理新詞/文檔效果不佳(因為就是基於單純的共現統計嘛,只要是以這個為基礎都會遇到這個問題。)
基於共現統計與直接預測兩大類的比較:
(前者訓練速度快,(因為就是統計操作)同時有些利用統計信息。後者是有較強的泛化能力和處理複雜pattern的能力。)
能不能將兩者的優點進行聯合?因此有了GloVe。
(我的理解:和skip-gram不同,sg是通過窗口遍歷整個語料庫,而glove是先統計整個語料庫的共現矩陣,然後再在這個基礎上計算所有共現pair的loss
Pij是共現次數,f(Pij)是控制該pair的權重,貢獻次數越大,權重越高。當高於某個閾值後,權重均為1,不再變化。
後面的square loss,目的是希望頻次高時,兩者的相似度(即兩個向量點乘結果)也大,這樣使得整體loss變小。)
(具體的在上述標亮的paper中。然後又介紹了另外一篇paper,由於不屬於課程主線,這裡先跳過,後續會對該paper做一個單獨的摘要。有關word語義的線性結構,用於多義詞方面)
How to evaluate word vectors?
給出了一些經驗上的參數,當然得具體問題具體分析。
(glove和sg的對比效果。
為什麼sg會抖動的那麼明顯?)
(關於多義,相當於把一個word,在不同的cluster中保存了多份。)
(word vector一個很好的應用就是實體識別。)
Next lecture:
? Word classificaRon
? With context
? Neural networks
推薦閱讀:
※記憶網路之Gated End-to-End Memory Networks
※聊聊文本的分散式表示: Distributional Representation和Distributed Representation的區別
※理解樸素貝葉斯分類的拉普拉斯平滑
※隱馬爾可夫模型的預測問題----維特比演算法
TAG:自然语言处理 | 深度学习DeepLearning | 世界名校公开课推荐 |