欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

词向量word2vec,词向量 文本分类

终极管理员 知识笔记 44阅读

文章目录 一、词向量基础知识1.1 One-hot表示1.2 Distributed表示 二、word2vec基础知识2.1 CBOW和Skip-gram 三、基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型3.1 CBOW 模型3.2 Skip-gram 模型 参考资料
由于计算机不能直接对各种字符进行运算为此需要将词的表示进行一些转换。因此在自然语言处理中通常需要对输入的语料进行一些预处理

其中如何对词汇进行表示是很关键的问题糟糕的表示方法容易导致所谓的 “Garbage in, garbage out”。

一、词向量基础知识

对词汇的表示常见的有One-hot representionDistributed Representation 两种形式。

1.1 One-hot表示

One-hot represention 将词汇用二进制向量表示这个向量表示的词汇仅仅在词汇表中的索引位置处为1其他地方都为0。例子如下图所示

这样的方式表示词汇虽然简单但是也有如下缺点

单词的上下文丢失了。没有考虑频率信息。词汇量大的情况下向量维度高且稀疏占用内存。 1.2 Distributed表示

Distributed Representation 也可以理解为Word Embedding具体形式为

注意到使用Word Embedding得到的向量维度远小于词汇表的个数。如果将上面的向量在空间中表示可以得到

上图告诉我们通过词向量之间的距离可以度量他们之间的关系意思相近的词在空间中的距离比较近。出现这种现象的原因是最后得到的词向量在训练过程中学习到了词的上下文。

那么Distributed Representation 要如何得到

使用神经网络语言模型可以得到使用word2vec。 二、word2vec基础知识

word2vec是google在2013年推出的一个NLP工具它的特点是将所有的词向量化这样词与词之间就可以定量的去度量他们之间的关系挖掘词之间的联系。在正式讲解 word2vec 前还需要对一些基本概念有所了解。

2.1 CBOW和Skip-gram

CBOW模型Continuous Bag-of-Words Model和Skip-gram模型Continuous Skip-gram Model。如下图所示

由图可见两个模型都包含三层输入层、投影层和输出层。区别在于

CBOW模型 在已知上下文 w t − 2 , w t − 1 , w t 1 w t 2 w_{t-2}, w_{t-1}, w_{t1} w_{t2} wt−2​,wt−1​,wt1​wt2​的前提下预测当前词 w t w_t wt​Skip-gram模型 在已知当前词 w t w_t wt​的前提下预测上下文 w t − 2 , w t − 1 , w t 1 w t 2 w_{t-2}, w_{t-1}, w_{t1} w_{t2} wt−2​,wt−1​,wt1​wt2​ 三、基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型 3.1 CBOW 模型

CBOW 模型是 在已知上下文 w t − 2 , w t − 1 , w t 1 w t 2 w_{t-2}, w_{t-1}, w_{t1} w_{t2} wt−2​,wt−1​,wt1​wt2​的前提下预测当前词 w t w_t wt​ 。后面我们用 c o n t e x t ( w ) context(w) context(w)来表示词 w w w的上下文中的词通常我们取词 w w w前后 2 2 2c个单词来组成 c o n t e x t ( w ) context(w) context(w)。下图给出了CBOW模型的网络结构

它包括三层输入层、投影层、输出层。

输入层包含 c o n t e x t ( w ) context(w) context(w)中的 2 c 2c 2c个词向量 v ( c o n t e x t ( w ) 1 ) , v ( c o n t e x t ( w ) 2 ) , … , v ( c o n t e x t ( w ) 2 c ) ∈ R m \mathbf v(context(w)_1),\mathbf v(context(w)_2),\ldots,\mathbf v(context(w)_{2c}) \in \mathbf R^m v(context(w)1​),v(context(w)2​),…,v(context(w)2c​)∈Rm
每个词向量的长度是 m m m。投影层将输入层的 2 c 2c 2c个词向量累加求和即 x w ∑ i 1 2 c v ( c o n t e x t ( w ) i ) \mathbf x_w \sum_{i1}^{2c}\mathbf v(context(w)_i) xw​∑i12c​v(context(w)i​)。输出层输出层是用哈夫曼算法以各词在语料中出现的次数作为权值生成的一颗二叉树其叶子结点是语料库中的所有词叶子个数 N ∣ D ∣ N|D| N∣D∣分别对应词典D中的词。

神经网络语言模型(NNLM)中大部分计算集中在隐藏层和输出层之间的矩阵向量运算以及输出层上的softmax归一化运算CBOW模型对此进行了改进。与传统的神经网络语言模型相比

NNLM是简单的将输入的向量进行拼接而CBOW模型将上下文的词累加求和作为输入NNLM是线性结构而CBOW是树形结构NNLM具有隐藏层而CBOW没有隐藏层 3.2 Skip-gram 模型

Skip-gram 模型的结构也是三层下面以样本 ( w , c o n t e x t ( w ) (w,context(w) (w,context(w)为例说明。如下图所示

它也包括三层输入层、投影层、输出层。

输入层只包含当前样本中心词 w w w词向量 v ( w ) ∈ R m \mathbf v(w) \in \mathbf R^m v(w)∈Rm每个词向量的长度是 m m m。投影层恒等投影即和输入层一样保留是为了与CBOW对比。输出层与CBOW类似

对于Skip-gram模型已知的是当前词 w w w需要对其上下文 c o n t e x t ( w ) context(w) context(w)中的词进行预测所以

类似于CBOW所以

其中

所以我们的优化目标是

采用随机梯度上升法将这个函数最大化。

参考资料 【AI理论学习】理解词向量、CBOW与Skip-Gram模型

标签:
声明:无特别说明,转载请标明本文来源!