Word2vec是如何工作的?它和LDA有什么区别和联系?

Word2vec是目前最常用的词嵌入模型之一。是一种浅层的神经网络模型,他有2种网络结构,分别是CBOW(continues bag of words)和 skip-gram.

Word2vec    隐狄利克雷模型(LDA),CBOW,Skip-gram

Word2vec是如何工作的?

CBOW的目标是根据上下文出现的词语来预测当前词的生成概率:

Word2vec是如何工作的?它和LDA有什么区别和联系?_第1张图片

Skip-gram模型是根据当前词来预测上下文中各词的生成概率:

Word2vec是如何工作的?它和LDA有什么区别和联系?_第2张图片

 

输入层的每个词由独热编码方式表示,即所有词均表示一个N维向量,其中N为词汇中单词的总数。在向量中,每个词都将与之对应的维度置为1,其余维度均设为0.

在映射层(又称隐含层)。K个隐含单元的取值可以由N维输入向量以及链接输入和隐含单元之间的N*K维权重矩阵计算得来。在CBOW 模型中,还需要将各个单元计算出来的隐含单元求和。

输出层向量的值可以通过 隐含层向量(K维),以及连接隐含层和输出层之间的KxN维权重矩阵计算得到。输出层也是一个N维向量 ,每维和词汇表中的一个单词相对应。最后对输出层向量应用Softmax激活函数,可以计算出每个单词的生成概率。

 

接下来就是训练神经网络的权重,使得语料库中所有单词的整体生成概率最大化。从输入层到隐含层需要一个N*K的权重矩阵,从隐含层到输出层又需要一个K*N的权重矩阵,学习权重可以用反向传播算法实现,每次迭代时将沿着梯度更优的方向进行一小步更新。

但是由于sigmoid函数中存在归一化项的缘故,推导出来的迭代公式需要对词汇表中所有单词进行遍历,使得每次迭代的速度非常的缓慢,由此产生了Hierarchical Softmax和Negative Sampleing 2种改进方法。

训练得到维度为N*K和K*N的2个权重矩阵之后,可以选择一个作为N个词的K维向量表示。

 

 

Word2vec和LDA有什么区别和联系?

LDA是利用文档中单词的共现关系来对单词按主题聚类,也可以理解为‘文档-单词“矩阵进行分解,得到”文档-主题“和”主题-单词“两个概率分布。

Word2vec 其实是对”上下文-单词“矩阵进行学习,其中上下文由周围的几个单词组成,由此得到的词向量表示 更多的融入了上下文共现的特征。 也就是说,如果2个词所对应的Word2vec向量相似度较高,那么他们很可能经常在相同的上下文中出现。

 

主题模型通过一定的结构调整可以基于”上下文-单词“矩阵进行主题推理。同样的,词嵌入方法也可以根据”文档-单词“矩阵学习出词的隐含向量表示。

主题模型和词嵌入模型最大的不同在于其模型本身,主题模型是一种基于概率图模型的生成式模型,其似然函数可以写成若干个条件概率连乘的形式,其中包含需要推测隐含变量(即主题)

词嵌入模型一般表达为神经网络的形式,似然函数定义在网络输出之上。需要通过学习网络的权重以得到单词的稠密向量表示。

 

 

 

你可能感兴趣的:(NLP,统计,算法)