- 创新:
传统的学习密集向量的模型的计算效率都比较低
提出了两种新的模型体系结构来计算从非常大的数据集的词的连续向量表示,
提出了新的“神经网络语言模型”,这里之所以打引号,是因为其实两个模型都没有隐藏层,只是看起来像是神经网络而已
- 简介:
许多当前的NLP系统和技术将单词视为原子单位——单词之间没有相似性的概念,因为它们在词汇表中被表示为索引。一个例子是用于统计语言建模的流行的N-gram模型——今天,可以在几乎所有可用的数据(万亿词[3])上训练N-gram。
然而,简单的技术在许多任务中都有其局限性,数据集问题。
- 目标:
从包含数十亿个单词和数百万个单词的庞大数据集学习高质量的单词向量.
使用最近提出的技术来测量得到的向量表示的质量,期望不仅相似的单词趋于彼此接近,而且单词可以有多个相似度.
使用单词偏移技术,对单词向量进行简单的代数运算,例如,向量(“国王”)-向量(“男人”)+向量(“女人”)得到的向量与单词queen[20]的向量表示最接近。
- 模型架构:
在本文中,我们重点研究神经网络学习的单词的分布式表示,因为之前的研究表明,神经网络在保持单词之间的线性规律方面明显优于LSA此外,LDA在大型数据集上的计算成本非常高。
所有模型使用随机梯度下降和反向传播训练。
在我们的模型中,我们使用分层的softmax。其中词汇表被表示为霍夫曼二叉树。霍夫曼树为频繁的单词分配短二进制代码,这进一步减少了需要评估的输出单位的数量
- 全新模型
我们提出了两个新的模型体系结构来学习单词的分布式表示,以尽量减少计算复杂度。
CBOW体系结构根据上下文预测当前的单词,而Skip-gram则根据当前单词预测周围的单词。
1. CBOW:
Wi-2,Wi-1,Wi+2,Wi+1,是要预测的中心词的四个周围词,将四个周围词的one-hot编码的向量(1xV)与周围词向量矩阵W(VxD)做乘积,得到四个1xD的向量,分别是四个周围词的词向量,将这四个词向量求和或者求平均,得到一个1xD的向量,再和所有的中心词向量矩阵W*(DxV)做乘积,得到1xV的向量,将此向量经过softmax函数,得到V个词的概率,然后根据词Wi的索引,找到对应词的概率,进行梯度下降等方式令该词概率成为该向量的最大值。
- SKIP-GRAM:
wi为中间词,经过one-hot编码成1xV的行向量(V为所有词的总数),再与V x D的中心词向量矩阵相乘,得到1xD的向量,就是中心词的词向量,再与DxV的周围词向量矩阵相乘,得到一个1xV的向量,将此向量经过softmax激活函数,得到V个词出现的概率值,然后,根据索引找到Wi-1的词对应的概率值,经过梯度下降等方法进行训练使概率其成为最大。(一般我们训练的是W:中心词向量矩阵)