2.6 Word2Vec

选择context和target的方法中,比较流行的是采用Skip-Gram模型

Skip-Gram模型的做法是:首先随机选择一个单词作为context,例如“orange”;然后使用一个宽度为5或10(自定义)的滑动窗,在context附近选择一个单词作为target,可以是“juice”、“glass”、“my”等等。最终得到了多个context—target对作为监督式学习样本:

训练的过程是构建自然语言模型,经过softmax单元的输出为:

y^=eθtTecj=110000eθjTec\hat y=\frac{e^{\theta_t^T\cdot e_c}}{\sum_{j=1}^{10000}e^{\theta_j^T\cdot e_c}}

θt\theta_t为target对应的参数,ece_c为context的embedding vector,且ec=EOce_c=E\cdot O_c

相应的loss function为:

L(y^,y)=i=110000yilog y^iL(\hat y,y)=-\sum_{i=1}^{10000}y_ilog\ \hat y_i

由于 yy 是一个one-hot向量,所以上式实际上10000个项里面只有一项是非0的

然后,运用梯度下降算法,迭代优化,最终得到embedding matrix EE

然而,这种算法计算量大,影响运算速度。主要因为softmax输出单元为10000个,y^\hat y计算公式中包含了大量的求和运算

解决的办法之一是使用hierarchical softmax classifier,即树形分类器

这种树形分类器是一种二分类。它在每个数节点上对目标单词进行区间判断,最终定位到目标单词。最多需要log2N\log_2 N步就能找到目标单词,N为单词总数

实际应用中,对树形分类器做了一些改进。改进后的树形分类器是非对称的,通常选择把比较常用的单词放在树的顶层,而把不常用的单词放在树的底层。这样更能提高搜索速度

关于context的采样:如果使用均匀采样,那么一些常用的介词、冠词,例如the, of, a, and, to等出现的概率更大一些。但是这些单词的embedding vectors通常不是最关心的,更关心的例如orange, apple, juice等这些名词。所以实际应用中一般不选择随机均匀采样的方式来选择context,而是使用其它算法来处理这类问题

Last updated