skip gram和cbow的優缺點

在cbow方法中,是用周圍詞預測中心詞,從而利用中心詞的預測結果情況,使用GradientDesent方法,不斷的去調整週圍詞的向量。當訓練完成之後,每個詞都會作爲中心詞,把周圍詞的詞向量進行了調整,這樣也就獲得了整個文本里面所有詞的詞向量。要注意的是, cbow的對周圍詞的調整是統一的:求出的gradient的值會同樣的作用到每個周圍詞的詞向量當中去。可以看到,cbow預測行爲的次數跟整個文本的詞數幾乎是相等的(每次預測行爲纔會進行一次backpropgation, 而往往這也是最耗時的部分),複雜度大概是O(V);

 

而skip-gram是用中心詞來預測周圍的詞。在skip-gram中,會利用周圍的詞的預測結果情況,使用GradientDecent來不斷的調整中心詞的詞向量,最終所有的文本遍歷完畢之後,也就得到了文本所有詞的詞向量。可以看出,skip-gram進行預測的次數是要多於cbow的:因爲每個詞在作爲中心詞時,都要使用周圍詞進行預測一次。這樣相當於比cbow的方法多進行了K次(假設K爲窗口大小),因此時間的複雜度爲O(KV),訓練時間要比cbow要長。

 

但是在skip-gram當中,每個詞都要收到周圍的詞的影響,每個詞在作爲中心詞的時候,都要進行K次的預測、調整。因此, 當數據量較少,或者詞爲生僻詞出現次數較少時, 這種多次的調整會使得詞向量相對的更加準確。因爲儘管cbow從另外一個角度來說,某個詞也是會受到多次周圍詞的影響(多次將其包含在內的窗口移動),進行詞向量的跳幀,但是他的調整是跟周圍的詞一起調整的,grad的值會平均分到該詞上, 相當於該生僻詞沒有收到專門的訓練,它只是沾了周圍詞的光而已。

 

 

在skip-gram裏面,每個詞在作爲中心詞的時候,實際上是 1個學生 VS K個老師,K個老師(周圍詞)都會對學生(中心詞)進行“專業”的訓練,這樣學生(中心詞)的“能力”(向量結果)相對就會紮實(準確)一些,但是這樣肯定會使用更長的時間;

cbow是 1個老師 VS K個學生,K個學生(周圍詞)都會從老師(中心詞)那裏學習知識,但是老師(中心詞)是一視同仁的,教給大家的一樣的知識。至於你學到了多少,還要看下一輪(假如還在窗口內),或者以後的某一輪,你還有機會加入老師的課堂當中(再次出現作爲周圍詞),跟着大家一起學習,然後進步一點。因此相對skip-gram,你的業務能力肯定沒有人家強,但是對於整個訓練營(訓練過程)來說,這樣肯定效率高,速度更快。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章