1700533150
1700533151
由于词嵌入将每个词映射成一个K维的向量,如果一篇文档有N个词,就可以用一个N×K维的矩阵来表示这篇文档,但是这样的表示过于底层。在实际应用中,如果仅仅把这个矩阵作为原文本的表示特征输入到机器学习模型中,通常很难得到令人满意的结果。因此,还需要在此基础之上加工出更高层的特征。在传统的浅层机器学习模型中,一个好的特征工程往往可以带来算法效果的显著提升。而深度学习模型正好为我们提供了一种自动地进行特征工程的方式,模型中的每个隐层都可以认为对应着不同抽象层次的特征。从这个角度来讲,深度学习模型能够打败浅层模型也就顺理成章了。卷积神经网络和循环神经网络的结构在文本表示中取得了很好的效果,主要是由于它们能够更好地对文本进行建模,抽取出一些高层的语义特征。与全连接的网络结构相比,卷积神经网络和循环神经网络一方面很好地抓住了文本的特性,另一方面又减少了网络中待学习的参数,提高了训练速度,并且降低了过拟合的风险。
1700533152
1700533153
1700533154
1700533155
1700533157
百面机器学习:算法工程师带你去面试 06 Word2Vec
1700533158
1700533159
1700533160
1700533161
场景描述
1700533162
1700533163
谷歌2013年提出的Word2Vec是目前最常用的词嵌入模型之一。Word2Vec实际是一种浅层的神经网络模型,它有两种网络结构,分别是CBOW(Continues Bag of Words)和Skip-gram。
1700533164
1700533165
知识点
1700533166
1700533167
Word2Vec,隐狄利克雷模型(LDA),CBOW,Skip-gram
1700533168
1700533169
问题 Word2Vec是如何工作的?它和LDA有什么区别与联系?
1700533170
1700533171
难度:★★★☆☆
1700533172
1700533173
分析与解答
1700533174
1700533175
CBOW的目标是根据上下文出现的词语来预测当前词的生成概率,如图1.3(a)所示;而Skip-gram是根据当前词来预测上下文中各词的生成概率,如图1.3(b)所示。
1700533176
1700533177
1700533178
1700533179
1700533180
图1.3 Word2Vec的两种网络结构
1700533181
1700533182
其中w(t)是当前所关注的词,w(t−2)、w(t−1)、w(t+1)、w(t+2)是上下文中出现的词。这里前后滑动窗口大小均设为2。
1700533183
1700533184
CBOW和Skip-gram都可以表示成由输入层(Input)、映射层(Projection)和输出层(Output)组成的神经网络。
1700533185
1700533186
输入层中的每个词由独热编码方式表示,即所有词均表示成一个N维向量,其中N为词汇表中单词的总数。在向量中,每个词都将与之对应的维度置为1,其余维度的值均设为0。
1700533187
1700533188
在映射层(又称隐含层)中,K个隐含单元(Hidden Units)的取值可以由N维输入向量以及连接输入和隐含单元之间的N×K维权重矩阵计算得到。在CBOW中,还需要将各个输入词所计算出的隐含单元求和。
1700533189
1700533190
同理,输出层向量的值可以通过隐含层向量(K维),以及连接隐含层和输出层之间的K×N维权重矩阵计算得到。输出层也是一个N维向量,每维与词汇表中的一个单词相对应。最后,对输出层向量应用Softmax激活函数,可以计算出每个单词的生成概率。Softmax激活函数的定义为
1700533191
1700533192
1700533193
,
1700533194
1700533195
(1.7)
1700533196
1700533197
其中x代表N维的原始输出向量,xn为在原始输出向量中,与单词wn所对应维度的取值。
1700533198
1700533199
接下来的任务就是训练神经网络的权重,使得语料库中所有单词的整体生成概率最大化。从输入层到隐含层需要一个维度为N×K的权重矩阵,从隐含层到输出层又需要一个维度为K×N的权重矩阵,学习权重可以用反向传播算法实现,每次迭代时将权重沿梯度更优的方向进行一小步更新。但是由于Softmax激活函数中存在归一化项的缘故,推导出来的迭代公式需要对词汇表中的所有单词进行遍历,使得每次迭代过程非常缓慢,由此产生了Hierarchical Softmax和Negative Sampling两种改进方法,有兴趣的读者可以参考Word2Vec的原论文[3]。训练得到维度为N×K和K×N的两个权重矩阵之后,可以选择其中一个作为N个词的K维向量表示。
[
上一页 ]
[ :1.70053315e+09 ]
[
下一页 ]