(1)one-hot
①缺點:單詞過多,維度災難。
思路:(首先隨機初始化向量)通過訓練,將每個詞都對映到乙個較短的詞向量上來。所有的這些詞向量就構成了向量空間,進而可以用普通的統計學的方法來研究詞與詞之間的關係。
在word2vec出現之前,已經有用神經網路dnn來用訓練詞向量進而處理詞與詞之間的關係了。採用的方法一般是乙個三層的神經網路結構(當然也可以多層),分為輸入層,隱藏層和輸出層(softmax層)。
【困難點總結】
(1)以我們的hierarchical softmax來說,如果是cbow,那麼輸入的是上下文詞向量的平均向量(shape=dim,windows,矩陣),而輸出是期望的中心詞向量。
cbow:①輸入是視窗大小,比如8個,輸出v個,最終選擇v個中softmax最大的那個值(第max個dim維詞向量),即中心詞詞向量見(2)。
②或者直接輸出維度為dim的詞向量,然後在詞彙表中比較最相似的詞向量,進而得到輸出詞。
skip-gram: 輸入是中心詞1個,輸出v個,最終選擇v個中softmax最大的那個值。
(2)神經網路的cbow,它使用均方差或softmax等來計算損失。即在迭代的時候,使用當前前向傳播得到的中心詞詞向量,對比當前target詞向量,計算兩者的歐式距離,距離越遠,損失越大。 更新的是所有視窗詞向量(不包括中心詞向量)
(1)cbow
①基本概念
輸入是某乙個特徵詞的上下文相關的詞對應的詞向量,而輸出就是這特定的乙個詞的詞向量。比如下面這段話,我們的上下文大小取值為4,特定的這個詞是"learning",也就是我們需要的輸出詞向量,上下文對應的詞有8個,前後各4個,這8個詞是我們模型的輸入。由於cbow使用的是詞袋模型,因此這8個詞都是平等的,也就是不考慮他們和我們關注的詞之間的距離大小,只要在我們上下文之內即可。
輸入是8個詞向量,輸出是所有詞的softmax概率(訓練的目標是期望訓練樣本特定詞對應的softmax概率最大),對應的cbow神經網路模型輸入層有8個神經元,輸出層有詞彙表大小個神經元。隱藏層的神經元個數我們可以自己指定。通過dnn的反向傳播演算法,我們可以求出dnn模型的引數,同時得到所有的詞對應的詞向量。這樣當我們有新的需求,要求出某8個詞對應的最可能的輸出中心詞時,我們可以通過一次dnn前向傳播演算法並通過softmax啟用函式找到概率最大的詞對應的神經元即可。
②過程展示
1.語料庫,coffee為目標詞。
輸入層xi為每個詞的初始化向量(可以隨機初始化向量,這裡以one-hot方便理解)。
2.初始化出入層權重w,shape=(dim,windows)。wxi=vi,即每個詞對應的詞分布向量vi。
3.)隱藏層上下文向量為θ=~v2=(v1+v3+v4)/len(windows)
4.隱藏層權重w』,shape=(dim,windows-1)。最後輸出層的輸入向量=w』* θ上下文向量
5.輸出層softmax化,即得到概率分布。
與cbow相反。即輸入是特定的乙個詞的詞向量,而輸出是特定詞對應的上下文詞向量。還是上面的例子,我們的上下文大小取值為4, 特定的這個詞"learning"是我們的輸入,而這8個上下文詞是我們的輸出。
這樣我們這個skip-gram的例子裡,我們的輸入是特定詞, 輸出是softmax概率排前8的8個詞,對應的skip-gram神經網路模型輸入層有1個神經元,輸出層有詞彙表v大小個神經元(真尼瑪大)。隱藏層的神經元個數我們可以自己指定。通過dnn的反向傳播演算法,我們可以求出dnn模型的引數,同時得到所有的詞對應的詞向量。這樣當我們有新的需求,要求出某1個詞對應的最可能的8個上下文詞時,我們可以通過一次dnn前向傳播演算法得到概率大小排前8的softmax概率對應的神經元所對應的詞即可。
(3)改進思考
由於dnn模型在這個處理過程非常耗時。我們的詞彙表一般在百萬級別以上,這意味著我們dnn的輸出層需要進行softmax計算各個詞的輸出概率的的計算量很大,所以就有了霍夫曼樹。
為了改進softmax計算量巨大,使用哈夫曼樹來代替隱藏層和輸出層的神經元 ,霍夫曼樹的葉子節點起到輸出層神經元的作用,葉子節點的個數即為詞彙表的大小。 而內部節點則起到隱藏層神經元的作用。過程如下:
①輸入:權值為(w1,w2,…wn)的n個節點
②輸出:對應的哈夫曼樹
(1)將(w1,w2,…wn)看成是有n個節點。
(2)將森林中選擇根節點權值最小的兩棵樹進行合併,得到乙個新的樹,這兩棵樹分布作為新樹的左右子樹。新樹的根節點權重為左右子樹的根節點權重之和。
(3)將之前的根節點權值最小的兩棵樹從森林刪除,並把新樹加入森林。
(4)重複(2,3)
在word2vec中,約定編碼方式和上面的例子相反,即約定左子樹編碼為1,右子樹編碼為0,同時約定左子樹的權重不小於右子樹的權重。
CBOW與Skip Gram模型基礎
用distributed representation我們可以較容易的分析詞之間的關係了,比如將我們的詞降到二維,我們會發現 其資料的輸入輸出分為cbow和skip gram 這樣我們這個cbow的例子裡,輸入八個詞向量,輸出的是所有詞的softmax概率 訓練的目標的期望訓練樣本特定次對應的sof...
cbow 與 skip gram的比較
cbow和skip gram都是在word2vec中用於將文字進行向量表示的實現方法,具體的演算法實現細節可以去看word2vec的原理介紹文章。我們這裡大體講下兩者的區別,尤其注意在使用當中的不同特點。在cbow方法中,是用周圍詞 中心詞,從而利用中心詞的 結果情況,使用gradientdesen...
20160524 資料分析與SAS1 資料模型
一 資料模型共六層 bi指345層 6boss決策 5資料展現層 4資料探勘,和傳統統計分析不一樣,統計分析的目標很清楚手段也很明確,但是資料探勘目標手段都不明確,能挖出什麼來也不確定,資料探勘和資料分析界限不是很分明,統稱為分析層 3統計分析 查詢,觀察資料狀態,如通過平均值 方差 count 排...