深度學習筆記之自然語言處理(word2vec)
1.1 自然語言處理的應用
拼寫檢查,關鍵詞搜尋
文字挖掘
文字分類
機器翻譯
客服系統
複雜對話系統
1.2 語言模型
舉個例子:
這裡有一句話:“我今天下午打籃球。”
p(S)是稱為語言模型,即用來計算一個句子概率的模型。
如下的語言模型,會造成資料過於稀疏,引數空間太大。
用下述的方式可以解決上面的問題。如下:
假設下一個詞的出現依賴於它前面的一個詞
假設下一個詞的出現依賴於它前面的兩個詞
我們以下面的一個簡單的詞庫表來講解。如下所示是一個詞庫表。
下方的數字是每一個詞在詞庫中 出現的次數。
將該詞頻轉化為n*n的矩陣,其中n-gram=1。
我們可以從該矩陣得知單詞 “i”後面接“want”的次數為827次,“i”後面接“eat”的次數為9次,以此類推。
然後將上述矩陣轉化為概率轉移矩陣。如下所示:
如下即為“I want chinese food”概率計算公式:
下圖是模型引數數量和n-gram引數個數的關係:
1.3 兩個基礎模型(CBOW and skip-gram)
模型結構如下:
我們首先看CBOW模型,它是根據上下文來預測當前詞,而Skip-gram模型則是根據當前詞,預測上下文。
CBOW是Continuous Bag-of-Words Model的縮寫,是一種根據上下文的詞語預測當前詞語的概率模型。將其轉化為極大似然估計,如下:
我們看其訓練步驟,如下所示:
輸入層是上下文的詞語的詞向量,在訓練CBOW模型,詞向量只是個副產品,確切來說,是CBOW模型的一個引數。訓練開始的時候,詞向量是個隨機值,隨著訓練的進行不斷被更新。
投影層對其求和,所謂求和就是簡單的向量加法。
輸出層輸出最可能的w。由於語料庫中詞彙向量是固定的,所以上述問題可以看成是一個多分類問題,給定特徵,從多個之中挑一個。
pw 從根節點w對應葉子節點的路徑lw 路徑中節點的個數pw1,pw2,pw3...pwn 路徑pw 中的各個節點dw1,dw2,...dwn∈{0,1} 詞w的編碼,dwj 表示路徑pw 第j個節點對應的編碼(根節點無編碼)θw1,θw2,...,θwlw−1 pw 路徑pw 中非葉節點對應的引數向量
1.4 負取樣
任何取樣演算法應該保證頻次越高的樣本越容易被取樣出來。基本思路是對於長度為1的線段,根據詞語的詞頻將其公平的分配給每個詞語:
counter就是w的詞頻。
於是我們將該線段公平的分配了:
接下來,我們只要生成0-1之間的隨機數,看看落在哪個區間,就能取樣到該區間對應的單詞了。