谈谈对Word2Vec理解

Word2Vec

Posted by daner on April 1, 2017

背景

在讨论 Word2Vec 之前,必然是要说到 Embedding。刚开始接触 Embedding 时,很难描述它究竟是干什么的。我们不妨这么来理解:在机器学习中,我们需要对现实的问题建模来实现问题的求解;建模的输入是数值,而现实中遇到的都是符号(word、movie、food…);那么在解决问题时,需要将符号转换成数值 - 这个过程叫 Embedding 即符号用 Vector 来表示。在 Embedding 时,必然存在 embedding matrix 供转换使用,它是机器学习想要得到的结果。本文要讨论的 Word EmbeddingEmbeddingWord 领域的实现。

Word2Vec

Word2Vec 是实现 Word Embedding 的一种工具。在 Word2Vec 之前,我们都是用 one-hot-encoder 来对每个词编码。但one-hot-encoder 是假设每个词相互独立,这显然不符号词的现实意思(词与词之间有关联的,同义、反义…),而且one-hot-encoder 编码维度会很大(假设10万个词就是10万维度),在机器学习过程中导致维度爆炸很难进行训练。很显然 Word2Vec 解决了上述问题,优点显而易见

  • 降维:将 one-hot-encoder 降低到 vector 要表示的维度,一般是 50-300
  • 词义:Word2Vec 可以变现不同词之间的关系 - 根据词在向量空间的坐标得到词与词之间联系

Word2Vec 是如何做到的呢?一个词的意思是用其他词来描述 - Word2Vec 是将词用词的上下文来描述。简单举例:

  • 对于一句话:『她们 夸 吴彦祖 帅 到 没朋友』,『吴彦祖』这个词,在本句的上下文就是『她们』、『夸』、『帅』、『没朋友』这些词
  • 现有另一句话:『她们 夸 我 帅 到 没朋友』,那么不难发现『我』这个词,和『吴彦祖』这个词,在本语料中上下文相同
  • 可以得出『我』和『吴彦祖』两个词意思相同

语料可以简单认为是很多句子的集合,本例中就是例子中的两句话。上面的语料训练出『我』和『吴彦祖』是同义词,也许换个语料结果会不同,显然一个丰富的语料很重要。

Word2Vec 基于词和上下文的关系可以派生出两个模型

Skip-gram

如果用一个词语作为输入,来预测它周围的上下文,那这个模型叫做 Skip-gram 模型,即 P(context|word)

CBOW

如果是拿一个词语的上下文作为输入,来预测这个词语本身,则是 CBOW 模型,即P(word|context)

Model

在大致了解 Word2Vec是什么东东后,以 Skip-gram 为例看看它的模型。Skip-gram 模型 显然是个浅层神经网络,只有一个隐藏层,需要求解的也只是两个权重:$W {V*N}$、$W ^{‘}{NV}$ 。模型训练结束后,$W _{VN}$ 就是我们需要的 embedding matrix 。举个例子来理解,现在有两个词:·我·、’第’经 one-hot-encoder 编码向量表示为[0,1,0,0,0]和[0,0,0,0,1],embedding matrix 如下 [[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 9, 10, 11], [12, 13, 14]] 那么 Word2Vec 的转换公式为 onehot * embedding matrix(实际运算不用点积,太耗时了,直接查表就行),·我· = [3,4,5],’第’ = [12, 13, 14]。本例实现将5维的onehot 转换成3维word embedding

上面描述的是模型训练后,如何应用的问题。接下来看看模型是如何训练的,在此之前需要一些神经网络的知识自己去弥补。

  • Input layer :维度与onehot相同
  • Hidden layer:神经元个数和最后得到的 Word Embedding 相同,这就是为什么 $W _{V*N}$ = embedding matrix
  • output layer :维度与onehot相同

Word2Vec模型实际上分为了两个部分,第一部分为建立模型,第二部分是通过模型获取嵌入词向量。Word2Vec的整个建模过程实际上与自编码器(auto-encoder)的思想很相似,即先基于训练数据构建一个神经网络,当这个模型训练好以后,我们并不会用这个训练好的模型处理新的任务,我们真正需要的是这个模型通过训练数据所学得的参数(embedding matrix),例如隐层的权重矩阵。

tf train Word2Vec

待续

hierarchical softmax or negative sampling

参考资料: