我想了解爲什麼word2vec的skipgram模型有2個表示每個單詞(隱藏表示這是詞嵌入)和輸出表示(也稱爲上下文詞嵌入)。這只是爲了一般性,上下文可以是任何東西(不只是單詞)或者是否有更根本的原因爲什麼word2vec爲每個單詞使用2個表示?
回答
word2vec模型可以被認爲是一個帶有一個隱藏層的簡化神經網絡模型,並且沒有非線性激活。給出一個單詞的模型試圖預測它出現的上下文單詞。
因爲它是一個神經網絡,它需要輸入,輸出和目標函數。輸入和輸出只是單詞的一種熱門編碼,目標函數是在輸出端具有softmax激活的交叉熵損失。
隱藏權重矩陣的輸入乘以單熱編碼輸入,爲每個單詞選擇一個唯一列。類似地,隱藏到輸出矩陣表明它可以解釋爲對應於每個上下文字的行(相同的熱門編碼輸出在此處起作用)。
我建議你閱讀這篇文章關於Word2Vec: http://arxiv.org/pdf/1402.3722v1.pdf
他們給爲什麼在腳註兩種表示一種直覺:它是不太可能,一個單詞出現在自己的範圍內,所以你會想最小化概率p(w | w)。但是,如果將w用作上下文而不是w用作中心詞,則如果要在單位圓中保留單詞嵌入,則不能將p(w | w)(通過點積計算)最小化。
但它只是一種直覺,我不知道是否有任何明確的理由這個...
恕我直言,你爲什麼使用不同的表示真正的原因是因爲您操作不同性質的實體。作爲背景的「狗」不被視爲與作爲中心詞的「狗」相同,因爲它們不是。你基本上操縱出現的大矩陣(單詞,上下文),試圖最大化這些實際發生的對的概率。理論上你可以把它用作上下文bigrams,試圖最大化例如(word =「for」,context =「to maximize」)的概率,並且你將分配一個向量表示來「最大化」。我們不這樣做是因爲會有太多的表示要計算,我們會有一個稀疏的矩陣,但我認爲這個想法在這裏:我們使用「1-gram」作爲上下文的事實只是一個特例我們可以使用的所有類型的上下文。
這就是我的看法,如果錯了,請更正!
檢查2頁腳註這樣的:http://arxiv.org/pdf/1402.3722v1.pdf
這給出了問題的一個很清楚的直覺。
但是,您也可以只使用一個矢量來表示一個單詞。 檢查此(斯坦福CS 224n)https://youtu.be/ERibwqs9p38?t=2064
我不知道如何實現(視頻解釋)。
- 1. 爲什麼mllib word2vec單詞向量只有100個元素?
- 2. 爲什麼Magento每個會話使用2個cookie?
- 3. 爲什麼cin.getline()跳過每行中的第一個單詞?
- 4. 爲什麼word2vec詞彙長度不同於單詞向量長度
- 5. 爲什麼每個人在詞義定義中表現不同?
- 6. 爲什麼INNODB_SYS_TABLES.N_COLS爲每個表顯示3列?
- 7. 在詞典列表中爲每個循環定義2個單獨的變量
- 8. 爲什麼DB2爲每個表空間建議一個表?
- 9. 如何使用word2vec返回的單詞向量作爲功能?
- 10. 爲每個單詞添加「 - 」 - javascript
- 11. 爲什麼TF-IDF詞彙單詞表示爲座標軸/維度?
- 12. rnn使用word2vec進行單詞預測
- 13. 爲什麼這個詞在網頁中顯示爲大寫?
- 14. 爲什麼range.location == NSNotFound表示找到一個單詞而不是相反?
- 15. 每個netty工作者每秒醒來2次。爲什麼?
- 16. 爲什麼R xts圖只顯示nc = 2的單個列?
- 17. 爲什麼輸出中有一個單詞爲空?
- 18. word2vec給出了文本中很少單詞的向量。爲什麼?
- 19. 菜單顯示爲每個用戶
- 20. ,爲什麼引用每個名稱?
- 21. 爲什麼每個方法被調用?
- 22. Brakeman表示,爲什麼這個XSS?
- 23. 爲什麼我們需要爲每個線程使用NSAutoreleasepool?
- 24. 爲什麼MySQL只爲每個查詢使用0.5%的內存?
- 25. 爲什麼這個正則表達式不排除這個詞?
- 26. 這個AJAX表單爲什麼不行?
- 27. 我的兩個單詞應用名稱正在顯示爲一個單詞
- 28. Python - 爲什麼在映射兩個列表時爲什麼會縮短詞典?
- 29. 爲什麼單詞「模態」用於描述表單?
- 30. 爲什麼Internet Explorer會在我的彈出窗口中打破每個單詞?