一 序
本篇屬于貪心NLP訓練營學習筆記系列。
二 詞向量
one-hot encoding
問題:
- 稀疏sparse representation
- similarity (無法表達單詞相似度 => 導緻無法表達語義) ,可以表達句子相似性。
word2vec - distributed representation(把詞的資訊分布到各個向量中)
- Dense 稠密的(好處是低維的,資料量沒有那麼大)
- meaning (semantic space ,我們希望詞關系比較密切的,再空間裡比較近)
- capacity 表達能力:(one-hot表示有限,而分布式則大很多或者理論上無限大)
- Global generation(泛化能力,深度學習使用了參數共享(parameter sharing),,one-hot 局部泛化)
Word2Vec的Intuition
離得越近的單詞,相似度越高。(即中心詞與其上下文單詞的語義接近,就是上下文單詞是中心詞前後window size個單詞的集合)
Skip-Gram Model
CBOW: 根據上下文單詞(左邊兩個單詞和右邊兩個單詞), 去預測中間那個單詞
Skip-Gram:通過中間那個單詞, 去預測上下文單詞(常用)。
對于Skip-Gram model,通過中間詞去預測上下文單詞,也就是對應的條件機率最大。
這裡的
,裡面的
是加入的參數,含義跟
一樣。
- 其中w是中心詞, c context(w)是上下文詞
簡化下,加log:
,其中u作為上下文的向量,V作為中心詞的向量。參數次元是一樣的,分開是因為同一個詞在不同的角色(中心詞、上下文詞)的向量是不一樣的。
接下來看機率
怎麼求。
我們之前的假設是,中心詞與它的上下文單詞語義接近,也就是學得的向量相似度大。我們采用内積的方式表示相似度,我們用
表示中心詞的詞向量,用
表示上下文單詞詞向量。
其中
詞庫
其中分子是 内積(保證越近機率越大),分母是考慮所有詞庫的可能性。能保證機率p之合等于1. 式子就是一個簡單的softmax。
蘇劍林大神說過:
softmax 除了使機率分布合法(0-1),目的還是定義更合理的loss,最終的目的則是定義更合理的梯度;
為什麼常用softmax,
是能将任意實數映射到非負實數的最簡單的、單調的、光滑的初等函數.
softmax是sigmoid函數在多分類輸出上的推廣,對于
在二分類情況下與sigmoid函數等價,是以它是sigmoid函數在多分類上的擴充,有良好的實體意義。
因為要計算機率要周遊整個詞典,見上面截圖,計算複雜度過高。為了降低複雜度,引入了兩個優化方式:層次Softmax(Hierarchical Softmax)和負采樣(Negative Sampling)。
何為負采樣?就是給定任意的兩個
,當它們出現時,
越大越好
當它們不出現時,
越大越好
這就是類似于二分類的問題。可以套用公式:
負采樣的目标函數
前面是正采樣,後面是負采樣
=
=
=
=
這裡把
看做
,後面怎麼算的沒看懂。
因為正樣本的數量會遠遠少于負樣本的數量,是以我們引入Nagetive Sampling,從正樣本對應的負樣本中随機采樣來減少負樣本的數量(不是所有的負樣本)
解釋如下:其中
是針對中心詞w的負樣本采樣後的集合。
舉例:
使用 梯度下降法對參數進行求解
這裡用到了對于sigmoid函數
求導結論,
同理:
上面知道後,求參數
僞代碼如下:推薦去讀源碼,比如使用特定資料結構霍夫曼樹
評估詞向量:
1 TSNE 可視化詞向量,對訓練得到的詞向量降維到二維空間進行觀察
2 similarity:已有一個訓練好的詞向量和人工标記的單詞相似度表。舉例:football和basketball。
3類比(analogy):woman:man == boy:girl (如已知woman:man的相似性,給定boy來尋找girl)
詞向量在推薦系統的應用
把詞向量的訓練,應用到産品的特性,學習出Embedding。認為使用者浏覽商品之間是連續類似的。
老師以Airbnb的論文為例介紹:
1 傳統的内容推薦,
需要把房屋的屬性,轉換為向量的形式,也叫特征工程。
2 直接學出Embedding,房屋之間相似度用向量計算(與餘弦相似度)。
接下來就是老師帶領解析論文的改進之處了。我基礎薄弱先跳過。
skipgram model 缺點
沒有考慮到上下文;--->上下文的問題可以用Elmo和Bert解決;
視窗長度有限,無法考慮全局;--->考慮languagemodel,(RNN、LSTN)
未考慮全局:--》使用全局模型,(MF 矩陣分解)
無法有效學習低頻詞和未登入詞OOV(out of vocabulary) --》subword embedding
其他怎麼解決問題,TODO。再補充吧。