設計embedding維數的時候有什麼講究?
在深度學習中,尤其是NLP中,可以將很多傳統的信息可以設計為embedding表達,配以神經網路模型,可以取得很好的效果,那麼問題來了。
通常對於word,embedding的維數通常設300維(why?題主希望能夠得到一些從理論角度的分析),那麼如果想設計char embedding,pos embedding這些,我們應該從什麼角度去思考一個大概的維度範圍?換一個領域,在graph embedding(將圖中的每一個節點用embedding表示,如LINE等)中,又應該從什麼角度去分析呢?
謝老闆@劉知遠 邀請。
了解過一些word embedding的工作,做過一些network embedding(graph embedding)的工作,對於維度的選擇,根據個人經驗,感覺需要從以下角度考慮:
1. 表示學習(word embedding/network embedding等等)中,實現表示向量的降維是一個重要目的,所以表示維度應該低於詞的數量或節點數量(稀疏表示或者binary表示除外)。
2. 對於embedding的維度的選取,一般需要通過具體的任務來進行評測,例如節點分類、鏈接預測等等。維度從幾十維到上千維,一般會在中間存在一個效果最好的維度,維度過低表示能力不夠,維度過高容易過擬合。下圖是DeepWalk中維度的選取與節點分類效果的敏感性分析(一個好的表示學習模型,應該敏感性曲線盡量平緩):
3. 維度的選取跟具體的數據集有關。一般訓練數據越多或者網路越大,需要的維度越高。選取合適的維度,一般需要設置驗證集,將維度按照指數變化(2或10)進行選取。如果維度的選取在研究工作或者論文不關鍵,只需要採取已往工作的慣例,使得自己的方法和baseline保持一致即可。NLP和network embedding中一般選取50、100或200.
謝邀。
有過這方面的一些體會,說下我遇到的一些坑吧:
1. 計算資源不夠用
我曾經設置維數比較高的時候,大概是700,800吧,內存爆掉了,當時我只有降低維度。
2. 可能要參考語料庫的大小,或者詞庫的大小吧,具體多少,還是要慢慢調
3. 最終要取得好的效果,還是要不斷調試,反正我當時那個問題後來是調到大概200至300維之間的一個數,效果最好。
說這麼多,希望對題主有幫助
還是回到機器學習的 underfitting/overfitting 上,維數取決於你模型解決手上問題的 performance。
在看word embedding幾篇經典論文中,並沒有看到關於維數的選定解釋,猜測更大可能性是根據所需要優化的具體問題,對比測試得出的相對好的實驗結果數據。如回答有誤,期待大神們的回答和解釋,學習學習~
沒有理論分析,你可以按topic model的topic個數理解 你要刻畫多少個隱語意就多少維越少越粗糙 擬合能力上不去越多刻畫越細 需要的數據越多 訓練越費勁
在保證沒有信息損失的情況下,這個數字越小越好。
至於為什麼是300,一般RNN的hidden state是200起步,不然有表示能力不夠的風險;小數據集GloVe詞向量就是200維以下;大的GloVe詞向量為了保證沒有信息損失,加到了300。
不管設多少,這個數字都只是靠經驗得來的,目前資訊理論**沒有此類信息編碼的具體理論公式**;想必樓主問的就是此類理論公式,可惜目前沒有。有個經驗法則:
embedding_dimensions = number_of_categories**0.25,the embedding vector dimension should be the 4th root of the number of categories,一般實驗設置在20-200之間
把它當成PCA一樣的降維就行…
這個也需要做實驗,選幾個不同維數做實驗,觀察效果。前幾天看到GAN的維數選擇,感覺也可以用來解釋embedding層維數選擇https://zhuanlan.zhihu.com/p/26528060?utm_source=wechat_sessionutm_medium=socialfrom=singlemessage
推薦閱讀:
※一個演算法工程師的日常是怎樣的?
※卷積神經網路保證「位移、尺度、形變不變性」該怎麼理解?
※如何進行模型組合?
※人工智慧入門,求書籍推薦?
※機器學習,深度神經網路等方法是否是正確的方向?
TAG:機器學習 | 自然語言處理 | 深度學習DeepLearning | wordembedding |