對於自然語言處理(NLP)任務,人們經常使用word2vec向量作爲單詞的嵌入。但是,我仍然不明白word2vec模型如何與lstm模型集成?word2vec模型如何與lstm模型集成?
建模NLP任務時應如何處理這些未知單詞,如使用長期短期(LSTM)網絡進行情感預測?
對於自然語言處理(NLP)任務,人們經常使用word2vec向量作爲單詞的嵌入。但是,我仍然不明白word2vec模型如何與lstm模型集成?word2vec模型如何與lstm模型集成?
建模NLP任務時應如何處理這些未知單詞,如使用長期短期(LSTM)網絡進行情感預測?
要將文本數據用作神經網絡的輸入,您最好需要將其轉換爲數字,word2vec
可以做到這一點,作爲擁有龐大的單熱編碼矢量的替代方法。
但是爲了能夠使用它,您還需要一個字典,它只是一組已知字詞,將被映射到您的嵌入矩陣(生成的word2vec)。該矩陣將具有字典大小和嵌入的大小(您的特徵矢量大小)的形狀。
該字典使用特殊標記(例如<UNK>
)處理未知單詞,該單詞在嵌入矩陣中也有條目。
編輯:新增例如
讓我們說這是你輸入的文字:The quick brown fox jumps over the lazy dog
這是你的字典(大小8):
<EOF> 0
<UNK> 1
the 2
fox 3
jumps 4
over 5
lazy 6
dog 7
與嵌入嵌入矩陣尺寸2:
0 | -0.88930951349 -1.62185932033
1 | -0.11004085279 0.552127884563
2 | 0.689740990506 0.834548005211
3 | -0.7228834693 0.633890390277
4 | -1.47636106953 -0.20830548073
5 | 1.08289425079 0.211504860598
6 | -0.626065160814 0.505306007423
7 | 1.91239085331 -0.102223754095
然後,你將需要預處理輸入,在字典中的指數更換每一個字,結果是這樣的:
[2, 1, 1, 3, 4, 5, 2, 6, 7]
注意,如quick
和brown
不是在字典中,這些都是未知詞語。
最後要在網絡中使用它,您將需要用嵌入替換索引。
[[0.689740990506, 0.834548005211], [-0.11004085279, 0.552127884563],
[-0.11004085279, 0.552127884563], [-0.7228834693, 0.633890390277],
[-1.47636106953, -0.20830548073], [1.08289425079, 0.211504860598],
[0.689740990506, 0.834548005211], [-0.626065160814, 0.505306007423],
[1.91239085331, -0.102223754095]]
但我不明白如何lstm和他的門和激活功能被認爲是??你提到的所有事情都發生在第一層? – dan
我建議你閱讀Christoper Olah的博客,他對神經網絡有非常深入的解釋,包括lstms http://colah.github.io/posts/2015-08-Understanding-LSTMs/。 –
表示可以將神經網絡層看作是將矢量轉換爲不同表示的神經網絡層,它更適合於目標函數。當你有一個非常深的網絡時,網絡的很大一部分將進行特徵提取,只有最後一部分纔會做實際的目標(分類,迴歸等)。 'word2vec'將事先做好部分功能工程,減少網絡需要達到相同效果的訓練/容量。 –