斯坦福大学深度学习与自然语言处理第二讲:词向量
斯坦福大學(xué)在三月份開設(shè)了一門“深度學(xué)習(xí)與自然語言處理”的課程:CS224d: Deep Learning for Natural Language Processing,授課老師是青年才俊?Richard Socher,以下為相關(guān)的課程筆記。
第二講:簡單的詞向量表示:word2vec,?Glove(Simple Word Vector representations: word2vec, GloVe)
推薦閱讀材料:
以下是第二講的相關(guān)筆記,主要參考自課程的slides,視頻和其他相關(guān)資料。
如何來表示一個詞的意思(meaning)
- 英文單詞Meaning的定義(來自于韋氏詞典)
- the idea that is represented by a word, phrase, etc.
- the idea that a person wants to express by using words, signs, etc.
- the idea that is expressed in a work of writing, art, etc.
在計(jì)算機(jī)中如何表示一個詞的意思
- 通常使用類似Wordnet的這樣的語義詞典,包含有上位詞(is-a)關(guān)系和同義詞集
- panda的上位詞,來自于NLTK中wordnet接口的演示
- good的同義詞集
語義詞典存在的問題
- 語義詞典資源很棒但是可能在一些細(xì)微之處有缺失,例如這些同義詞準(zhǔn)確嗎:adept, expert, good, practiced, proficient,skillful?
- 會錯過一些新詞,幾乎不可能做到及時更新: wicked, badass, nifty, crack, ace, wizard, genius, ninjia
- 有一定的主觀傾向
- 需要大量的人力物力
- 很難用來計(jì)算兩個詞語的相似度
One-hot Representation
- 傳統(tǒng)的基于規(guī)則或基于統(tǒng)計(jì)的自然語義處理方法將單詞看作一個原子符號:hotel, conference, walk
- 在向量空間的范疇里,這是一個1很多0的向量表示:[0,0,0,0,…,0,1,0,…,0,0,0]
- 維數(shù):20K(speech)–50K(PTB)–500K(big vocab)–13M(Google 1T)
- 這就是”one-hot”表示,這種表示方法存在一個重要的問題就是“詞匯鴻溝”現(xiàn)象:任意兩個詞之間都是孤立的。光從這兩個向量中看不出兩個詞是否有關(guān)系:
Distributional similarity based representations
- 通過一個詞語的上下文可以學(xué)到這個詞語的很多知識
- 這是現(xiàn)代統(tǒng)計(jì)NLP很成功的一個觀點(diǎn)
如何使用上下文來表示單詞
- 答案:使用共現(xiàn)矩陣(Cooccurrence matrix)X
- 2個選擇:全文還是窗口長度
- word-document的共現(xiàn)矩陣最終會得到泛化的主題(例如體育類詞匯會有相似的標(biāo)記),這就是淺層語義分析(LSA, Latent Semantic Analysis)
- 窗口長度容易捕獲語法(POS)和語義信息
基于窗口的共現(xiàn)矩陣:一個簡單例子
- 窗口長度是1(一般是5-10)
- 對稱(左右內(nèi)容無關(guān))
- 語料樣例
- I like deep learning.
- I like NLP.
- I enjoy flying
存在的問題
- 規(guī)模隨著語料庫詞匯的增加而增加
- 非常高的維度:需要大量的存儲
- 分類模型會遇到稀疏問題
- 模型不夠健壯
解決方案:低維向量
- idea: 將最重要的信息存儲在固定的,低維度的向量里:密集向量(dense vector)
- 維數(shù)通常是25-1000
- 問題:如何降維?
方法1:SVD(奇異值分解)
- 對共現(xiàn)矩陣X進(jìn)行奇異值分解
Python中簡單的詞向量SVD分解
- 語料:I like deep learning. I like NLP. I enjoy flying
- 打印U矩陣的前兩列這也對應(yīng)了最大的兩個奇異值
用向量來定義單詞的意思:
- 在相關(guān)的模型中,包括深度學(xué)習(xí)模型,一個單詞常常用密集向量(dense vector)來表示
Hacks to X
- 功能詞(the, he, has)過于頻繁,對語法有很大影響,解決辦法是降低使用或完全忽略功能詞
- 延展窗口增加對臨近詞的計(jì)數(shù)
- 用皮爾遜相關(guān)系數(shù)代替計(jì)數(shù),并置負(fù)數(shù)為0
- +++
詞向量中出現(xiàn)的一些有趣的語義Pattern
- 以下來自于:?An improved model of semantic similarity based on lexical co-occurence
使用SVD存在的問題
- 對于n*m矩陣來說計(jì)算的時間復(fù)雜度是o(mn^2) 當(dāng) n<m,當(dāng)單詞或者文檔數(shù)以百萬計(jì)時很糟糕< li="">
- 對于新詞或者新的文檔很難及時更新
- 相對于其他的DL模型,有著不同的學(xué)習(xí)框架
解決方案:直接學(xué)習(xí)低維度的詞向量
- 一些方法:和本講以及深度學(xué)習(xí)相關(guān)
- Learning representations by back-propagating errors(Rumelhart et al.,1986)
- A Neural Probabilistic Language Model(Bengio et al., 2003)
- Natural Language Processing (almost) from Scratch(Collobert & Weston,2008)
- word2vec(Mikolov et al. 2013)->本講介紹
word2vec的主要思路
- 與一般的共現(xiàn)計(jì)數(shù)不同,word2vec主要來預(yù)測單詞周邊的單詞
- GloVe和word2vec的思路相似:GloVe: Global Vectors for Word Representation
- 比較容易且快速的融合新的句子和文檔或者添加新的單詞進(jìn)入詞匯表
word2vec的主要思路
- 預(yù)測一個窗口長度為c的窗口內(nèi)每個單詞的周邊單詞概率
- 目標(biāo)函數(shù):對于一個中心詞,最大化周邊任意單詞的log概率
- 對于p(wt+j/wt)最簡單的表達(dá)式是:
- 這里v和v′分布是w的“輸入”和“輸出”向量表示(所以每個w都有兩個向量表示)
- 這就是基本的“動態(tài)”邏輯回歸(“dynamic” logistic regression)
代價/目標(biāo)函數(shù)
- 我們的目標(biāo)是優(yōu)化(最大化或最小化)代價/目標(biāo)函數(shù)
- 常用的方法:梯度下降
- 一個例子(來自于維基百科): 尋找函數(shù)f(x)=x4–3x3+2的局部最小點(diǎn),其導(dǎo)數(shù)是f′(x)=4x3–9x2
- Python代碼:
梯度的導(dǎo)數(shù)
- 白板(建議沒有直接上課的同學(xué)看一下課程視頻中的白板推導(dǎo))
- 有用的公式
- 鏈?zhǔn)椒▌t
word2vec中的線性關(guān)系
- 這類表示可以很好的對詞語相似度進(jìn)行編碼
- 在嵌入空間里相似度的維度可以用向量的減法來進(jìn)行類別測試
- 在嵌入空間里相似度的維度可以用向量的減法來進(jìn)行類別測試
計(jì)數(shù)的方法 vs 直接預(yù)測
GloVe: 綜合了兩類方法的優(yōu)點(diǎn)
- 訓(xùn)練更快
- 對于大規(guī)模語料算法的擴(kuò)展性也很好
- 在小語料或者小向量上性能表現(xiàn)也很好
GloVe的效果
- 英文單詞frog(青蛙)的最相近的詞
Word Analogies(詞類比)
- 對單詞之間的線性關(guān)系進(jìn)行測試(Mikolov et al.(2014))
Glove可視化一
Glove可視化二:Company-CEO
Glove可視化三:Superlatives
Word embedding matrix(詞嵌入矩陣)
- 提前訓(xùn)練好的詞嵌入矩陣
- 又稱之為查詢表(look-up table)
低維度詞向量的優(yōu)點(diǎn)
- 深度學(xué)習(xí)詞向量的最大優(yōu)勢是什么?
- 可以將任何信息表征成詞向量的形式然后通過神經(jīng)網(wǎng)絡(luò)進(jìn)行傳播
- 詞向量將是之后章節(jié)的基礎(chǔ)
- 我們所有的語義表示都將是向量形式
- 對于長的短語和句子也可以通過詞向量的形式組合為更復(fù)雜的表示,以此來解決更復(fù)雜的任務(wù)–>下一講
課程筆記索引:
斯坦福大學(xué)深度學(xué)習(xí)與自然語言處理第一講:引言參考資料:
Deep Learning in NLP (一)詞向量和語言模型
奇異值分解(We Recommend a Singular Value Decomposition)注:原創(chuàng)文章,轉(zhuǎn)載請注明出處及保留鏈接“我愛自然語言處理”:http://www.52nlp.cn
本文鏈接地址:斯坦福大學(xué)深度學(xué)習(xí)與自然語言處理第二講:詞向量
總結(jié)
以上是生活随笔為你收集整理的斯坦福大学深度学习与自然语言处理第二讲:词向量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 斯坦福大学深度学习与自然语言处理第四讲:
- 下一篇: 反向传播BP 算法之一种直观的解释