【问题标题】:Uses of Embedding/ Embedding layer in deep learning深度学习中嵌入/嵌入层的使用
【发布时间】:2019-10-13 11:49:29
【问题描述】:

我正在探索深度学习方法,尤其是 LSTM 来预测下一个单词。假设,我的数据集是这样的:每个数据点由 7 个不同长度的特征(7 个不同的词)(此处为 A-G)组成。

 Group1  Group2............ Group 38
   A        B                   F
   E        C                   A
   B        E                   G
   C        D                   G
   C        F                   F
   D        G                   G
   .        .                   .
   .        .                   . 

我使用一种热编码作为输入层。这是模型

main_input= Input(shape=(None,action_count),name='main_input')
lstm_out= LSTM(units=64,activation='tanh')(main_input)
lstm_out=Dropout(0.2)(lstm_out)
lstm_out=Dense(action_count)(lstm_out)
main_output=Activation('softmax')(lstm_out)
model=Model(inputs=[main_input],outputs=main_output)
print(model.summary())

使用此模型。我得到了大约 60% 的准确率。 我的问题是如何使用嵌入层来解决我的问题。实际上,我对embedding了解不多(为什么,何时以及如何工作)[我只知道一个热向量不携带太多信息]。我想知道 embedding 是否可以提高准确性。如果有人可以在这些方面为我提供指导,那对我来说将是非常有益的。 (至少对于我来说,使用嵌入是否合乎逻辑)

【问题讨论】:

    标签: deep-learning lstm recurrent-neural-network word-embedding


    【解决方案1】:

    什么是嵌入层?

    它们是将正整数(可能是字数)转换为固定大小的密集向量的层。他们学习特定文本数据集的所谓嵌入(在 NLP 任务中)。

    它们为什么有用?

    嵌入层会慢慢学习单词之间的关系。因此,如果您有足够大的语料库(其中可能包含所有可能的英语单词),那么“king”和“queen”等单词的向量将在嵌入的多维空间中显示出一些相似性。

    在 Keras 中如何使用?

    keras.layers.Embedding有如下配置:

    keras.layers.Embedding(input_dim, output_dim, embeddings_initializer='uniform', embeddings_regularizer=None, activity_regularizer=None, embeddings_constraint=None, mask_zero=False, input_length=None) 
    

    将正整数(索引)转换为固定大小的密集向量。例如。 [[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]] 该层只能用作模型中的第一层。

    input_dim是词汇量+1时。词汇是数据集中使用的所有单词的语料库。 input_length 是输入序列的长度,而 output_dim 是输出向量的维度(特定单词向量的维度)。

    该层也可以与pretrained word embeddings 一起使用,例如 Word2Vec 或 GloVE。

    它们适合我的用例吗?

    当然,是的。对于情感分析,如果我们可以为特定单词生成上下文(嵌入),那么我们肯定可以提高其效率。

    如何在我的用例中使用它们?

    按照以下步骤操作:

    1. 您需要对句子进行标记。也许是keras.preprocessing.text.Tokenizer
    2. 使用keras.preprocessing.sequence.pad_sequences 将序列填充到固定长度。这将是嵌入层的input_length 参数。
    3. 以 Embedding 层为第一层初始化模型。

    希望这会有所帮助。

    【讨论】:

    • 感谢您的帮助!
    猜你喜欢
    • 2017-01-03
    • 2021-05-26
    • 2019-10-01
    • 2018-02-04
    • 2019-05-01
    • 2019-06-27
    • 2018-08-31
    • 2020-03-06
    • 2022-01-13
    相关资源
    最近更新 更多