美文网首页
词向量梳理

词向量梳理

作者: p_w | 来源:发表于2020-01-22 19:00 被阅读0次

导读:本篇文章为本人目前所掌握词向量知识点的梳理。主要介绍基于Language Model的word embedding方法。


词向量思维导图

Word2vec

基于Language Model的word2vec是词语distibution representation中最具代表性的方法,理解word2vec的原理对理解后续NLP任务和其他词向量训练模型如ELMo至关重要,Stanford cs224n也在课程一开始就介绍了word2vec。(本文相当于对cs224n 2019 lecture1的听课总结)

Word2vec原理

(Skip-grim)For each position t = 1,...,T, predict context words within a window of fixed size m, by given center word w_j.
Likelihood = L(\Theta) = \prod_{t=1}^{T}\prod_{-m\leqslant j\leqslant m,j\neq 0}^{}P(W_t+j|w_t,\Theta )

因此,模型的训练目标函数(objective function, loss function, cost function)为:J(\Theta),is the average negative log likelihood:

J(\Theta) = -\frac{1}{T}logL(\Theta )= -\frac{1}{T}\sum_{t=1}^{T}\sum_{-m\leqslant j\leqslant m,j\neq 0}^{ } logP(W_t+j|w_t,\Theta )

那么,现在的问题是如何表示P(W_t+j|w_t,\Theta ),也就是说如何使用我们的目标——word vector来表示这个公式?答案是使用softmax:

P(o|c) = \frac{exp(U_{o}^{T}\cdot V_c)}{\sum_{w\in V}^{ }exp(U_{w}^{T}\cdot V_c)}
说明:
1、V表示整个词典,V_c表示center word,U_o表示context word.
2、\cdot 表示dot product,larger dot product = larger probability.
3、\Theta是模型中要训练的参数,在本模型(skip-gram)中即是所要学习的word vector。

目标函数已有,接下来的工作就是优化函数中的\Theta使J(\Theta)达到最小,优化的方式就是使用梯度下降法:

\Theta _{j}^{new}=\Theta _{j}^{old}-\alpha \frac{\partial }{\partial\Theta _{j}^{old} }J(\Theta )

skip-gram模型直观感受

Manning 画的图非常清晰的展示了skip-gram模型的工作流程:首先,我们有两个V\times d大小的随机初始化的向量矩阵WW'd表示所训练的词向量的维度,可自己设置)。假设给定center word w_t的ont-hot向量,通过look up function(即one-hot vecter与W相乘)找到center word的embedding vector,然后再将w_t的embedding vector与W'中的每一个词的embedding vector进行dot product,即实现公式中U_{w}^{T}\cdot V_c,接下来通过softmax公式得到概率分布,与答案对比得到loss,便可以根据loss对\Theta进行优化:

skip-gram模型

在课程中,manning给出了对矩阵W的梯度推导(良心老师),在此省略过程,只给出结果:

\frac{\partial }{\partial V_{c}}log\frac{exp(U_{o}^{T}\cdot V_c)}{\sum_{w\in V}^{ }exp(U_{w}^{T}\cdot V_c)}
=
U_{o}-\sum_{x=1}^{V}P(x|c)U_{x}

Talk is cheap, show me the code

参考:https://www.jianshu.com/p/86134284fa14

其他word embedding训练方法举例

在谷歌给出的NMT的tutorial里,有这样的代码:

    encoder_cell = core_rnn_cell.EmbeddingWrapper(
        encoder_cell,
        embedding_classes=num_encoder_symbols,
        embedding_size=embedding_size)

代码的意义是给encoder cell添加了一层embedding wrapper,可以看出相当于上面介绍的W,在Tensorflow中只要是Variable,一般都是可以train的,因此可以认为NMT模型中也可以训练word embedding,即具体NLP任务下的word embedding。

相关文章

  • 词向量梳理

    导读:本篇文章为本人目前所掌握词向量知识点的梳理。主要介绍基于Language Model的word embedd...

  • 利用gensim使用腾讯开源的预训练好的词向量

    腾讯开源词向量下载地址 导入词向量 未知词短语向量补齐: 样例: 输出为: 分词,词向量编码,去除标点符号(中英文...

  • 在 Keras 模型中使用预训练的词向量

    1. 什么是词向量?   简而言之,词向量技术是将词转化成为稠密向量,并且对于相似的词,其对应的词向量也相近。词向...

  • TensorFlow实现Word2Vec并进行代码详解

    1.代码部分 2. 词向量图词向量空间表示

  • 预训练好的词向量资源

    词向量是用来表示词的向量,通常也被认为是词的特征向量。现在已经成为自然语言处理的基础技术。词向量的好坏,会直接影响...

  • 词向量

    词向量大法 从文本语料得到词向量的话,大概来讲有如下几个步骤:分词,统计词频,构建huffman树,输入文本训练词...

  • 词向量

    1.更别致的词向量模型:Simpler GloVe - Part 2 2.

  • 词向量

    目前词向量主要用的技术 word2vec fasttext glove 1 one-host编码 one-hot编...

  • 词向量

    自然语言处理问题中,一般以词作为基本单元,例如我们想要分析 "我来自北语" 这句话的情感,一般的做法是先将这句话进...

  • 技术-聊天机器人-word2vec学习笔记

    词向量(http://www.shareditor.com/blogshow/?blogId=99) 词向量:是这...

网友评论

      本文标题:词向量梳理

      本文链接:https://www.haomeiwen.com/subject/jxzuzctx.html