斯坦福CS224N深度學習自然語言處理(二)

國內視頻地址:斯坦福CS224N深度學習自然語言處理課程(二)Word2Vec詞向量表示

(這幾篇papers後續補充)

(主要介紹Word2Vec,以及TA介紹一篇重要paper。)

(之前表徵word的方式,使用分類學的方法,考慮上位詞以及同義詞集合。這樣帶來的問題有:)

(對於同義詞細微的差別無法滿足,確實新詞,可能過於人為主觀,並需要大量的人工工作,以及很難計算準確度。)

不論是基於大量規則的方式,還是統計性NLP方式,都是在基本詞粒度上處理成one-hot形式。

(這種one-hot形式,還不能直接用來處理word之間的關係,雖然向量的點乘操作結果可以表徵兩個向量的相似程度,但是one-hot的特殊性決定了兩個不同word的向量點乘結果為0。)

(因此,需要在one-hot的基礎上再進一步的處理。)

(這裡給出了一個NLP中簡單而又非常好用的假設,即可以通過一個詞周圍詞集合當中提取出有價值的信息。並給出了一個"banking"的例子,想像一下,雖然在大規模語料中,此時這種統計就是非常有價值的了。)

(將之前稀疏的的向量,壓縮到一個稠密的向量中,以此來表示該詞,至於這裡每維特徵的意義,對於人來說是感知不出來的,它是在計算機的角度來看的。)

此時,我們的任務就很明晰了,設計一個model來刻畫一個詞和其context的概率,整體越大說明學習的越好。也可以寫成loss形式,此時越銷越好。

(接下來給出了上面討論的這個模型的變遷史:)

(除了即將要介紹的word2vec,建議Atneuraltprobabilistictlanguagetmodelt(Bengio ettal.,t2003)最好也讀一讀。)

(W2V的目的就是找到的word與其context words之間的關聯。

主要包括兩個模型:SG、CBOW,以及兩種訓練方法:Hierarchicaltsoftmax和Negativetsampling)

(skip-gram是依靠當前word,預測context,如上所示。)

(具體就是針對每一個word,計算它前後m個鄰居。使得整體概率乘積最大,為了方便優化將其寫成negative log likelihood形式,將乘法轉換成加法。)

(ML中所言的loss function,cost function以及objective function概念上是等價的。

通常對於概率分布選擇交叉熵作為loss。但這裡使用的向量(即分布)是onehot形式,此時計算結果時只有trueclass對應位置有值,這樣的話有些不當)

其中:

(點乘的意義是兩個向量越是近似,則點乘結果越大。)

(即用指數的方式來刻畫概率,同時在全局上做歸一化。)

(此圖可以說是skip-gram的精華所在。下面來講如何訓練model,即或得相應參數。)

(如何獲得模型,其實就是已知模型結構,如何獲得參數。對於每一個word,都會受到上述W和W兩個矩陣的影響,因此就是有d*V+d*V個參數需要優化)

(為了介紹梯度下降,先說下基礎數學知識,視頻中老師管這個叫baby math~)

(其實就是求導和鏈式法則。下面才是我們真正的開始。)

(對於1,就是在全量數據上,對於每個word,求其周邊m個相鄰詞的條件概率,使其總和最大化,這裡j!=0,是指剔除自身。

對於logp(...),式子2中給出了詳細的softmax形式,帶入即可。即有:)

(Remind:logx的導數: 以a為底的X的對數 的導數是1/xlna ,以e為底的是1/x;e^x的導數:e^x)

這裡的最後形式:其實個人感覺式子1更好記和更好理解。

(後面都是介紹梯度下降:)

推薦閱讀:

從CNN視角看在自然語言處理上的應用
完結篇|一文搞懂k近鄰(k-NN)演算法(二)
揭開知識庫問答KB-QA的面紗9·動態模型篇
如何評價SyntaxNet?
「關鍵詞」提取都有哪些方案?

TAG:自然语言处理 | 深度学习DeepLearning | 世界名校公开课推荐 |