背景区域为负样本什么意思_词向量-skipgram与负采样
大綱:
- 1. onehot vs 分布式表示
- 2. 分布式表示的全局泛化能力
- 3. how to learn word2vec - intuition
- 4. SkipGram
- 5. SkipGram Negative Sampling
- 6. 評估詞向量
- 7. CBOW與SkipGram對比
1. onehot vs 分布式表示
Onehot表示:
V = (apple, going, I, home, machine ,learing)
- apple = (1,0,0,0,0,0)
- machine = (0,0,0,0,1,0)
- learning = (0,0,0,0,0,1)
- I go home = (0,1,1,1,0,0)
onehot缺點:
分布式表示
V = (apple, going, I, home, machine ,learing)
- apple = (0.1, 0.3, 0.5, 0.1)
- machine = (0.2, 0.3, 0.1, 0.6)
- learning= (0.1, 0.2, 0.6, 0.1)
- I going home = (0.5, 1.1, 0.5, 0.2)
分布式表示優點:
3. Capacity,分布式表示可以用100維的向量表示所有的單詞, 而獨熱編碼只能表示100個單詞
2. 分布式表示的全局泛化能力
在機器學習中,我們要尋求的是在全局范圍內泛化能力很強的模型。
Local generalization(局部泛化能力):
舉個例子,model1,2,3分別表示用原材料做了1,2,3三道菜,第一道菜做了比其它兩道菜的次數多,可以說model1的能力由于其它兩道菜,模型1的泛化能力比較強。
Global generalization(全局泛化能力):
我們先做半成品出來,然后用這些半成品做成菜,我們在做每道菜的時候不斷地在調整半成品的參數,這樣就可以提高全局的泛化能力。這些半成品可以看作是parameter sharing。
3. how to learn word2vec - intuition
給定一個句子
當數據量很大時,挨在一起的單詞語義相似度比不挨在一起的單詞的語義相似度要高,
詞向量:
- 上下文無關(靜態詞向量):SkipGram CBOW Glove
- 上下文有關(動態詞向量):Bert ELMO
- CBOW:利用上下文詞預測中心詞
- SkipGram:利用中心詞預測上下文詞
- NNLM:利用前面的(n-1)個詞預測第n個詞
- Bert:隨機選擇一些詞MASK掉,再用上下文詞預測被MASK的詞是什么
4. SkipGram
Skip-Gram模型的核心是:在文本中,距離越近的單詞相似度會越高。
根據中心詞去預測上下文詞
SkipGram 核心思路:
語料庫為 We are working on NLP Project, it is interesting
當窗口大小k等于2時 working為中心詞的時候
目標函數為:
因此skipgram的目標函數為:
是中心詞, 是上下文詞舉例:
語料庫:
doc1: 今天 天氣 很好
doc2: 今天 上 NLP 課程
k=1
接下來看
是什么。embedding matrix
,使用了一個 函數 是上下文, 是中心詞,等號右邊分子表示上下文和中心詞的相似度, 我們希望它越大越好。舉例:
語料庫 {今天, 天氣, 好, NLP, 上課}
現在的skipgram的目標函數為:
現在出現了
,而且 線性于詞庫的大小,即需要遍歷整個詞匯表,復雜度很高,現在沒有辦法進行下去了。現在解決這種方法有兩種辦法:
- hierarchical softmax(層次softmax)
- Negative Sampling(負采樣)
5. SkipGram Negative Sampling
對于中心詞
我們希望窗口內的 越大越好,窗口外的 越小越好。 表示 出現在同一窗口內的概率,即是 的上下文詞的概率,中心詞和上下文詞對 來自語料庫。 表示 不出現在同一窗口內的概率,即不是 的上下文詞的概率,中心詞和上下文詞對 不是來自語料庫。如果
出現在同一窗口內,我們希望 越大越好如果
不出現在同一窗口內,我們希望 越大越好其中
是其中
是讓人想起了邏輯回歸
設
舉例:
語料庫:Today's weather is great
vocab=[Today's ,weather,is, great]
窗口k=1
正樣本
={(Today's ,weather),(weather,Today's ),(weather,is),(is,weather),(is,great),(great,is)}負樣本
= {(Today's ,is),(Today's ,great)(weather,great),(is,Today's ),(great,weather),(great,Today's)}對于正樣本 我們想最大化P(D=1,正樣本);對于負樣本 我們想最大化P(D=0,負樣本);
現在目標函數為:
在實際使用時,因為正樣本的數量會遠遠少于負樣本的數量(有很多負樣本根本不會出現在文本中),所以我們引入Nagetive Sampling,從正樣本對應的負樣本中隨機采樣來減少負樣本的數量(不考慮所有的負樣本,而是對負樣本進行采樣)。
現在目標函數為:
舉例:
s="I like NLP,it is interesting,but it is hard"
vocab=[I, like ,NLP, it,is,interesting,but ,hard] 詞典長度=8
以NLP為中心詞,K=1
- 正樣本:(NLP,like) 負樣本:(NLP,I) (NLP,but)
- 正樣本:(NLP,it) 負樣本:(NLP,hard) (NLP,I)
以it為中心詞,k=1
- 正樣本:(it,is) 負樣本:(it,interesting) (it,hard)
- 正樣本:(it,NLP) 負樣本:(it,hard) (it,I
用
對參數進行求解對
進行求導對
進行求導對
進行求導偽代碼如下:
Skip-Gram 的缺點
沒有考慮到上下文;
窗口長度有限,無法考慮全局;
無法有效學習低頻詞和未登錄詞OOV(out of vocabulary)
多義詞無法區別。
上下文的問題可以用Elmo和Bert解決;
低頻次和OOV可以用subword embedding
6. 評估詞向量:
7. CBOW與SkipGram對比:
在cbow方法中,是用上下文詞預測中心詞,從而利用中心詞的預測結果情況,使用梯度下降方法,不斷的去調整上下文詞的向量。當訓練完成之后,每個詞都會作為中心詞,把上下文詞的詞向量進行了調整,這樣也就獲得了整個文本里面所有詞的詞向量。
可以看到,cbow預測行為的次數跟整個文本的詞數幾乎是相等的,復雜度大概是O(V);
而skip-gram是用中心詞來預測上下文的詞。在skip-gram中,會利用上下文詞的預測結果情況,使用GradientDecent來不斷的調整中心詞的詞向量,最終所有的文本遍歷完畢之后,也就得到了文本所有詞的詞向量。
可以看出,skip-gram進行預測的次數是要多于cbow的:因為每個詞在作為中心詞時,都要使用上下文詞進行預測一次。這樣相當于比cbow的方法多進行了K次(假設K為窗口大小),因此時間的復雜度為O(KV),訓練時間要比cbow要長。
但是在skip-gram當中,每個詞都要收到周圍的詞的影響,每個詞在作為中心詞的時候,都要進行K次的預測、調整。因此, 當數據量較少,或者詞為生僻詞出現次數較少時, 這種多次的調整會使得詞向量相對的更加準確。
在skip-gram里面,每個詞在作為中心詞的時候,實際上是 1個學生 VS K個老師,K個老師(上下文詞)都會對學生(中心詞)進行“專業”的訓練,這樣學生(中心詞)的“能力”(向量結果)相對就會扎實(準確)一些,但是這樣肯定會使用更長的時間;
cbow是 1個老師 VS K個學生,K個學生(上下文詞)都會從老師(中心詞)那里學習知識,但是老師(中心詞)是一視同仁的,教給大家的一樣的知識。至于你學到了多少,還要看下一輪(假如還在窗口內),或者以后的某一輪,你還有機會加入老師的課堂當中(再次出現作為上下文詞),跟著大家一起學習,然后進步一點。因此相對skip-gram,你的業務能力肯定沒有人家強,但是對于整個訓練營(訓練過程)來說,這樣肯定效率高,速度更快。
卡門:cbow 與 skip-gram的比較?zhuanlan.zhihu.com因此:
第一次編輯(2020)
參考:
Dong:詞向量技術的學習?zhuanlan.zhihu.com陳運文:漫談Word2vec之skip-gram模型?zhuanlan.zhihu.com深度學習之Skip-Gram和CBOW原理_hongwei的博客-CSDN博客_cbow 和 skip-gram,以及兩種方式的損失函數構造?blog.csdn.net深度學習之Skip-Gram和CBOW原理_hongwei的博客-CSDN博客_cbow 和 skip-gram,以及兩種方式的損失函數構造?blog.csdn.net總結
以上是生活随笔為你收集整理的背景区域为负样本什么意思_词向量-skipgram与负采样的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于电脑登录两个微信的方法介绍电脑如何登
- 下一篇: thinkpad笔记本散热风扇_极致的散