word2vec


简介

Word2Vec是语言模型中的一种,它是从大量文本预料中以无监督方式学习语义知识的模型,被广泛地应用于自然语言处理中。

Word2Vec是用来生成词向量的工具,而词向量与语言模型有着密切的关系。

基础概念

语料

看word2vec之前可以先看

word2vec是一个统计语言模型,通过计算条件概率来预测和生成向量。

n-gram模型在语料库足够大的情况下,不单独统计各个条件概率,而是直接使用这种大概的方式,减少计算

? $$p(w_k|w_{k-n+1},...,w_{k-1}) = \frac{count(w_{k-n},...,w_k)}{count(w_{k-n+1},...w_{k-1})}$$

参数n(word2vec中的窗口大小)确定需要根据模型参数的数量来确定。一般来说越大越好,后面效果增加减少。

对于统计语言模型而言,利用最大似然,可把目标函数设为:

[公式] 其中,C表示语料(Corpus),Context(w)表示词w的上下文,即w周边的词的集合。当Context(w)为空时,就取 [公式] 。特别地,对于前面介绍的n-gram模型,就有 [公式]

模型基础

当然,实际应用中常采用最大对数似然,即把目标函数设为

[公式] 然后对这个函数进行最大化。

从公式(4)可见,概率 [公式] 已被视为关于w和Context(w)的函数,即:

[公式] 其中 [公式] 为待定参数集。这样一来,一旦对(4)进行优化得到最优参数集 [公式] 后,F也就唯一被确定了,以后任何概率p(w|Context(w))就可以通过函数 [公式] 来计算了。与n-gram相比,这种方法不需要事先计算并保存所有的概率值,而是通过直接计算来获取,且通选取合适的模型可使得 [公式] 中参数的个数远小于n-gram中模型参数的个数。

word2vec网络结构

word2vec是轻量级的神经网络,其模型仅仅包括输入层、隐藏层和输出层,分为CBOW和Skip-gram模型。CBOW是知道上下文语料的情况下,预测当前的词。skip-gram则是根据一个词预测上下文。上下文是指根据window_size设置的前后各n个词。

CBOW模型

img

skip-gram模型

img

参考

[1] 深入浅出Word2Vec原理解析 - 知乎 (zhihu.com)