在Keras中嵌入层之后了解密集层

时间:2019-06-21 13:06:32

标签: python keras neural-network nlp word-embedding

我在理解处理文本序列的密集层的功能时遇到了一些问题。让我们想象一个简单的例子:我有两个句子,并且给单词分配了整数:

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

    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进行固定例如。我仍然看到了带有整数序列句,嵌入,平坦化和密集层体系结构的模型示例,此外,我已经尝试了一下,并且看到了它的工作原理……我真的很感谢在我的思想流程中进行一些解释或纠正。谢谢!

0 个答案:

没有答案