我在理解处理文本序列的密集层的功能时遇到了一些问题。让我们想象一个简单的例子:我有两个句子,并且给单词分配了整数:
Sentence 1 I like cheese
Sentence 2 I like milk
Sentence to sequence
Seq1 [1, 2, 3]
Seq2 [1, 2, 4]
然后我们将输入(整数序列)添加到嵌入层(二维随机数)中:
Embedding matrix
Term Index Vector
I 1 [0.2 0.6]
like 2 [0.7 0.1]
cheese 3 [0.4 0.5]
milk 4 [0.1 0.9]
下一步是将带有嵌入的序列弄平,以使其一维化:
Sequence to Embedding
Seq1 [[0.2 0.6] [0.7 0.1] [0.4 0.5]]
Seq2 [[0.2 0.6] [0.7 0.1] [0.1 0.9]]
Flatten to 1D for Dense layer
Seq1 [0.2 0.6 0.7 0.1 0.4 0.5]
Seq2 [0.2 0.6 0.7 0.1 0.1 0.9]
现在,我们可以将这些数组用作Dense层的输入,如下所示:
3个单元的密集层,输入长度为序列。输入序列与致密层的权重矩阵的点积。
Dense layer
Seq1 X1 X2 X3 X4 X5 X6 · WH = ZH …
0.2 0.6 0.7 0.1 0.4 0.5 · W1,1 W1,2 W1,3 +
W2,1 W2,2 W2,3
W3,1 W3,2 W3,3 BH
W4,1 W4,2 W4,3
W5,1 W5,2 W5,3
W6,1 W6,2 W6,3
Seq2 X1 X2 X3 X4 X5 X6 · WH = ZH …
0.2 0.6 0.7 0.1 0.1 0.9 · W1,1 W1,2 W1,3 +
W2,1 W2,2 W2,3
W3,1 W3,2 W3,3 BH
W4,1 W4,2 W4,3
W5,1 W5,2 W5,3
W6,1 W6,2 W6,3
这里的问题是每个特征都对应于序列的一部分,X5和X6属于最后一个单词的向量。通常,在“单词袋”输入中,每个X都分配给一个单词,如果该单词存在,则该单词会获得权重(例如,遵循TF-IDF)。同样利用数值数据,Xi代表一个特征(价格,温度,GDP ...),并且总是这种情况。 在这里,但是, X未分配给单词,而是取决于顺序。请参见X5和X6,因为它们是不同的,所以它们如何变化。
将“密集”层的“权重矩阵”中的权重分配给要素(Xi),然后对其进行优化。
我的问题:
如果单词的顺序一直在变化并且Xi指的是不同的单词怎么办?
我了解LSTM和其他递归网络可以处理动态排序,但是在我看来,密集层无法使用顺序文本,并且输入应通过One Hot vector或TF-IDF进行固定例如。我仍然看到了带有整数序列句,嵌入,平坦化和密集层体系结构的模型示例,此外,我已经尝试了一下,并且看到了它的工作原理……我真的很感谢在我的思想流程中进行一些解释或纠正。谢谢!