2.8 GloVe词向量-深度学习第五课《序列模型》-Stanford吴恩达教授
Glove 詞向量 (GloVe Word Vectors)
你已經了解了幾個計算詞嵌入的算法,另一個在NLP社區有著一定勢頭的算法是GloVe算法,這個算法并不如Word2Vec或是Skip-Gram模型用的多,但是也有人熱衷于它,我認為可能是因為它簡便吧,我們來看看這個算法。
Glove算法是由Jeffrey Pennington,Richard Socher和Chris Manning發明的。
(Pennington J, Socher R, Manning C. Glove: Global Vectors for Word Representation[C]// Conference on Empirical Methods in Natural Language Processing. 2014:1532-1543.)
GloVe代表用詞表示的全局變量(global vectors for word representation)。在此之前,我們曾通過挑選語料庫中位置相近的兩個詞,列舉出詞對,即上下文和目標詞,GloVe算法做的就是使其關系開始明確化。假定 XijX_{ij}Xij? 是單詞 iii 在單詞 jjj 上下文中出現的次數,那么這里 iii 和 jjj 就和 ttt 和 ccc 的功能一樣,所以你可以認為 XijX_{ij}Xij? 等同于 XtcX_{tc}Xtc? 。你也可以遍歷你的訓練集,然后數出單詞 iii 在不同單詞 jjj 上下文中出現的個數,單詞 ttt 在不同單詞 ccc 的上下文中共出現多少次。根據上下文和目標詞的定義,你大概會得出 XijX_{ij}Xij? 等于 XjiX_{ji}Xji? 這個結論。事實上,如果你將上下文和目標詞的范圍定義為出現于左右各10詞以內的話,那么就會有一種對稱關系。如果你對上下文的選擇是,上下文總是目標詞前一個單詞的話,那么 XijX_{ij}Xij? 和 XjiX_{ji}Xji? 就不會像這樣對稱了。不過對于GloVe算法,我們可以定義上下文和目標詞為任意兩個位置相近的單詞,假設是左右各10詞的距離,那么 XijX_{ij}Xij? 就是一個能夠獲取單詞 iii 和單詞 jjj 出現位置相近時或是彼此接近的頻率的計數器。
GloVe模型做的就是進行優化,我們將他們之間的差距進行最小化處理:
minimize∑i=110,000∑j=110,000f(Xij)(θiTej+bi+bj′?log?Xij)2minimize\sum_{i=1}^{10,000}\sum_{j=1}^{10,000}f(X_{ij})(\theta_i^Te_j+b_i+b_j\prime-\log X_{ij})^2minimizei=1∑10,000?j=1∑10,000?f(Xij?)(θiT?ej?+bi?+bj?′?logXij?)2
其中 θiTej\theta_i^Te_jθiT?ej? ,想一下 iii 和 jjj 與 ttt 和 ccc 的功能一樣,因此這就和你之前看的有些類似了,即 θtTec\theta_t^Te_cθtT?ec? 。同時對于這個( θtTec\theta_t^Te_cθtT?ec? ,下圖編號1所示)來說,你想要知道的是告訴你這兩個單詞之間有多少聯系, ttt 和 ccc 之間有多緊密, iii 和 jjj 之間聯系程度如何,換句話說就是他們同時出現的頻率是多少,這是由這個 XijX_{ij}Xij? 影響的。然后,我們要做的是解決參數 θ\thetaθ 和 eee 的問題,然后準備用梯度下降來最小化上面的公式,你只想要學習一些向量,這樣他們的輸出能夠對這兩個單詞同時出現的頻率進行良好的預測。
現在一些附加的細節是如果 XijX_{ij}Xij? 是等于0的話,那么 log?0\log0log0 就是未定義的,是負無窮大的,所以我們想要對 XijX_{ij}Xij? 為0時進行求和,因此要做的就是添加一個額外的加權項 f(Xij)f(X_{ij})f(Xij?) (上圖編號2所示)。如果 XijX_{ij}Xij? 等于0的話,同時我們會用一個約定,即 0log?0=00\log0=00log0=0 ,這個的意思是如果 Xij=0X_{ij}=0Xij?=0,先不要進行求和,所以這個 log?0\log0log0 項就是不相關項。上面的求和公式表明,這個和僅是一個上下文和目標詞關系里連續出現至少一次的詞對的和。 f(Xij)f(X_{ij})f(Xij?) 的另一個作用是,有些詞在英語里出現十分頻繁,比如說this,is,of,a等等,有些情況,這叫做停止詞,但是在頻繁詞和不常用詞之間也會有一個連續統(continuum)。不過也有一些不常用的詞,比如durion,你還是想將其考慮在內,但又不像那些常用詞這樣頻繁。因此,這個加權因子 f(Xij)f(X_{ij})f(Xij?) 就可以是一個函數,即使是像durion這樣不常用的詞,它也能給予大量有意義的運算,同時也能夠給像this,is,of,a這樣在英語里出現更頻繁的詞更大但不至于過分的權重。因此有一些對加權函數f的選擇有著啟發性的原則,就是既不給這些詞(this,is,of,a)過分的權重,也不給這些不常用詞(durion)太小的權值。如果你想要知道 fff 是怎么能夠啟發性地完成這個功能的話,你可以看一下我之前的幻燈片里引用的GloVe算法論文。
最后,一件有關這個算法有趣的事是 θ\thetaθ 和 eee 現在是完全對稱的,所以那里的 θi\theta_iθi? 和 eje_jej? 就是對稱的。如果你只看數學式的話,他們( θi\theta_iθi? 和 eje_jej? )的功能其實很相近,你可以將它們顛倒或者將它們進行排序,實際上他們都輸出了最佳結果。因此一種訓練算法的方法是一致地初始化 θ\thetaθ 和 eee ,然后使用梯度下降來最小化輸出,當每個詞都處理完之后取平均值,所以,給定一個詞 www ,你就會有 ew(final)=ew+θw2e_w^{(final)}=\frac{e_w+\theta_w}{2}ew(final)?=2ew?+θw?? 。因為 θ\thetaθ 和 eee 在這個特定的公式里是對稱的,而不像之前視頻里我們了解的模型, θ\thetaθ 和 eee 功能不一樣,因此也不能像那樣取平均。
這就是GloVe算法的內容,我認為這個算法的一個疑惑之處是如果你看著這個等式,它實在是太簡單了,對吧?僅僅是最小化,像這樣的一個二次代價函數(上圖編號3所示)是怎么能夠讓你學習有意義的詞嵌入的呢?但是結果證明它確實有效,發明者們發明這個算法的過程是他們以歷史上更為復雜的算法,像是newer language模型,以及之后的Word2Vec、Skip-Gram模型等等為基礎,同時希望能夠簡化所有之前的算法才發明的。
在我們總結詞嵌入學習算法之前,有一件更優先的事,我們會簡單討論一下。就是說,我們以這個特制的表格作為例子來開始學習詞向量,我們說,第一行的嵌入向量是來表示Gender的,第二行是來表示Royal的,然后是是Age,在之后是Food等等。但是當你在使用我們了解過的算法的一種來學習一個詞嵌入時,例如我們之前的幻燈片里提到的GloVe算法,會發生一件事就是你不能保證嵌入向量的獨立組成部分是能夠理解的,為什么呢?
假設說有個空間,里面的第一個軸(上圖編號1所示)是Gender,第二個軸(上圖編號2所示)是Royal,你能夠保證的是第一個嵌入向量對應的軸(上圖編號3所示)是和這個軸(上面提到的第一和第二基軸,編號1,2所示)有聯系的,它的意思可能是Gender、Royal、Age和Food。具體而言,這個學習算法會選擇這個(上圖編號3所示)作為第一維的軸,所以給定一些上下文詞,第一維可能是這個軸(上圖編號3所示),第二維也許是這個(上圖編號4所示),或者它可能不是正交的,它也可能是第二個非正交軸(上圖編號5所示),它可以是你學習到的詞嵌入中的第二部分。當我們看到這個(上圖編號6所示)的時候,如果有某個可逆矩陣 AAA ,那么這項(上圖編號6所示)就可以簡單地替換成 (Aθi)T(A?Tej)(A\theta_i)^T(A^{-T}e_j)(Aθi?)T(A?Tej?) ,因為我們將其展開:
(Aθi)T(A?Tej)=θiTATA?Tej=θiTej(A\theta_i)^T(A^{-T}e_j)=\theta^T_iA^TA^{-T}e_j=\theta_i^Te_j(Aθi?)T(A?Tej?)=θiT?ATA?Tej?=θiT?ej?
不必擔心,如果你沒有學過線性代數的話會,和這個算法一樣有一個簡單證明過程。你不能保證這些用來表示特征的軸能夠等同于人類可能簡單理解的軸,具體而言,第一個特征可能是個Gender、Roya、Age、Food Cost和Size的組合,它也許是名詞或是一個行為動詞和其他所有特征的組合,所以很難看出獨立組成部分,即這個嵌入矩陣的單行部分,然后解釋出它的意思。盡管有這種類型的線性變換,這個平行四邊形映射也說明了我們解決了這個問題,當你在類比其他問題時,這個方法也是行得通的。因此盡管存在特征量潛在的任意線性變換,你最終還是能學習出解決類似問題的平行四邊形映射。
這就是詞嵌入學習的內容,你現在已經了解了一些學習詞嵌入的算法了,你可以在本周的編程練習里更多地運用它們。下節課講解怎樣使用這些算法來解決情感分類問題。
總結
以上是生活随笔為你收集整理的2.8 GloVe词向量-深度学习第五课《序列模型》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2.7 负采样-深度学习第五课《序列模型
- 下一篇: 2.9 情感分类-深度学习第五课《序列模