首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何微调word2vec在培训我们的CNN文本分类?

如何微调word2vec在培训我们的CNN文本分类?
EN

Stack Overflow用户
提问于 2016-10-20 00:01:56
回答 2查看 5.6K关注 0票数 5

我有三个关于微调字向量的问题。求你帮帮我。我会很感激的!事先非常感谢!

  1. 当我训练我自己的CNN进行文本分类时,我使用Word2vec初始化单词,然后我使用这些预先训练过的向量作为我的输入特性来训练CNN,所以如果我没有嵌入层,它肯定不能通过反向传播进行任何细调。我的问题是,如果我想做微调,它是否意味着创建一个嵌入层?以及如何创建它?
  2. 当我们训练Word2vec时,我们使用无监督的训练,对吗?就像在我的例子中,我使用跳过图模型来获得我预先训练过的word2vec;但是当我拥有vec.bin并使用它作为我的单词缩写词时,如果我能够在vec.bin中微调单词到向量地图,这是否意味着我必须有一个与训练我的Word2vec时完全相同的CNN网络结构?微调是会改变vec.bin,还是只是电脑内存的微调?
  3. 跳过图模型和CBOW模型仅用于无监督的Word2vec训练吗?或者他们也可以申请其他一般的文本分类任务?Word2vec无监督训练监督微调网络有什么不同?

@Franck Dernoncourt谢谢你提醒我。我在这里是绿色的,希望能从强大的社区中学到一些东西。请看我的问题,当你有时间,再次感谢你!

EN

回答 2

Stack Overflow用户

发布于 2016-10-20 02:05:58

1)您所需要的只是使用预训练字嵌入可训练/固定嵌入层的一个好例子,并对代码进行以下更改。在Keras中,您可以在默认情况下更新此层,以将其排除在培训之外,需要将其设置为False。

代码语言:javascript
复制
embedding_layer = Embedding(nb_words + 1,
                            EMBEDDING_DIM,
                            weights=[embedding_matrix],
                            input_length=MAX_SEQUENCE_LENGTH,
                            trainable=True)

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

票数 2
EN

Stack Overflow用户

发布于 2019-05-09 08:33:15

回答你的第一个问题-

trainable=True构造函数中设置Embedding时。预先训练过的嵌入被设置为weights of那个embedding layer。现在,那些weights上发生的任何微调都与w2v(CBOW or SG)无关。如果您想完善您的w2v模型,您将不得不使用这些技术中的任何一个。请参阅以下答案

答覆2-

weights of embedding layer的任何细化都不会影响您的vec.bin。这些更新的weights与模型一起保存,因此理论上您可以将它们取出来。

答覆3-

gensim只实现了这两个方法(SGCBOW)。然而,有许多新的方法用于训练单词向量,如MLM(蒙面语言建模)。glove试图模拟单词的co-occurences概率。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40143405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档