为seq2seq

时间:2017-11-03 09:07:16

标签: python tensorflow lstm embedding

我有一个关于Tensorflow中LSTM实现的问题......尤其是seq2seq建模的应用(你有一个编码器和解码器)。

简而言之:在使用seq2seq模型时学习单词嵌入,我们不是有冗余权重吗?

通常的方法是嵌入输入字(用于编码器),如word2vec向量,但建模方法也能够学习这些嵌入。这意味着当我们要为编码器设置变量时,我们有一个额外的嵌入矩阵(在LSTM之外),它编码我们的词汇表。 我对LSTM节点的理解,或者让我们采用(更简单的)RNN节点,是应用以下等式

sigma(W \cdot x + U \cdot h + b)

我们有尺寸

(n_hidden \times n_feature) (n_feature \times 1) + (n_hidden \times n_hidden) (n_hidden \times 1) + (n_hidden \times 1). 

我相信这里的值一(1)可以替换为batch_size。 (如果我错了请纠正我)

我担心的是W \cdot x部分。因为在这种情况下,向量x已经是一个嵌入向量,因此计算W \cdot x感觉是多余的......如果x是一个热门的编码向量,那么IMO就会有意义。

任何人都可以告诉我,如果我的推理是合理的,并且我是否正确理解了seq2seq模型的'额外嵌入'。

编辑:我现在唯一能想到的就是你不想因为某些原因而在你的LSTM中完全嵌入......(为什么我不清楚)。但是我可以想象如果你需要将LSTM的n_hidden维度设置为词汇量大小,你会失去一些灵活性。例如..当你的词汇量大小改变......或者也许是训练努力..如果有人能证实这一点,那就太棒了:)

0 个答案:

没有答案