詞表示是自然語言處理的基礎哆致,一個好的詞向量在很大程度上決定了后續(xù)任務的上限。本文是我最近學習該部分內容的筆記患膛,主要參照的是基于神經網絡的詞和文檔語義向量表示方法研究一文摊阀,穿插了一些個人理解。內容較多踪蹬,錯誤難免驹溃,請拍磚~
分布表示(Distributional Representation)假說:上下文相似的詞,其語義也相似延曙。根據建模方式的不同豌鹤,主要分為三類:基于矩陣的分布表示、基于聚類的分布表示和基于神經網絡的分布表示枝缔。
盡管不同的分布表示方法使用了不同的技術手段獲取詞表示布疙,但由于這些方法均基于分布假說,它們的核心思想也都由兩部分組成:
- 選擇一種方式描述上下文
- 選擇一種模型刻畫目標詞與其上下文之間的關系愿卸。
基于矩陣的分布表示
基于矩陣的分布表示通常又稱為分布語義模型(distributional semantic models)灵临。這類方法需要構建一個“詞-上下文”矩陣,從矩陣中獲取詞的表示趴荸。在“詞-上下文”矩陣中儒溉,每行對應一個詞,每列表示一種不同的上下文发钝,矩陣中的每個元素對應相關詞和上下文的共現次數顿涣。在這種表示下波闹,矩陣中的一行,就成為了對應詞的表示涛碑,這種表示描述了該詞的上下文的分布精堕。由于分布假說認為上下文相似的詞,其語義也相似蒲障,因此在這種表示下歹篓,兩個詞的語義相似度可以直接轉化為兩個向量的空間距離。這類方法具體可以分為三個步驟:
- 選取上下文揉阎。最常見的有三種方法:第一種庄撮,將詞所在的文檔作為上下文,形成“詞-文檔”矩陣(term-document matrix)毙籽;第二種洞斯,將詞附近上下文中的各個詞(如上下文窗口中的5個詞)作為上下文,形成“詞-詞”矩陣惧财;第三種橄登,將詞附近上下文各詞組成的n-gram作為上下文 爷恳。在這三種方法中,“詞-文檔”矩陣非常稀疏,而“詞-詞”矩陣相對較為稠密座菠,效果一般好于前者抖单》ν停“詞-n-gram”相對“詞-詞”矩陣保留了詞序信息柳骄,建模更精確,但由于比前者更稀疏仰迁,實際效果不一定能超越前者甸昏。
- 確定矩陣中各元素的值⌒煨恚“詞-上下文”共現矩陣根據其定義施蜜,里面各元素的值應為詞與對應的上下文的共現次數。然而直接使用原始共現次數作為矩陣的值在大多數情況下效果并不好雌隅,因此研究人員提出了多種加權和平滑方法翻默,最常用的有tf-idf、PMI 和直接取log恰起。
- 矩陣分解(可選)修械。在原始的“詞-上下文”矩陣中,每個詞表示為一個非常高維(維度是不同上下文的總個數)且非常稀疏的向量检盼,使用降維技術可以將這一高維稀疏向量壓縮成低維稠密向量肯污。降維技術可以減少噪聲帶來的影響,但也可能損失一部分信息。最常用的分解技術包括奇異值分解(SVD)蹦渣、非負矩陣分解(NMF)哄芜、典型關聯分析(Canonical Correlation Analysis,CCA)剂桥、Hellinger PCA(HPCA)忠烛。
著名的 Global Vector模型(GloVe)就是基于矩陣的分布表示
基于聚類的分布表示(分布聚類)
基于聚類的分布表示又稱作分布聚類(distributional clustering)属提,這類方法通過聚類手段構建詞與其上下文之間的關系权逗。其中最經典的方法是布朗聚類(Brown clustering)。布朗聚類是一種層級聚類方法冤议,聚類結果為每個詞的多層類別體系斟薇。因此可以根據兩個詞的公共類別判斷這兩個詞的語義相似度。
這個方法似乎沒有太多主流的應用恕酸,所以我沒有做深入研究
基于神經網絡的分布表示(詞向量)
基于神經網絡的分布表示一般稱為詞向量堪滨、詞嵌入(word embedding)或分布式表示(distributed representation)。神經網絡詞向量表示技術通過神經網絡技術對上下文蕊温,以及上下文與目標詞之間的關系進行建模袱箱。由于神經網絡較為靈活,這類方法的最大優(yōu)勢在于可以表示復雜的上下文义矛。在前面基于矩陣的分布表示方法中发笔,最常用的上下文是詞。如果使用包含詞序信息的n-gram作為上下文凉翻,當n增加時了讨,n-gram的總數會呈指數級增長,此時會遇到維數災難問題制轰。而神經網絡在表示n-gram時前计,可以通過一些組合方式對n個詞進行組合,參數個數僅以線性速度增長垃杖。有了這一優(yōu)勢男杈,神經網絡模型可以對更復雜的上下文進行建模,在詞向量中包含更豐富的語義信息调俘。
神經網絡詞向量模型與其它分布表示方法一樣伶棒,均基于分布假說,核心依然是上下文的表示以及上下文與目標詞之間的關系的建模脉漏。構建上下文與目標詞之間的關系苞冯,最自然的一種思路就是使用語言模型。
語言模型
語言模型可以對一段文本的概率進行估計侧巨,對信息檢索舅锄、機器翻譯、語音識別等任務有著重要的作用。形式化講皇忿,統計語言模型的作用是為一個長度為的字符串確定一個概率分布畴蹭,表示其存在的可能性,其中到依次表示這段文本中的各個詞鳍烁。一般在實際求解過程中叨襟,通常采用下式計算其概率值:
在實踐中,如果文本的長度較長幔荒,上述公式右部的估算會非常困難糊闽。因此,研究者們提出使用一個簡化模型:n元模型(n-gram model)爹梁。在n元模型中估算條件概率時右犹,距離大于等于n的上文詞會被忽略,也就是對上述條件概率做了以下近似:
在元模型中姚垃,傳統的方法一般采用頻率計數的比例來估算元條件概率:
其中念链,表示文本序列在語料中出現的次數。
為了更好地保留詞序信息积糯,構建更有效的語言模型掂墓,我們希望在元模型中選用更大的。但是看成,當較大時君编,長度為序列出現的次數就會非常少,在按照上述公式估計元條件概率時绍昂,就會遇到數據稀疏問題啦粹,導致估算結果不準確。因此窘游,一般在百萬詞級別的語料中唠椭,三元模型是比較常用的選擇,同時也需要配合相應的平滑算法忍饰,進一步降低數據稀疏帶來的影響贪嫂。
為了更好地解決元模型估算概率時遇到的數據稀疏問題,神經網絡語言模型應運而生艾蓝。
神經網絡語言模型(NNLM)
神經網絡語言模型(Neural Network Language Model 力崇,NNLM)在學習語言模型的同時,也能得到詞向量赢织。
NNLM 同樣也是對n 元語言模型進行建模亮靴,估算的值。但與傳統方法不同的是于置,NNLM 不通過計數的方法對元條件概率進行估計茧吊,而是直接通過一個神經網絡結構,對其進行建模求解。下圖展示了NNLM 的基本結構搓侄。
具體而言瞄桨,對語料中一段長度為的序列,元語言模型需要最大化以下概率:
其中讶踪, 為需要通過語言模型預測的詞(目標詞)芯侥。對于整個模型而言,輸入為條件部分的整個詞序列:乳讥,輸出為目標詞的分布柱查。而神經網絡的目標就是要讓輸出中,(目標詞)的概率最大雏婶。
神經網絡語言模型采用普通的三層前饋神經網絡結構物赶,其中第一層為輸入層白指。Bengio提出使用各詞的詞向量作為輸入以解決數據稀疏問題留晚,因此輸入層為詞的詞向量的順序拼接:
當輸入層完成對上文的表示之后,模型將其送入剩下兩層神經網絡告嘲,依次得到隱藏層和輸出層:
其中,错维。表示詞匯表的大小,表示詞向量的維度橄唬,是隱層的維度赋焕。矩陣表示從輸入層到輸出層的直連邊權重矩陣。如果使用該直連邊仰楚,可以減少一半的迭代次數隆判;但如果沒有直連邊,可以生成性能更好的語言模型僧界。因此在后續(xù)工作中侨嘀,很少有使用輸入層到輸出層直連邊的工作。
輸出層一共有個元素捂襟,咬腕,依次對應下一個詞為詞表中某個詞的可能性。這里使用softmax函數葬荷,將其轉化為對應的概率涨共。
在NNLM模型中,詞向量出現在兩個地方宠漩,一個是輸入層的詞向量举反,另一是隱層的權重,的維度是扒吁,這可以看做是個維的行向量火鼻,其中的每一個向量,均可以看做某個詞在模型中的另一個詞向量,記為凝危。在不考慮 的情況下波俄,每個詞在模型中有兩套詞向量。通常在實際工作中只是用第一個作為詞向量蛾默。
將展開懦铺,得到:
被稱為能量函數。
log雙線性語言模型(LBL)
2007 年支鸡,Mnih和Hinton在神經網絡語言模型(NNLM)的基礎上提出了log雙線性語言模型(Log-Bilinear Language Model冬念,LBL)。LBL模型的能量函數為:
LBL模型的能量函數與NNLM的能量函數主要有兩個區(qū)別牧挣。一急前、LBL 模型中,沒有非線性的激活函數tanh瀑构,而由于NNLM 是非線性的神經網絡結構裆针,激活函數必不可少;二寺晌、LBL 模型中世吨,只有一份詞向量e,也就是說呻征,無論一個詞是作為上下文耘婚,還是作為目標詞,使用的是同一份詞向量陆赋。其中第二點(只有一份詞向量)沐祷,只在原版的LBL模型中存在,后續(xù)的改進工作均不包含這一特點攒岛。
循環(huán)神經網絡語言模型(RNNLM)
循環(huán)神經網絡語言模型(Recurrent Neural Network based Language Model赖临,RNNLM)則直接對進行建模(注意不是)
該模型就是把NNLM隱層變成RNN,每一個隱層包含此前所有上文信息
RNNLM里面最厲害的就屬ELMo了阵子。該模型利用多層雙向LSTM的加權和來表示詞向量思杯,其中權重可根據具體任務動態(tài)調節(jié)。
C&W模型
與基于語言模型的詞向量生成方法不同挠进,C&W以直接生成詞向量為目標色乾。
C&W模型沒有去求解,而是直接對n元短語打分领突。對于語料中出現過的元短語暖璧,模型會對其打高分;而對于語料中沒有出現的隨機短語君旦,模型會對其打低分澎办。通過這種方式嘲碱,C&W 模型可以更直接地學習得到符合分布假說的詞向量。
具體而言局蚀,對于整個語料麦锯,C&W模型需要最小化:
其中,為從語料中選出的一個元短語琅绅,為序列中的中間詞扶欣,也是目標詞,即千扶;表示的上下文料祠;為字典中的某一個詞。正樣本來自語料澎羞,而負樣本則是將正樣本序列中的中間詞替換成其它詞髓绽。
即:
C&W模型與NNLM相比,主要的不同點在于C&W模型將目標詞放到了輸入層妆绞,同時輸出層也從語言模型的個節(jié)點變?yōu)橐粋€節(jié)點顺呕,這個節(jié)點的數值表示對這組n元短語的打分。這個區(qū)別使得C&W模型成為神經網絡詞向量模型中最為特殊的一個摆碉,其它模型的目標詞均在輸出層塘匣,只有C&W模型的目標詞在輸入層。
CBOW模型
CBOW模型的結構如上圖巷帝,該模型一方面根據C&W模型的經驗,使用一段文本的中間詞作為目標詞扫夜;另一方面楞泼,又以NNLM作為藍本,并在其基礎上做了兩個簡化笤闯。一堕阔、CBOW沒有隱藏層,去掉隱藏層之后颗味,模型從神經網絡結構直接轉化為log線性結構超陆,與Logistic回歸一致。log線性結構比三層神經網絡結構少了一個矩陣運算浦马,大幅度地提升了模型的訓練速度时呀。二、CBOW去除了上下文各詞的詞序信息晶默,使用上下文各詞詞向量的平均值谨娜,代替神經網絡語言模型使用的上文各詞詞向量的拼接。形式化地磺陡,CBOW模型對于一段訓練樣本趴梢,輸入為:
由于沒有隱藏層漠畜,CBOW模型的輸入層直接就是上下文的表示。CBOW 模型根據上下文的表示坞靶,直接對目標詞進行預測:
對于整個語料而言憔狞,與神經網絡語言模型類似,CBOW的優(yōu)化目標為最大化:
Skip-gram模型
Skip-gram模型的結構如上圖彰阴,與CBOW模型一樣躯喇,Skip-gram模型中也沒有隱藏層。和CBOW模型不同的是硝枉,Skip-gram模型每次從目標詞的上下文中選擇一個詞廉丽,將其詞向量作為模型的輸入,也就是上下文的表示妻味。Skip-gram模型同樣通過上下文預測目標詞正压,對于整個語料的優(yōu)化目標為最大化:
其中,