2017-07-03 111 views
1

我需要問幾個關於單詞嵌入的問題.....可能是基本的。 1.當我們將例如king [0 0 0 1 0]這個單詞的單熱矢量轉換成一個嵌入矢量時,E = [0.2,0.4,0.2,0.2] ....對每個索引是否有任何重要性在結果詞向量?例如E [1],它是0.2 ....具體來說E [1]定義了什麼(儘管我知道它基本上是向另一個空間的轉換)....或者單詞向量共同定義上下文但不是單獨地... 2 。與原始單向量矢量相比,單詞向量的維數(減少或增加)如何比較重要3.如何根據嵌入層定義查找表? 4.查找表是一種隨機生成的表,或者它已經在數據中相對於數據實例分別進行了訓練,我們稍後在神經網絡操作中使用它? 5-是否有任何方法可視化隱藏層中的嵌入式矢量(就像我們在基於圖像的神經網絡處理中所做的那樣)? 在此先感謝Word嵌入,LookupTable,Word嵌入可視化

回答

0

1:嵌入向量中的每個元素(或一組元素)都有一些含義,但對於人類來說大多是未知的。根據你使用的算法,單詞嵌入向量可能有不同的含義,但通常是有用的。 例如,Glove,相似的單詞'青蛙','蟾蜍'在向量空間中彼此靠近。國王 - 男人導致向量類似於女王。

  1. 將詞彙轉換爲索引。例如,你有一個詞彙列表: [狗,貓,老鼠,飼料,玩,與] 然後,句子:狗玩貓=> 0,4,5,1 雖然,你有嵌入矩陣如下

    [0.1,0.1,0]#註釋:這個是狗
    [0.2,0.5,0.1]#這是貓
    [...]
    [...]
    [... ]
    [...]

其中第一行是嵌入狗的向量,第二行是貓,然後如此 然後,在查找之後使用索引(0,4,5,1)將成爲矩陣[[0.1,0.1,0] []。 ..] [...] [0.2,0.5,0.1]]

  • 任一個或兩者
    • 可以隨機初始化矢量嵌入,並用梯度下降
    • 訓練它
    • 你可以採用預訓練詞向量,並保持它固定(即:只讀,不變)。 你可以在模型中訓練你的單詞矢量並在另一個模型中使用它。我們可以在線下載預訓詞彙矢量。例如常見的抓取(840B令牌,2.2M詞彙,套管,300D載體,2.03 GB下載):glove.840B.300d.zip上Glove
    • 你可以用預訓練字矢量INIT和通過梯度下降
    • 與火車模型
  • 更新: 一熱載體不包含任何信息。你可以認爲一個熱門矢量是詞彙表中那個矢量的索引。 例如,Dog => [1,0,0,0,0,0]並且cat => [0,1,0,0,0,0]。有一熱之間有一些不同的VS指標:

    • ,如果你輸入的索引列表:[0,4,5,1]到您的多層感知,它不能學到什麼東西(我試過了。但是如果你輸入一個熱點向量[[... 1] [1 ...] [...]]的矩陣,它會學到一些東西。但是在內存和CPU方面它的成本很高。

    • 一熱費大量的內存來存儲零。因此,如果你沒有一個,我建議隨機初始化嵌入矩陣。存儲數據集作爲索引,使用索引查找嵌入矢量

    「其意思是查找表,不過是爲了每一個嵌入式矢量 (已經通過word2vec seperately培訓或...)的矩陣而在 的詞彙中,而在神經網絡的過程中,我們 可以使用嵌入層,或者我們可以在 查找表中查找該特定嵌入向量的嵌入向量,而不是針對特定的 單向向量。

    使用「INDEX」在查找表中查找。把狗變成0,貓變成1.單向熱矢量和索引包含相同的信息,但是一個熱點需要更多的內存來存儲。此外,很多深度學習框架的接受指數作爲輸入到埋層(其中,輸出是一個向量代表在該指數的一句話。)

    「我們如何得到這個嵌入載體......」

    =>閱讀文章。這裏是關於Word2vecGlove的論文。向您的講師詢問更多細節,他們願意幫助您。

    +1

    Thanx爲這個詳細解釋....關於你的答案我需要仍然清楚。 1-因此我們不應該在意密集或嵌入矢量中的值(正如你提到的狗的矢量[0.1,0.1,0],在這裏單獨的「0.1」donesnt顯示除了所有其他指數值之外的任何值)。我們如何從word2vec或其他人(隱藏層上的訓練權重?因爲我們無法微調單熱矢量的值)獲得每個單熱矢量的嵌入矢量,或者? –

    +1

    2-它的意思是查找表只是詞彙表中每個單詞的嵌入矢量矩陣(已經單獨通過word2vec或...進行訓練)。而在神經網絡的過程中,我們可以使用嵌入層,或者我們可以在查找表中針對特定的嵌入向量針對特定的熱點向量來引用嵌入向量。 –