Lecture1- Introduction and Word Vectors 斯坦福 nlp 教程

斯坦福 NLP CS224n 課程筆記
Ref: CS224N 官網地址html

老爺子鎮樓 ^_^
Chris 老爺子鎮樓web

1. 如何表示詞的含義

首先,在表示詞的含義以前,要先明確什麼是含義。含義是一個語義符號,它表明着一個事物或者一個想法。有一些nlp工具能夠得到詞的語義,如WordNet,給出一個詞,這些工具能夠給出他的詞性、近義詞、反義詞等。函數

獨熱編碼

傳統NLP中,詞由離散的符號來表示,即獨熱編碼。例如:
旅館 = [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
啤酒 = [0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0]
若是語料庫中有N個詞,則每一個詞由一個N維的one-hot 向量表示。若是詞彙量很大,那個將會出現問題。工具

詞向量的思想和依據

經過上下文表示詞義:優化

'You shall know a word by the company it keeps' (J. R. Firth 1957: 11)編碼

一個詞的含義應該能夠由上下文來表示。spa

由這種思想,咱們將一個詞表示爲一個密度向量,每一位再也不是一個0或者1,而是一個小數。例如:
expect=[0.286 0.729 -0.177 ... 0.271 0.487]
詞向量的可視化
詞之間的距離能夠表示詞在語義上的類似性,如上圖。htm

詞向量的實現

Word2vec(Mikolov et al. 2013) 是實現詞嵌入的經典,它的思想是:blog

  • 有一個大的語料庫(corpus)
  • 每一個詞由一個向量表示
  • 對每一個位置\(t\),都有一箇中心詞 \(c\) 和其上下文 \(context(c)\) 詞表示 \(o\)
  • 使用 \(c\)\(o\) 的詞向量的類似性來計算 \(p(o|c)\) (反之亦然)
  • 經過不斷調整詞向量,最大化上述機率
    由中心詞預測上下文
    由中心詞預測上下文
    如上圖,不停地移動迭代,更新詞向量,最大化總的條件機率
    具體地,
    似然函數爲:\[L(\theta) = \prod_{t=1}^T \prod_{-m \le j \le m; j \ne 0} P(w{(t+j} | w_t;\theta)\]
    代價函數爲:
    \[J(\theta) =- \frac{1}{T} logL(\theta) =- \frac{1}{T} \prod_{t=1}^T \prod_{-m \le j \le m; j \ne 0}log P(w{(t+j} | w_t;\theta)\]
    最小化代價函數 \(\iff\) 最大化預測準確率

那麼,條件機率\(P(o|c)\) 應該如何計算呢?
答案是,先計算類似度,而後\(softmax\),即:\(p(o|c) = \frac{exp(u_0^Tv_c)}{\sum_{w \in V}exp(u_w^T v_c)}\)
其中,每一個詞有兩種詞向量,在上下文位置時,使用 \(u\) 表示;在中心詞位置時,使用 \(v\) 表示;分母是全部詞彙。get

爲何這麼計算呢?咱們注意到,\(u_0^Tv_c\) 表示的是兩個向量的點乘,而點乘表示的是向量的餘弦類似度,類似度越高,表明兩個向量越相近,在詞向量空間中,咱們認爲詞向量越相近其所表示的語義越接近。那麼上述條件機率描述的其實就是在當前向量表示下,中心詞 \(c\) 與上下文詞 \(o\) 的相近程度(語義上的)。再結合咱們的優化目標 \(L(\theta)\) ,咱們能夠發現優化過程能夠視爲不斷調整詞向量,讓不一樣位置的中心詞與窗口內的上下文詞的語義的相近程度的和最大。爲何這麼作就能獲得一個好的詞表示呢?回想上小節『詞向量的思想和依據』中有講到, 一個詞的含義應該能夠由上下文來表示'。咱們能夠發現其實這樣的優化過程的基礎思想就是讓一個詞的含義儘可能與上下文的語義類似。

相關文章
相關標籤/搜索