NLP·一、詞向量Word Embedding(一)

一、詞嵌入/詞向量為什麼可行

一句話概括就是:一個詞的語義由其上下文的單詞決定。

NLP·一、詞向量Word Embedding(一)

word vectors ==word embeddings ==word representations.

They are a distributed representation

二、Word2vec的兩種算法

NLP·一、詞向量Word Embedding(一)

2.1 CBOW

用上下文的單詞預測中心詞,假設window size = 2:

NLP·一、詞向量Word Embedding(一)

NLP·一、詞向量Word Embedding(一)

在每個position t = 1,……,T,window size = m, 求已知上下文的單詞,預測中心詞出現的概率的似然:

NLP·一、詞向量Word Embedding(一)

2.1.2 計算

NLP·一、詞向量Word Embedding(一)

為了簡化計算,我們假設每個詞代表的向量一共有兩個,一個是作為中心詞的詞向量,一個是作為上下文單詞時的詞向量。將單詞表裡的詞對應的詞向量組合成矩陣:

NLP·一、詞向量Word Embedding(一)

由於向量內積的幾何含義就是一個向量投影到另一個向量上的大小,越大,兩個向量相似度越高;越小,兩個向量的相似度越低:

NLP·一、詞向量Word Embedding(一)

由於單詞表的單詞數量是有限個,因此要對概率歸一化,這裡就用到了softmax函數:

NLP·一、詞向量Word Embedding(一)


2.2 Skip-grams

用中心詞預測上下文的單詞,假設window size = 2:

NLP·一、詞向量Word Embedding(一)

NLP·一、詞向量Word Embedding(一)

在每個position t = 1,……,T,window size = m, 求已知上下文的單詞,預測中心詞出現的概率的似然:

NLP·一、詞向量Word Embedding(一)

損失函數:

NLP·一、詞向量Word Embedding(一)

2.2.1 程序實現思想——skip-gram

NLP·一、詞向量Word Embedding(一)

2.2.1.1 生成batch:X,y(以skip-gram為例,那麼就是輸入是中心詞,輸出是上下文單詞的概率)

skip_window:窗口的大小,即window size

num_skips:代表著我們從整個窗口中選取多少個不同的詞

NLP·一、詞向量Word Embedding(一)

例子:batch_size = 4; skip_window = 2; num_skip = 1:

NLP·一、詞向量Word Embedding(一)

2.2.1.2 前向傳播——這裡Word2vec討了個巧,利用深度學習的宏觀意義上的編碼器解決了更新參數theta的方法:

NLP·一、詞向量Word Embedding(一)

NLP·一、詞向量Word Embedding(一)

注:1、為什麼要將單詞表向量化?

NLP·一、詞向量Word Embedding(一)

NLP·一、詞向量Word Embedding(一)

總結前向傳播

NLP·一、詞向量Word Embedding(一)

2.2.1.3 計算loss

NLP·一、詞向量Word Embedding(一)

求此損失函數等價於計算輸出的交叉熵:

NLP·一、詞向量Word Embedding(一)

2.2.1.4 梯度下降更新那兩個詞向量矩陣

NLP·一、詞向量Word Embedding(一)

NLP·一、詞向量Word Embedding(一)

NLP·一、詞向量Word Embedding(一)

NLP·一、詞向量Word Embedding(一)

參數更新:

NLP·一、詞向量Word Embedding(一)

三、後期計劃:

1、程序實現展示;

2、梯度下降參數更新的優化

四、參考:

1、斯坦福cs224n

2、Chris McCormick 的blog

http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/


分享到:


相關文章: