词嵌入模型Word2vec

从one-hot 说起

要想把自然语言交给机器学习来处理,就必须得先将语言数值化,将语言转为数值的产物也就是词向量.

最简单的词向量就是one-hot,顾名思义,每个词向量的长度是整个词典的大小,其中只有一个1,其余全为0,1所对应的位置也就是这个词在词典中的位置.

one-hot 有两个缺点:

  1. one-hot词向量是高维稀疏的,要找到最优解所需要的数据很多,而且呈指数增长,此为”维度灾难”.
  2. 无法体现词语间的关系,每个词向量之间都是正交的,每个单词都是完全独立的个体,因此one-hot词向量缺少语法和语义

Word2vec 的两种语言模型

Word2vec 是一种基于迭代的词嵌入学习算法, 其中包含两种语言模型:

  • Skip-gram: 根据词预测上下文
  • Continuous Bag of Words (CBOW):根据上下文来预测目标值

Skip-gram

用当前词x来预测上下文y.

x的原始输入形式就是前面所说的one-hot.

输出y是词典中每个词是上下文的概率.

当y只取x的下一个词的时候, 如果词典中的词语数量是V, 隐藏层节点数是N的话, 那么在输入一个one-hot的向量后, 在输入层到隐藏层的权重里,只有1对应的权重被激活了, 这些权重的个数是N, 因此由这些权重所组成的向量就可以作为该词的唯一表示.

由于N是远小于V的, 因此通过 Word2vec 完成了对词向量的降维

另外, 隐藏层的激活函数其实是线性的,这是 Word2vec 相对于之前的语言模型的简化之处。

CBOW

在 CBOW 中,我们用上下文预测当前词。

具体步骤如下:

  1. 生成所有的 One-Hot Representation;
  2. 根据上下文得到相对应的词向量;
  3. 将所有的上下文词向量求和后做一个平均,作为隐藏层的向量;
  4. 在隐藏层向量和输出向量相乘后,通过 Softmax 计算预测概率;
  5. 通过反向传播更新参数。

训练技巧

Word2vec 本质上是一个多分类问题, 但是由于词语会非常多, 会给计算带啦很大的困难, 所以需要技巧来加速训练. 对于Word2vec, 提出了两种训练技巧:

  1. 负采样(Negative Sampling):采样负例。本质是预测总体类别的一个子集。
  2. 分级的 Softmax(Hierarchical Softmax):用一种有效的树结构来计算所有词汇的概率。本质是把 N 分类问题变成 log(N) 次二分类。

结语

Word2vec 作为最经典的词嵌入学习算法,让词嵌入开始广泛被使用。然而,Word2vec 学习的向量其实和真正的语义还有差距,因为其学到的更多是具备相似上下文的词语,例如表示“good”和“bad”的词嵌入相似度就非常高。

-------------本文结束 感谢您的阅读-------------