首先看壹個例子:
ztc/ 上下/ 齊/ 拼搏/ ,誓為/ 春戰/ 做/ 貢獻
這句話呢通順,意思明白,那如果換壹下詞的位置:
上下/ 齊/ 拼搏/ ztc/ ,春站/ 做/ 貢獻/ 誓為
意思含糊了,但是大概意思還是能猜到,那如果在變換壹下:
拼搏/ 齊/ ztc/ 上下/ ,貢獻/ 誓為/ 做/ 春戰
現在這句話已經不知所雲了,如何判斷這個由詞序組成的序列是否符合文法、含義是否正確?
統計語言模型:壹個句子是否合理,就看他的可能性的大小,即他的概率大小。
假設壹個句子S,由壹連串特定順序的詞W1, W2,...WT 組成,T是句子中詞的個數,則S出現的概率P(S) = P(w1, w2,...wT)
利用條件概率公式展開:
P(w1,w2,..wT) = P(w1) P(w2|w1) P(w3|w1,w2) ... P(wT|w1,w2,..wT-1)
即:
當語料中詞典大小為100,000,句子平均長度為5時,需要學習的參數大概100000 * 5 -1 個,為了降低計算復雜度,並考慮到詞序列中離的更近的詞通常在語義上也更相關,所以在計算時可以通過只使用前面n-1個詞來近似計算,即n-grams:
n-grams存在的問題:1.泛化時常常有訓練語料中沒有出現過的詞序列;2.沒有考慮詞之間的相似性。
NNLM
1.對詞庫裏的每個詞指定壹個分布的詞向量
2.定義聯合概率(通過序列中詞對應的詞向量
3.學習詞向量和概率函數的參數
why it works?
如果我們已知 “走” 和 “跑” 是相似詞,那很容易通過 ”貓在屋裏跑“ 推出 “貓在屋裏走“,因為相似的詞會有相似的詞向量,而且概率函數是特征的平滑函數,所以特征的微小變化,只會對概率值產生壹個很小的影響。即:1.相似詞在特征空間距離更接近;2.概率函數是壹個相對平滑的函數,對特征值的變化不是非常敏感。
所以訓練語料中句子的出現不光增加了自身的概率,也增加了他與周圍句子的概率(句子向量空間)
目標:f(wt ,··· ,wt?n+1) = P?(wt |w1,w2,..wt-1 )
約束:
1 , ∑ |V| i=1 f(i,wt?1,··· ,wt?n+1) = 1
2.f>0
通過得到的條件概率進行相乘,得到詞序列的聯合概率
模型被分成二部分:
1.特征映射:通過映射矩陣 C∈R ∣V∣×m
將輸入的每個詞映射為壹個特征向量,C(i)∈Rm 表示詞典中第 i 個詞對應的特征向量,其中 m 表示特征向量的維度。
2.概率函數g。通過context中詞的詞向量來映射下壹個詞的條件概率。g的輸出是壹個向量,其中第i個元素表示了字典中第i個詞的概率。完整的模型表達如下:
函數f由兩個映射(g and c)組成,其中c由所有的上下文***享。
訓練過程中的參數就由兩個映射組成,設 g 對應參數為w,c映射的參數就是自身,則 θ=(c, w)
訓練過程就是學習θ的最大似然:
其中R(θ) 是正則項。
模型中參數與字典大小V成線性關系,且與n(n-grams)成線性關系,不過可以通過***享結構降低參數數量,如延時神經網絡或循環神經網絡。
實驗中,神經網絡層只有壹個隱層,有壹個可選的詞向量到輸出的直連層,實際上就有兩個隱層,壹個***享的詞向量C 層,該層沒有激活函數,還有壹個tanh激活函數的隱層;最後的輸出層是壹個softmax層,來保證所有結果的和為1:
註意:第壹層是沒有非線性激活函數的,因為非線性激活函數會帶來其他信息(聯想神經網絡中非線性激活函數),而正是這種直接的線性變換,才能讓第壹層的參數來作為詞向量
用yi表示每個輸出詞的對數概率,則
y = b+Wx+U tanh(d +Hx)
其中x是詞向量的拼接,x = (c(wt-1),c(wt-2),c(wt-n+1))
並行
參數與輸入的窗口大小和字典的大小成線性,但是計算量卻比n-grams 要大很多,首先n-grams中不需要每次都計算所有詞的概率,只需要相關詞頻的線性組合,另外神經網絡中主要瓶頸是輸出層的激活計算。
out-of-vocabulary word
首先根據窗口上下文可能出現的詞,進行加權求和初始化新詞的詞向量,然後將新詞 j 加入字典,然後利用這部分數據集重新訓練,進行retune.
後續工作
1,分解網絡到子網絡,如使用詞聚類,構建許多小的子網絡可能更快更簡單
2,用樹結構來表達條件概率:神經網絡作用在每壹個節點上,每個節點代表根據上下問得到該詞類的可能性,葉子節點代表詞的可能性,這種結構可以將計算復雜度從|v| 降低到 log|v|
3,梯度傳播時可以只在部分輸出詞上進行,如某些條件下最相似的(如三元模型)。如果用在語音識別,可以只計算聽覺上相似的詞。
4,引入先驗知識,如語義信息和語法信息。通過在神經網絡結構中***享更多的結構與參數,可以捕獲長期的上下文信息,
5,如何解釋神經網絡得到的詞向量
6,上述模型對每個單詞分配壹個在語義空間的點,所以無法解決壹詞多義問題。如何擴展當前模型,在語義空間中為詞分配多個點來代表詞的不同語義。
作者提出的後續工作中,目前是很多人的研究方向,壹些已經被證明有效。
第壹個,優化網絡結構,提到了從數據方向,構建更多的子網絡,還可以直接對網絡結構本身進行優化,如word2vec,將神經網絡層去掉;
第二個,由於計算瓶頸在計算output的概率(對每個詞計算概率,需要softmax歸壹化),所以提出可以通過樹結構,來避免直接對所有詞進行計算,如 Hierarchical Softmax
第三個也是在計算輸出時,只通過壹部分詞來進行梯度傳播,如負采樣
第四個是通過***享結構,來捕獲更多上下文信息,如GPT,Bert
第五個是如何解釋,也是目前很多人的研究方向
第六個是壹次多義的解決方法,如ELMO
參考:
http://www.iro.umontreal.ca/~vincentp/Publications/lm_jmlr.pdf