Python 梯度下降&;Gensim的Keras和Word2Vec中的反向传播差异b/w嵌入层

Python 梯度下降&;Gensim的Keras和Word2Vec中的反向传播差异b/w嵌入层,python,keras,nlp,deep-learning,word2vec,Python,Keras,Nlp,Deep Learning,Word2vec,我正在研究一个亚马逊情绪分类数据集,我必须根据给出的评论预测情绪。然而,我试验了两种方法,一种是Keras的正常嵌入层,这是我的架构: model = Sequential() model.add(Embedding(MAX_NB_WORDS, 128)) model.add(LSTM(128, dropout=0.2, recurrent_dropout=0.2,input_shape=(1,))) model.add(Dense(1, activation='sigmoid')) 下一个是

我正在研究一个亚马逊情绪分类数据集,我必须根据给出的评论预测情绪。然而,我试验了两种方法,一种是Keras的正常
嵌入层,这是我的架构:

model = Sequential()
model.add(Embedding(MAX_NB_WORDS, 128))
model.add(LSTM(128, dropout=0.2, recurrent_dropout=0.2,input_shape=(1,)))
model.add(Dense(1, activation='sigmoid'))
下一个是我用
gensim.models
中的
Word2Vec
尝试的。这是我的密码:

from gensim.models import Word2Vec
word_model = Word2Vec(df['reviewText'], size=200, min_count = 1, window = 5,sg=0, negative=5)
WV_DIM = 100
nb_words = min(MAX_NB_WORDS, len(word_vectors.vocab))
# we initialize the matrix with random numbers
wv_matrix = (np.random.rand(nb_words, WV_DIM) - 0.5) / 5.0
for word, i in word_index.items():
    if i >= MAX_NB_WORDS:
        continue
    try:
        embedding_vector = word_vectors[word]
        # words not found in embedding index will be all-zeros.
        wv_matrix[i] = embedding_vector
    except:
        pass    
model = Sequential()
model.add(Embedding(nb_words,
                     WV_DIM,
                     mask_zero=False,
                     weights=[wv_matrix],
                     input_length=MAX_SEQUENCE_LENGTH,
                     trainable=False))
model.add(LSTM(128, dropout=0.2, recurrent_dropout=0.2,input_shape=(1,)))
model.add(Dense(1, activation='sigmoid'))
但是我无法理解仅仅使用
模型的区别。添加(嵌入(…)
和使用
word2vec
以及
嵌入
。我想知道Keras的
嵌入层工作背后的数学原理,以及
word2vec
+
嵌入层的工作原理

我已经了解了Keras嵌入层是如何工作的,但我想了解它的梯度下降和反向传播,以及
word2vec
嵌入的组合


另外,对于我给出的两个代码,我跳过了
tokenize
pad\u序列
部分。

在第一个示例中,嵌入层是可训练权重的一部分。对于重量更新。。。假设oj是表示单词j的一个热向量,E是嵌入矩阵,vj是其对应的嵌入向量,因此vj=E*oj;你可以像其他任何方法一样,将其用于常规重量更新。在你的第二个例子中,你的嵌入矩阵有固定的值(由word2vec提供),它不会被更新。那么嵌入矩阵是什么,我无法理解:(它包含什么?嵌入矩阵是一个单词嵌入矩阵!每个单词由一个向量表示。假设单词“wi”由向量“ei”表示(向量“ei”由word2vec生成)。嵌入矩阵为:E=[e1 e2…ei…eN],其中N是单词的总数。因此,在进行预测时,在训练过程中,例如误差如何最小化?请你做一个小陈述并给出一个例子,例如如何使用梯度下降法最小化损失?你不是在混淆吗?使用损失函数的梯度/导数最小化误差,该函数使用实际输出和t他预测了输出(如果使用正则化,则预测权重)。如果权重是参数或可树,则这就是权重更新中使用的内容!如果您有常数参数(例如来自word2vec的嵌入矩阵),则这些对误差最小化没有任何好处。我建议您阅读以下书籍:(它有你想要的例子,还有更多)。