斯坦福大学深度学习与自然语言处理第三讲:高级的词向量表示
斯坦福大學在三月份開設了一門“深度學習與自然語言處理”的課程:CS224d: Deep Learning for Natural Language Processing,授課老師是青年才俊?Richard Socher,以下為相關的課程筆記。
第三講:高級的詞向量表示(Advanced word vector representations: language models, softmax, single layer networks)
推薦閱讀材料:
以下是第三講的相關筆記,主要參考自課程的slides,視頻和其他相關資料。
回顧:簡單的word2vec模型
- 代價函數J
- 其中的概率函數定義為:
- 我們主要從內部向量(internal vector)vwI導出梯度
計算所有的梯度
- 我們需要遍歷每一個窗口內的中心向量(center vector)的梯度
- 我們同時需要每一個外部向量(external vectors)v′的梯度
- 通常的話在每一個窗口內我們將更新計算所有用到的參數
- 例如在一個窗口長度為1的句子里:I like learning
- 第一個窗口里計算的梯度包括:內部向量vlike, 外部向量v′I及v′learning
- 同理更新計算句子的下一個窗口里的參數
計算所有的向量梯度
- 我們經常在一個模型里把所有的參數集合都定義在一個長的向量θ里
- 在我們的例子里是一個d維度的向量及一個長度為V的詞匯集:
梯度下降
- 要在整個訓練集上最小化代價函數J(θ)需要計算所有窗口里的參數梯度
- 對于參數向量θ來說需要更新其中每一個元素:
- 這里α是步長
- 從矩陣的角度來看參數更新:
梯度下降相關代碼
隨機梯度下降(SGD)
- 對于上述梯度下降的方法,訓練集語料庫有可能有400億(40B)的token和窗口
- 一輪迭代更新需要等待很長的時間
- 對于非常多的神經網絡節點來說這不是一個好方法
- 所以這里我們使用隨機梯度下降(SGD):在每一個窗口計算完畢后更新所有的參數
詞向量的隨機梯度下降
- 但是在每一個窗口里,我們僅有2c-1個詞,這樣的話δθJt(θ)非常稀疏
- 我們也許僅僅應該只更新那些確實存在的詞向量
- 解決方案:或者保留詞向量的哈稀或者更新詞嵌入矩陣L和L′的固定列
- 很重要的一點是如果你有上百萬個詞向量并且在做分布式訓練的話就不需要發送大量的更新信息了
PSet1
- 歸一化因子的計算代價很大
- 因此在PSet1你們將實現skip-gram模型
- 主要的思路:對一對實際的詞對(一個中心詞及一個窗口內的其他詞)和一些隨機的詞對(一個中心詞及一個隨機詞)訓練二元邏輯回歸模型
PSet1: The skip-gram model and negative sampling
- 來源論文:Distributed Representations of Words and Phrases and their Compositionality(Mikolov et al. 2013)
- 這里k是我們所使用的負例采樣(negative sampling)的樣本數
- Sigmoid函數:
- 所以我們最大化第一個log處兩個詞的共現概率
- 更進一步比較清晰的公式:
- 最大化在中心詞周邊真實詞對的概率;最小化中心詞周邊隨機詞對的概率
- 這里unigram分布U(w)被賦予了3/4冪次方,這樣可以保證一些出現比較少的詞可以被盡可能多的抽樣
What to do with the two sets of vectors?
- 我們從所有的向量v和v′中得到了L和L′
- 這兩個都獲得了相似的共現信息,如何有效的利用著兩個向量集?一個簡單有效的方法,對它們進行加和
- 在GloVe中對許多超參數進行了探究:?Global Vectors for Word Representation(Pennington et al. (2014))
如何評測詞向量
- 和一般的NLP評測任務相似:內部 vs 外部(Intrinsic vs extrinsic)
- 內部評測:
- 在一個特定的子任務中進行評測
- 計算迅速
- 有助于理解相關的系統
- 不太清楚是否有助于真實任務除非和實際的NLP任務的相關性已經建立起來
- 外部評測:
- 在一個真實任務中進行評測
- 需要花很長的實際來計算精度
- 不太清楚是否是這個子系統或者其他子系統引起的問題
- 如果用這個子系統替換原有的系統后獲得精度提升–>有效(Winning!)
詞向量的內部評測:
- 詞向量類比:語法和語義
- 通過評測模型在一些語義或語法類比問題上的余弦相似度距離的表現來評測詞向量
- 去除一些來自于搜索的輸入詞
- 問題:如果信息符合但不是線性的怎么辦?
詞向量的內部評測例一
- 詞向量類比:以下語法和語義例子來源于:https://code.google.com/p/word2vec/source/browse/trunk/questions-words.txt
- 存在的問題:不同的城市可能存在相同的名字
詞向量的內部評測例二
- 詞向量類比:以下語法和語義例子來源于:https://code.google.com/p/word2vec/source/browse/trunk/questions-words.txt
詞向量的內部評測例三
- 詞向量類比:以下語法和語義例子來源于:https://code.google.com/p/word2vec/source/browse/trunk/questions-words.txt
詞向量的內部評測例四
- 詞向量類比:以下語法和語義例子來源于:https://code.google.com/p/word2vec/source/browse/trunk/questions-words.txt
類比評測和超參數
- 目前為止最細致的評測: GloVe 詞向量
- 非對稱上下文(僅有左側的單詞)并不是很好
- 最佳的向量維度:300左右,之后變化比較輕微
- 但是對于不同的“下游”任務來說最佳的維度也會不同
- 對于GloVe向量來說最佳的窗口長度是8
- 訓練的時間約長是否有幫助:對于GloVe來說確實有助于
- 更多的數據是否有幫助?維基百科的數據比新聞數據更相關
詞向量的內部評價
- 評測任務:詞向量距離以及和人工評價的相關性
- 評測集:WordSim353(http://www.cs.technion.ac.il/~gabr/resources/data/wordsim353/)
- 相關性評測結果:
如何應對歧義問題(But what about ambiguity?)
- 也許你寄希望于一個詞向量能捕獲所有的語義信息(例如run即是動車也是名詞),但是這樣的話詞向量會被辣向兩個方向
- 這篇論文對此有相應的描述:Improving Word Representations Via Global Context And Multiple Word Prototypes(Huang et al. 2012)
- 解決思路:對詞窗口進行聚類,并對每個單詞詞保留聚類標簽,例如bank1,?bank2等
詞向量的外部評價
- 一個例子NER(named entity recognition):好的詞向量會對實際任務有直接的幫助
- 命名實體識別(NER):找到人名,地名和機構名
- 命名實體識別(NER):找到人名,地名和機構名
- 下一步:如何在神經網絡模型中使用詞向量
簡單的單個詞的分類問題
- 從深度學習的詞向量中最大的獲益是什么?
- 有能力對單詞進行精確的分類
- 國家類的單詞可以聚和到一起–>因此可以通過詞向量將地名類的單詞區分出來
- 可以在其他的任務中將單詞的任意信息融合進來
- 可以將情感分析(Sentiment)問題映射到單詞分類中:在語料庫中尋找最具代表性的正/負例單詞
- 有能力對單詞進行精確的分類
The Softmax
- 邏輯回歸 = Softmax分類在給定詞向量x的情況下獲得y類的概率
The Softmax – 細節
- 術語:損失函數(Loss function) = 代價函數(Cost function) = 目標函數(Objective function)
- Softmax的損失(Loss): 交叉熵(Cross Entropy)
- 如何計算p(y|x): 取W的y′行乘以含x的行
- 計算所有的fc, c = 1, 2, … , C
- 歸一化計算Softmax函數的概率
Softmax和交叉熵誤差
- 目標是最大化正確分類y的概率
- 因此,我們可以最小化改函數負的對數概率
- 因此,如果有多個類別我們可以在總的誤差函數中疊加多個交叉熵誤差
背景:交叉熵 & KL散度
- 假設分布是:p = [0,…,0,1,0,…0], 對應計算的概率分布是q,則交叉熵是:
- 因為p是one-hot的緣故,則上述公式剩余的則是真實類的負的對數概率
- 交叉熵可以寫成熵和兩個分布的KL散度之和
- 在我們的case里p是0(即使不是0也會因為它是固定的對梯度沒有固定),最小化交叉熵等價于最小化KL散度
- KL散度并非是一個距離函數而是一個對于兩個概率分布差異的非對稱的度量
- 維基百科:KL散度是兩個概率分布P和Q差別的非對稱性的度量。 KL散度是用來 度量使用基于Q的編碼來編碼來自P的樣本平均所需的額外的位元數。 典型情況下,P表示數據的真實分布,Q表示數據的理論分布,模型分布,或P的近似分布。
簡單的單個單詞分類
- 例子:情感分析
- 兩個選擇:僅僅訓練softmax權重W或者同時訓練詞向量
- 問題:訓練詞向量的優點和缺點是什么
- Pro: 更好的適應訓練數據
- Con: 更差的泛化能力
訓練的詞向量的情感分享可視化
繼續“打怪升級”:窗口分類(Window classification)
- 單個的單詞沒有上下文信息
- 通過對窗口中的中心詞進行分類同時考慮窗口中的上下文
- 可能性:Softmax 和 交叉熵誤差 或者 最大邊界損失(max-margin loss)
- 我們將在下一講中探索這些問題(next class)
注:原創文章,轉載請注明出處及保留鏈接“我愛自然語言處理”:http://www.52nlp.cn
本文鏈接地址:斯坦福大學深度學習與自然語言處理第三講:高級的詞向量表示
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的斯坦福大学深度学习与自然语言处理第三讲:高级的词向量表示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 斯坦福大学深度学习与自然语言处理第一讲:
- 下一篇: 斯坦福大学深度学习与自然语言处理第四讲: