NLP十大Baseline论文简述(一) - Word2vec

前言:

如果需要对基础概念不了解,可以参考这里。我汇总了论文中涉及的大部分概念,以便更好的理解论文。

目录

NLP十大Baseline论文简述(一) - Word2vec

NLP十大Baseline论文简述(二) - GloVe

NLP十大Baseline论文简述(三) - C2W

NLP十大Baseline论文简述(四) -textcnn

NLP十大Baseline论文简述(五) - chartextcnn

NLP十大Baseline论文简述(六) -fasttext

NLP十大Baseline论文简述(七) - deep_nmt

NLP十大Baseline论文简述(八) - attention_nmt

NLP十大Baseline论文简述(九) - han_attention

NLP十大Baseline论文简述(十) - sgm

1. Paper:

Efficient Estimation of Word Representations in Vector Space 向量空间中词表示的有效估计
Distributed representations ofwords and phrases and their compositionality单词和短语的分布式表示及其组成

Word2vec是Google的Mikolov等人提出来的一种文本分布式表示的方法,这种方法是对神经网络语言模型的“瘦身”, 巧妙地运用层次softmax(hierarchical softmax )和负采样(Negative sampling )两种技巧,使得原本参数繁多、计算量巨大的神经网络语言模型变得容易计算。

2.论文摘要:

We propose two novel model architectures for computing continuous vector repre-sentations of words from very large data sets. 我们提出了两种新的模型体系结构来计算从非常大的数据集的词的连续向量表示。
The quality of these representationsis measured in a word similarity task, and the results are compared to the previ-ously best performing techniques based on different types of neural networks. 在一个词相似度任务中测量了这些表征的质量,并将结果与以往基于不同类型神经网络的最佳表现技术进行了比较。
Weobserve large improvements in accuracy at much lower computational cost, i.e. ittakes less than a day to learn high quality word vectors from a 1.6 billion wordsdata set. 我们观察到,在计算成本更低的情况下,准确率有了很大的提高,也就是说,从16亿个单词数据集中学习高质量的单词向量只需不到一天的时间。
Furthermore, we show that these vectors provide state-of-the-art perfor-mance on our test set for measuring syntactic and semantic word similarities.此外,我们还表明,这些向量在度量语法和语义词相似度的测试集上提供了最先进的性能。

3. 论文介绍:

1)传统NLP把词当成最小单元处理,并且能够在大语料上得到很好的结果,其中一个例子是N-grams模型
2)然而很多自然语言处理任务只能提供很小的语料,如语音识别,机器翻译,所以简单的扩大数据规模来提升简单模型的表现在这些任务不再适用,所以必须寻找更加先进的模型。
3) 分布式表示可以在大语料上训练得到很好的语言模型,并且能超过N-Grams模型, 这是一个很好的可以作为改进的技术。

4. 论文原理

首先语言模型的基本思想:句子中下一个词的出现和前面的词是有关系的,所以可以使用前面的词预测下一个词。
Word2vec的基本思想:句子中相近的词之间是有联系的,比如今天后面经常出现上午,下午和晚上。所以Word2vec就是用词来预测词,skip-gram使用中心词预测周围词,cbow使用周围词预测中心词

其实在word2vec出现之前,已经有用神经网络DNN来用训练词向量进而处理词与词之间的关系了。采用的方法一般是一个三层的神经网络结构(当然也可以多层),分为输入层,隐藏层和输出层(softmax层)。这个模型是如何定义数据的输入和输出呢?一般分为CBOW(Continuous Bag-of-Words )与Skip-Gram两种模型。

4.1 CBOW模型:

cbow使用周围词预测中心词,即输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这特定的一个词的词向量。
在这里插入图片描述
根据图片例子:我们的输入是4个词向量,输出是所有词的softmax概率(训练的目标是期望训练样本特定词对应的softmax概率最大),对应的CBOW神经网络模型输入层有4个神经元,输出层有词汇表大小个神经元。隐藏层的神经元个数我们可以自己指定。通过DNN的反向传播算法,我们可以求出DNN模型的参数,同时得到所有的词对应的词向量。这样当我们有新的需求,要求出某8个词对应的最可能的输出中心词时,我们可以通过一次DNN前向传播算法并通过softmax激活函数找到概率最大的词对应的神经元即可。

4.2 Skip-gram模型:

skip-gram使用中心词预测周围词, 用‘下午’来预测其余的词。即输入是特定的一个词的词向量,而输出是特定词对应的上下文词向量。

在这里插入图片描述
具体过程: 即输入特定词 W i W_i Wi‘下午’, 输出时softmax概率前4的4个词,对应的Skip-Gram神经网络模型输入层有1个神经元,输出层有词汇表大小个神经元。隐藏层的神经元个数我们可以自己指定。通过DNN的反向传播算法,我们可以求出DNN模型的参数,同时得到所有的词对应的词向量。这样当我们有新的需求,要求出某1个词对应的最可能的8个上下文词时,我们可以通过一次DNN前向传播算法得到概率大小排前8的softmax概率对应的神经元所对应的词即可。

4.3 降低复杂度 - Hierachical Softmax (层次Softmax) “五星重点”

层次化softmax是为了解决用softmax进行V分类时(V是词典大小),由于词典巨大导致计算目标词的似然概率的低效问题。

层次化softmax改变了原来的模型结构。原来是1V(输入one-hot),经过VD的矩阵(input-embedding) ,再经过DV矩阵(output-embedding),即一系列矩阵乘法(1,V)(V,D)*(D,V)=(1,V)【其中的第一次乘法,一般用查表的方式直接读取,不用相乘】,再softmax,得到目标词是词典中每个词的概率。使用层次化softmax时,output-embedding被取消了,查表后直接用(1,D)的向量与每个中间路径节点对应的一个向量γn【形状为(D,1)】,进行相乘,得到一个scalar,再经过sigmoid,转为一个0到1之间的小数,此数从就是从树(树是二叉树,树的每个叶子节点都对应一个单词)的根节点到某个叶子节点的路径上每次在中间节点选择向左(也可定为向右)走的概率。

层次化softmax的目标函数就是最大化目标词的路径概率,换句话说,我们只需要关注目标词的路径概率即可,而目标词是已知的,完全不需要计算其他的词的路径概率。这点是后续优化措施的关键。

那层次化softmax的优点体现在哪里?体现在计算预测输出值为每个单词的概率时,由于概率是从根节点到叶子节点的路径上的边进行连乘,也就是计算量与目标词(叶子节点)的路径长度成正比,原来的softmax的目标函数在反向传播时需要求导,而求导时,由于分母是e的指数的累加和,导致必须算出所有单词的概率,计算量是与词表大小V成正比。【目标函数为交叉熵,loss=-ΣYilogPi, 其中i代表某个类别,而只有目标词的Yi为1,其余词的Yi为0,因此loss=-logP(target)。而Pi=softmax(w1w2),w1,w2分别是input-embedding、output-embedding矩阵中的参数, 先求对w2的梯度:d(loss) /d(w2)=-1/P(target)* d(P(target))/d(w2),可见梯度中包括P(target)的计算,因此必须包含V个e的指数计算。】

而层次化softmax的树是二叉树,路径长度也就是树的高度,假设是满二叉树,则树高=V取2为底的对数值,远远小于V,节省了很多计算过程。比如一个大小为1024的词典,原来softmax是1024个e的指数计算,现在是log1024=10次sigmoid值再连乘,共节省了1024-10=1014次计算。

是否还可以进一步优化?可以。以上表述中层次化的softmax用到的树,一般认为是满的二叉树,也就是树的高度为logV,其实还有优化的空间。因为目标词的概率仅与根节点到目标词的路径长度有关,如果我们能够优化根节点到目标词的路径长度,就可以进一步节省计算。什么二叉树的根节点到叶子节点的路径长度最短?答案是哈夫曼树。

因此可以把树做成哈夫曼树。mikolov的论文就是采用了哈夫曼树,且构建哈夫曼树时,比较节点的权重大小是依据该节点(也就是单词)的词频,词频大的放在离根节点近的地方,词频小的远离根节点。如此词频大的词只需要很少的比较次数,路径就结束了,计算次数比较少。

由于是根据词频来构建哈夫曼树,所以一开始这课树的结构就是已经确定的,每个叶子节点对应的单词也是已知的,换言之根节点到目标节点的路径包括中间节点、向左还是向右也是已知的,每个中间节点对应的向量的形状已经定好了,并不是真的需要每次都要判断向左走还是向右走。后续优化时只需要更新中间节点对应的向量、词向量即可。

应用Hierarchical Softmax就是把 N 分类问题变成 log(N)次二分类。

4.4 降低复杂度 - Negative Sampling (负采样) “五星重点”

舍弃多分类,提升速度。

4.5 降低复杂度 - Subsampling of Frequent Words (多重采样)“五星重点”

自然语言处理共识:文档或者数据集中出现频率高的词往往携带信息较少,比如the, is, a, and 而出现频率低的词往往携带信息多。

为什么用重采样:

  1. 想要更多的训练重要的词对,比如训练‘France’与‘Paris’之间的关系比训练‘France’和‘the’之间的关系要有用
  2. 高频词很快就训练好了,而低频词需要更多的轮次

方法:
P ( w i ) = 1 − t / f ( w i ) P(w_i)=1-\sqrt{t/f(w_i)} P(wi)=1t/f(wi)
其中 f ( w i ) f(w_i) f(wi)为词 w i w_i wi在数据集中出现的频率。文中t选取为 1 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值