Word2v的ec 原理解析!

1. 前言

近年来,以深度学习为代表的人工智能技术发展如火如荼,其应用领域也从最开始的计算机视觉扩展到了包括自然语言处理、推荐、语音识别等在内的众多研究方向,并且在大多数领域取得了令人惊艳的效果,以笔者熟悉的自然语言处理(NLP)方向为例,纵观近几年在ACL、EMNLP、CLONG等顶级学术会议上发表的学术论文,随处可见Deep Learning、Neural Network/NN、RNN、Conolutional Neural Networks/CNN、LSTM、Autoencoder、Embedding等字样,传统的自然语言处理的任务比如文本分类、情感分析、命名实体识别、分词、关系抽取、机器翻译等任务,目前取得State of Art 的方案也基本被基于深度学习的算法占FF据。文本表示是NLP中的基础,Word2ec作为一种基于神经网络思想的文本表示学习方法,对在深度学习盛行的今天想要学习NLP的人来说是必要的入门知识。

word2ec是谷歌开源的一款用于词向量计算的工具,同时也是一套生成词向量的算法方案,其他生成词向量的方案有LSA、PLSA、LDA等等。Word2ec算法的背后是一个浅层神经网络,其网络深度仅为3层,所以严格说Word2ec并非深度学习范畴,但其生成的词向量在很多任务中都可以作为深度学习算法的输入,因此在一定程度上可以说Word2ec技术是深度学习在NLP领域能够更好应用的基础。

本文主要涉及一下知识点:

1) 相关背景知识

2) Word2ec中两种词向量模型CBOW和Skip-gram

3) Word2ec中两种学习框架Hierarchical Softmax和Negatie Samping的原理分析

4) Word2ec相关拓展与应用

2. 相关背景知识

2.1 词向量

计算机不能直接处理文本、图像、声音等内容,需要将其转化为数字特征后才能处理,词向量就是文本中的单词转后的计算机能够处理的数字化特征。词向量的表示方式主要有两种,一种是one-hot representation,就是利用一个高维稀疏(所谓稀疏是指向量中为0的维度特别多)的向量表示一个单词,向量的维度为词典中词的个数,向量中只有一个维度的值为1,其余维度值为0,为1的维度为词在词典中的索引位置,常见的有词袋(BOW,bag of words)模型;另一种是distributed representation,该方法将单词表示成一个低维稠密的向量,常见的方法有LSA、PLSA、LDA、Word2ec、Gloe等等。下面以单词powerful为例说明两种不同的表示方式:

powerful的one-hot表示: [0 0 0 1 0 0 0 …,0] powerful 的distributed representation表示:[0.25 0.35 0.4 0.7 …,0.8]

优缺点比较:

one-hot representation

优点:简单,在过去NLP任务中一直处于霸主地位;

缺点:特征向量维度高,容易引发维度灾难;词的语义相似度无法通过词向量的计算进行体现,不太适合深度学习的相关任务要求;

distributed representation

优点:向量维度低且稠密,信息密度高;词间的相似度可以通过词向量的计算体现;

缺点:学习过程相对复杂且受训练语料的影响很大;

2.2 语言模型

语言模型即对语言进行建模,广泛应用于分词、词性分析、机器翻译等领域。本文涉及的语言模型均为统计语言模型(Statistical Language Model),其作用是计算一段文本出现的概率。

假设一段文本S的表示为:

S=(w1,w2,…,wT)

wi表示S中的第i的单词,则文本S出现的概率为:

上面公式利用了贝叶斯公式进行了分解,上式中各个概率值是语言模型的参数,对于一段新给出的文本,只需将分解后的参数进行累乘即可得出新文本出现的概率。

语言模型参数的更一般表示形式为:p(w/context(w)),其中w表示某个单词,context(w)表示单词w的上下文,含义为L上下文为context(w)时,词w出现的概率。

学习语言模型参数p(w/context(w)),目前解决方案有很多,例如N-gram模型、N-pos模型和神经概率语言模型(NPLM)以及本文提到的Word2ec中的Hierarchical Softmax模型和Negatie Sampling模型(其实本质上HS和Negatie Sampling是对传统NPLM语言模型的一种简化,其中基于HS的实现是利用Huffman Tree替代了原有的全连接网络)。

这里特别说明一点:词向量是神经网络统计语言模型的副产品。

3. CBOW模型

下面介绍连续词袋模型(CBOW model ,Continuous Bag of Words Model)。

3.1 模型结构

模型包含三层,输入层,映射层和输出层。该网络的含义是已知词w(t)的上下文w(t-2),w(t-1),w(t+1),w(t+2)的前提下预测词w(t)出现的概率,即:p(w/context(w))。 目标函数为:

CBOW 模型中p(w/context(w))的表示框架有两种,分别为:Hierarchical Softmax和Negatie Samping,下面分别对两种框架下的模型参数求解进行介绍。

3.2 基于Hierarchical Softmax框架的网络结构解析

基于Hierarchical Softmax框架的CBOW模型将输出层利用一棵Huffman Tree进行表示,该Huffman Tree使用语料中的词根据词频进行构建,树中每个叶子节点代表一个单词,约定(词频较大的)左孩子节点编码为1,(词频较小的)右孩子节点编码为0。同时利用节点的层级关系,将从根节点到单词t的路径中每个节点当做一次二分类(基于Logistic Regression算法),将整个路径产生的概率作为p(w/context(w))。

网络包含以下几部分:

1) 输入层:包含Context(w)中2c个词向量(Context(w)1), (Context(w)2),…(Context(w)2c),每个词向量的维度为m。

2) 投影层:将输入层的2c个向量求和累加,即:

3) 输出层:输出层对应一棵二叉树,它是以语料中快出现过词作为节点,以各词在语料中出现的次数当权值构造出来的Huffman树。这个Huffman树中,叶子节点功N个,分别对应词典中的词,非叶子节点N-1个(上图中黄色结点)。

下面介绍如何定义条件概率函数p(w/context(w)),以上图中词“足球”为例,从根节点出发到达“足球”这个叶子节点,中间功经历了4次分支,而每一次分支都可视为进行了一次二分类。我们约定树种节点编码为0的定义为正类,编码为1的节点定义为负类,即:

上式中piw表示从根节点出发到达叶子节点w途中经过的第i个节点的类别标签,diw表示从根节点出发到达叶子节点w途中经过的第i个节点的的Huffman编码,该公式描述了非叶子节点类别标签和Huffman编码的对应关系。

对节点进行分类使用的是逻辑回归算法,因此一个节点被分为正类的概率是

被分为负类的概率为

其中θ为待定参数,每个非叶节点对应一个,设设为iw,对于从根节点出发到达”足球”叶节点共经历了4次二分类,每次分类结果的概率为:

p(足球/Context(足球))跟这四个概率值的关系有:

综上所述:对于训练语料的词典D中任意次w,Huffman树上必然存在唯一一条从根节点到词w对应节点的路径pw,路径pw上存在lw-1个分支,将每个分支看做一次二分类,每一次二分类产生一个概率,这些概率的乘机即为条件概率p(w/context(w)),其一般形式如下:

其中:

或合并为下面整体表达式:

将上面公式带入目标函数L得:

接下来对L求极大值,需要对L中的变量(xw和θ_(j-1)^w)进行求解梯度,为方便梯度推导令:

首先计算L(w,j)关于θ(j-1)w的梯度:

其中η为更新速率。

同样的,L(w,j)关于x_^w的梯度为:

因此,xw的更新公式为:

算法迭代结束后的p(w/context(w))即为语言模型的参数,同时其副产品(w)即为我们的想要的词向量。

3.3 基于Negatie Samping框架的网络结构解析

本节将介绍基于Negatie Sampling(NEG)的CBOW模型,Negatie Sampling的原理不做过多介绍,NEG的目的是用来提高模型训练速度并且改善词向量的质量。与Herarchical SoftMax相比,NEG不再使用复杂的哈夫曼树,而是使用相对简单的随机负采样,能大幅提高性能。

对于词w和上下文Context(w),因为需要预测w,因此词w就是一个正样本,其他词就是负样本,设为NEG(w)。对词典中的每个w ,定义:

表示w的标签,即正样本标签为1,负样本标签为0,对比HS模型中的非叶子节点的分类。

对于给定的词w和上下文Context(w),我们的目的是最大化下式:

其中:

或者整体表达为:

对于一个给定的语料库C,模型的目标函数为:

为了方便计算,对其取对数操作,即为L

对θu进行求导得:

类似的对xw进行求导得:

因此,θu 和xw的更新公式为:

4. Skip-gram模型

4.1 模型结构

模型同样包含三层,输入层,映射层和输出层。该网络的含义是已知词w(t)的前提下预测词w(t)的上下文w(t-2),w(t-1),w(t+1),w(t+2),条件概率写为:p(context(w)/w)。

目标函数为:

4.2 基于Hierarchical Softmax框架的网络结构解析

基于Hierarchical Softmax框架的Skip-gram模型同样将输出层利用一棵Huffman Tree进行表示,该Huffman Tree使用语料中的所有词根据词频进行构建,树中每个叶子节点代表一个单词,同时利用节点的层级关系,将从根节点到context(t)中每个单词所在叶子节点的路径中每个节点当做一次二分类(基于Logistic Regression算法),将所有路径产生的概率作为p(w/ context(w))。

1)输入层:包含1个词向量(w),词向量的维度为m。

2)投影层:与输入层相同

3)输出层:输出层对应一棵二叉树,它是以语料中快出现过词作为节点,以各词在语料中出现的次数当权值构造出来的Huffman树。这个Huffman树中,叶子节点功N个,分别对应词典中的词,非叶子节点N-1个(上图中黄色结点)。

在skip-gram模型中p(w/ context(w))的定义为:

其中:

又有:

将上面公式带入目标函数

得:

下面使用梯度上升对L进行优化,分别对公式中的变量求偏导数:

因此,θ(j-1)u的更新公式为:

(w)的更新公式为:

4.3 基于Negatie Samping框架的网络结构解析

本节将介绍基于Negatie Sampling(NEG)的Skip-gram模型。类似于基于基于NEG的CBOW模型,基于Negatie Sampling(NEG)的Skip-gram模型的优化目标函数为:

其中:

NEG(u)表示处理词u时生成的负样本子集,条件概率

写成完整的表达式

为了简化运算,最终目标函数取对数形式:

下面对公式中的变量求偏导,进而得出变量的更新公式,具体推导过程参考之前的方法,这里不再赘述。

5. 相关应用与拓展

5.1 Word2ec的应用

1) 近义词/相似文本发现

利用语义相近的词具有相近的词向量的特性进行同义词发现,可以利用word2ec进行同义词发现,这个特定可以应用在搜索引擎的查询扩展等问题中。类似的还可以利用word2ec进行相似文本的发现,最简单的做法就是将一段文本中所有词的词向量相加,作为表征该段文本的向量,然后通过计算向量间的距离查找相似文本。

下图为使用PCA将词向量进行降维后的效果展示:

2) 作为其他任务的特征

Word2ec还可以作为一种中间值,为其他任务提供特征,比如在文本分类中可以在词袋模型的基础上引入word2ec作为特征,进行分类模型的构建,以提升分类效果。

3) 词向量在深度学习类问题中的应用

Word2ec最广泛的应用还是在深度学习的相关应用中作为特征输入。

例如下图是利用CNN)(卷积神经网络) 进行文本分类的网络结构图,word2ec的作用是作为自然语言中单词的表示特征输入CNN进行运算。

同样的,在分词、实体抽取、机器对话、神经网络机器翻译(NMT)等任务中广泛应用的Seq2Seq模型中也有word2ec的应用,类似的词向量也是作为词的特征的进行输入。

类似的应用还有生成自动图像描述等,模型网络结构如下图:

5.2 其他知识表示

归根到底,word2ec是一种对单词知识的表示方法,word2ec之后出现了大量知识表示方法的研究,例如“段向量”(paragraph ector),提出者将段信息作为一个特殊的词,参与模型的训练,模型结构基本与word2ec相同,具体如下图所示:

图 基于CBOW模型的段向量生成网络结构

图 基于Skip-gram模型的段向量生成网络结构类似的知识表示还有graph2ec、thought2ec等等。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180701A0XKND00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券