hierarchical softmax對生僻詞很不友好?扯淡!

[1] https://code.google.com/archive/p/word2vec/
[2] Word2Vec原始論文
[3] Why is hierarchical softmax better for infrequent words, while negative sampling is better for frequent words?
[4] NLP中的Embedding方法總結

不熟悉層次化softmax和負採樣的原理請先看參考資料[4].

本文僅探討國內博客中充斥着的一種觀點:

hierarchical softmax對生僻詞很不友好,因爲詞頻越高的詞在離根節點越近的葉子節點,詞頻越低的詞在離根節點越遠的葉子節點,也就是說當該模型在訓練到生僻詞時,需要走很深的路徑經過更多的節點到達該生僻詞的葉子節點位置,訓練的時間更長。而負例採樣在對生僻詞進行訓練時,訓練時要找的反例詞個數不變,所以每次訓練更新的參數的個數不變,花費的訓練時間不變,這樣就會讓訓練速度更穩定,不會因爲生僻詞而使訓練耗費更多的時間

先看一些實驗效果:

h-softmax和負採樣的實驗效果對比[1,2]^{[1,2]}

hierarchical softmax (better for infrequent words) vs negative sampling (better for frequent words, better with low dimensional vectors)

下圖來自資料[1].

在這裏插入圖片描述
我的觀點:“hierarchical softmax對生僻詞很不友好”這個結論需要修改,理由是:

  • 如果這句話是想表達 “hierarchical softmax得到的生僻詞Embedding效果不好”,這個結論並不能從 “對生僻詞的訓練時間更長” 來得出;況且從實驗證據來看h-softmax對於生僻詞的訓練效果相比負採樣要更好[1,2]^{[1,2]}。另外注意,這個現象尚且沒有理論解釋,StackExchange上有帖子在討論原因,但目前沒有令人信服的結論[3]^{[3]}
  • 如果這句話只是想表達“對生僻詞的訓練時間更長”,這是對的但是卻沒必要提,並且更不能總結成“hierarchical softmax對生僻詞很不友好”這種不夠明確的結論。哈夫曼編碼與哈夫曼樹對於結點訪問效率的提升是整體的效果,生僻詞需要經過更多結點換來的是常用詞經過更少的結點,從而換來整體的訪問效率(在W2V背景下對應着訓練效率)的提升,這是哈夫曼樹的精髓而不是缺點,所以說這是對的但是卻沒必要提.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章