Word2Vec Model

1. 介绍

自然语言处理的一个重要方法是将自然语言处理问题转化为机器学习问题。转换为机器学习问题的第一个步骤,是将自然语言数值化, 简单的说就是如何用数学的语言去表示一个词,一个句子,一篇文章。早期人们将词汇表中的单词按照索引编号,再用one-hot编码去表示句子。这样做的好处是非常的简单,而且经过one-hot编码之后的文章都是固定长度的,这也为后续的数据处理带来了许多方便。但是,one-hot编码的劣势也是非常明显的,第一,不能表示词序,第二,不能展现单词与单词之间的关系, 第三,当词汇表非常庞大的时候而文章又比较短的时候就会造成矩阵过分稀疏和维度灾难。 word2vec的引入在很大程度解决了one-hot编码的劣势。word2vec顾名思义就是完成了词到向量的映射;把每一个词映射到一个固定维度的低维向量中,且向量的表示不是随机的,相同的词性在向量表达上比较相似,也就有相近的向量距离(可以是欧式距离或者余弦距离等)。word2vec利用无监督的深度学习方法,只需要投入文本,学习的过程无需人工干预。

2. 两个模型(可选其一)

在语言模型上,word2vec可以分为两类,CBOW 和 Skip-Gram。CBOW的思想是利用上下文去预测中间的词,skip-gram则是利用中间的词去预测上下文

2.1 CBOW 模型

Word2Vec Model_第1张图片
two models

以CBOW 为例, 整个算法的目的就在于:


Word2Vec Model_第2张图片
CBOW cost

在细节之外记住我们的目标: 用内容预测单词。在构建这个模型的过程中顺带会优化词向量,但是这个顺带的副产品却是我们真正需要的。我们需要时刻明确目标:优化代价函数,这样才不会被word2vec冗杂的细节问题迷惑,意识到这一点非常重要。

2.2 Skip-gram Model

skip-gram 与CBOW 非常相似,不同的是skip-gram 的目的是用中心词预测周围词,表现在代价函数就是把 | 左右调换顺序。

3 两套框架(可选其一)

image.png
image.png

4.Hierarchical Softmax & CBOW

https://arxiv.org/pdf/1411.2738.pdf
Hierarchical softmax是一种高效计算softmax 的方法,模型使用二叉树表示所有的单词,在这个模型中,所有的单词被表示在二叉树的叶子节点上。可以证明的是,假如词汇表的大小是||D||, 则二叉树一共有||D|| 个叶子节点和||D|| - 1 个非叶子节点。从根节点到每一个叶子节点只有一个唯一的路径,这条路径的长度用来刻画单词在语料库中出现的概率,路径越长,则词频越低(霍夫曼树的思想)。

Word2Vec Model_第3张图片
图四 HS

在HS 的输出结果中,并没有输出单词的向量表示形式。取而代之的是,||D|| -
1 个内部节点(innear node)具有自己的表示向量:



输出单词的概率被定义为:


公式一

Word2Vec Model_第4张图片
公式二

现在让我们用一个简单的实例来理解这个算法,看到图四,假设我们要计算w_t 作为输出单词的概率,我们定义作为输出单词的概率是从根节点root处一直走到叶子节点的概率,我们定义,在内部节点n走到左子树的概率定义为:
公式三

相应的, 在内部节点n 处走到右子树的概率就可以定义为:

公式四

那么,我们从图四中的根节点一路走到w_2的概率就可以表示为:

公式五

我们不难确定:

Word2Vec Model_第5张图片
公式六

现在,我们就可以用求导数的方法来优化内部节点的向量表示了,为了简单起见,我们先从一个单词内容的模型出发,从one-word context model 拓展到CBOW 和 skip-gram 模型就是一件比较简单的事情了。
为了后续表达的简便,我们定义:

公式七

在每一次的训练实例中,error function(代价函数)可以被定义为:

Word2Vec Model_第6张图片
公式八

在这个问题中,我们首先将v_j * h 视为变量, 并对其进行求导,这样,我们有:

Word2Vec Model_第7张图片
公式九
补充解释

下一步,我们对内部节点的向量表示进行求导,于是有:

Word2Vec Model_第8张图片
公式10

这样,我们就可以得出新的内部节点的向量表示了:

公式11

这样,我们就在一次训练过程中更新了全部内部节点上的向量的表示。
紧接着,我们知道h 作为隐层的输出,直接与输入的向量相关,我们对h 求偏导数,就可以得到输入向量的最佳表示:

Word2Vec Model_第9张图片
公式12

使用EH的值,我们就可以直接进行优化输入向量的表示了。
以HS & CBOW model 作为例子介绍word2vec的一般思想。 word2vec 迄今为止主要以 { Skip-gram , CBOW } {HS, Negative Sampling}的组合为主构建架构,在未来有需要的时候,还是要拿出来继续学习的。

PLACEHOULDER for Skip-Gram, NS etc...

非常棒的资源:
word2vec中的数学
http://mccormickml.com/assets/word2vec/Alex_Minnaar_Word2Vec_Tutorial_Part_II_The_Continuous_Bag-of-Words_Model.pdf
https://arxiv.org/pdf/1411.2738.pdf

Gensim 的word2vec 工具使用

你可能感兴趣的:(Word2Vec Model)