Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Machine learning 在培训CNN进行文本分类时,如何微调word2vec?_Machine Learning_Nlp_Artificial Intelligence_Deep Learning - Fatal编程技术网

Machine learning 在培训CNN进行文本分类时,如何微调word2vec?

Machine learning 在培训CNN进行文本分类时,如何微调word2vec?,machine-learning,nlp,artificial-intelligence,deep-learning,Machine Learning,Nlp,Artificial Intelligence,Deep Learning,我有3个关于微调词向量的问题。请帮帮我。我会非常感激的!非常感谢 当我训练自己的CNN进行文本分类时,我使用Word2vec来初始化单词,然后我只使用这些预先训练的向量作为我的输入特征来训练CNN,因此如果我没有嵌入层,它肯定无法通过反向传播进行任何微调。我的问题是,如果我想进行微调,这是否意味着要创建一个嵌入层?以及如何创建它 当我们训练Word2vec时,我们使用无监督训练,对吗?在我的例子中,我使用skip-gram模型来获得预先训练好的word2vec;但是,当我使用vec.bin并在文

我有3个关于微调词向量的问题。请帮帮我。我会非常感激的!非常感谢

  • 当我训练自己的CNN进行文本分类时,我使用Word2vec来初始化单词,然后我只使用这些预先训练的向量作为我的输入特征来训练CNN,因此如果我没有嵌入层,它肯定无法通过反向传播进行任何微调。我的问题是,如果我想进行微调,这是否意味着要创建一个嵌入层?以及如何创建它

  • 当我们训练Word2vec时,我们使用无监督训练,对吗?在我的例子中,我使用skip-gram模型来获得预先训练好的word2vec;但是,当我使用vec.bin并在文本分类模型(CNN)中使用它作为我的单词初始化器时,如果我可以在vec.bin中微调单词到向量的映射,这是否意味着我必须拥有一个CNN网络结构,与训练Word2vec时的结构完全相同?微调的东西会改变vec.bin还是只是在计算机内存中微调

  • skip gram模型和CBOW模型是否仅用于无监督的Word2vec培训?或者它们也可以应用于其他一般文本分类任务?Word2vec无监督培训监督微调之间的网络有什么不同

  • @谢谢你提醒我。我在这里是新手,希望能从强大的社区学到一些东西。有空的时候请看一下我的问题,再次谢谢

    1)您需要的只是代码中的以下更改。在Keras中,默认情况下可以更新该层,若要将其从训练中排除,需要将trainable设置为False

    embedding_layer = Embedding(nb_words + 1,
                                EMBEDDING_DIM,
                                weights=[embedding_matrix],
                                input_length=MAX_SEQUENCE_LENGTH,
                                trainable=True)
    

    2) w2v只是用于嵌入层初始化,与要使用的CNN结构无关。将只更新内存中的权重。

    回答第一个问题-

    当您在
    嵌入
    构造函数中设置
    trainable=True
    时。您的预训练嵌入设置为该
    嵌入层的
    权重
    。现在,在这些
    权重上发生的任何微调都与
    w2v(CBOW或SG)
    无关。如果您想微调,您必须使用以下任何一种技术微调您的
    w2v
    模型

    答复2-

    嵌入层的
    权重
    进行任何微调都不会影响您的
    vec.bin
    。这些更新的
    权重
    与模型一起保存,尽管理论上您可以将其取出

    答复3-

    gensim
    仅实现这两种方法(
    SG
    CBOW
    )。然而,有多种新方法被用于训练词向量,如
    MLM
    (蒙蔽语言建模)。
    globe
    尝试对单词的
    共现概率进行建模


    如果您想使用自己的自定义方法进行微调。您只需指定一个任务(如
    文本分类
    ),然后保存更新的嵌入层权重。您必须适当注意索引,以便为每个单词指定相应的向量。

    非常感谢!我明白了。还有一个问题:当我用CBOW模型训练我的w2v时,这有关系吗?(因为我认为w2v可以用skip gram或CBOW训练我的单词的首字母)@PrinceofPersia,这取决于。对我来说,300维的skip-gram总是比300维的CBOW好。如