从头开始恶补NLP基础知识——Word2Vec学习
前言
保研后一直处于比较慵懒的状态,每天都是佛系地看看书写写代码,再搞搞毕设,但是却一直在逃避读论文。为了以后不只是一个调参侠工具人,今后争取每周抽时间读一到两篇论文并记录下来,就先从这篇W2V的开山之作开始吧,也算是经典中的经典了。
Introduction
这篇论文发表于2013年,算是NLP的经典之作,它提出了两种用于非常大数据集中计算连续向量表示的方法。这也是Word2Vec的雏形,同时奠定了Embedding的时代,可以说是之后各种*2Vec的基础。
在该论文前,绝大多数NLP技术都将单词视为一个原子单元,即它仅仅是单词表的一个索引。这种做法有很大的局限性,并不能反应一个单词所具有的实际语义。同时,随着机器学习的发展,在更大数据集上训练复杂的模型成为了可能。文章旨在解决两个问题,即构建一个新的模型来最大限度地提高单词向量运算的准确性,以及讨论训练时间和准确性与单词向量的维度和训练数据量的关系。
Model Architectures
文章主要介绍了两种传统的神经网络算法来训练词向量的办法。分别为Feedforward Neural Net Language Model (NNLM)和Recurrent Neural Net Language Model (RNNLM)。与此同时,文章将模型的计算复杂度定义为完成训练模型所需的参数数量,文章的目标也就是最大化模型准确度的同时最小化模型的计算复杂度。
NNLM包含输入层,映射层,隐藏层和输出层。其中映射层到隐藏间采用全连接,因此往往会产生很大的计算开销。RNNLM没有映射层,只有输入层,隐藏层和输出层。
最后,文章还实现了并行训练神经网络的方法,其利用一种称作Adagrad的自适应学习率程序来实现mini-batch异步梯度下降法。
New Log-linear Models
文章在这一部分提出了两种学习单词分布式表达的新方式,新的架构认为神经网络语言模型可以通过两个步骤进行训练。首先,使用简单的模型学习连续的单词向量,接着使用N-gram NNLM在这些单词的分布式表示上进行训练。
Continuous Bag-of-Words Model
CBOW结构与NNLM类似,它移除了非线性的隐藏层,并且投影层可以被所有单词共享,即所有的词通过向量平均化的方法映射到相同的位置。CBOW的输入和输出结构可以见下图,它利用未来和过去的各四个单词的log-linear分类器作为输入,来预测当前单词。
Continuous Skip-gram Model
第二种结构与CBOW类似,不同于CBOW利用上下文来预测当前单词的做法,它尝试利用同一个句子的另一个单词来最大化单词的分类性能。其输入为有着连续投影层的当前单词作为log-linear分类,输出为当前单词前后的单词预测。其结构如下,可以看出其与CBOW使用了相反的策略。
文章发现增大预测单词的范围会提高生成词向量的质量,但是会增大计算的复杂度。
Results
为了比较不同模型生成的词向量的质量,文章讨论了“相似”的含义,并认为,为了寻找一个单词X,其相对于samll就像biggest相对于big一样,我们可以通过计算向量X = vector(“biggest”) - vector(“big”) + vector(“small”),接着找出与X最接近的单词即可。文章经过实验发现,经过大量数据训练的高维度向量表示可以很好地回答这一相似性的问题。
Task Description
为了衡量单词向量的质量,文章定义了包含五种类别的语义问题和九种类别的句法问题。对于每个类别中的问题,首先创建相似单词对的列表,然后连接两个单词对形成大量问题,并利用这些问题评估其准确性,当仅当与使用上述方法计算出的向量最接近的词与问题中的正确词完全相同时,才认为评价正确。
Maximization of Accuracy
文章选用了Google News corpus作为词向量的训练集。为了评估模型架构的最佳选择,文章首先在较小的数据集上进行训练,并限制词汇量为30000.同时,经过实验,增大一定程度的训练数据量以及单词向量的维度对于词向量的质量有较大的提升
Comparison of Model Architectures
文章比较了几种算法在不同问题上的性能,如下图所示。可以看出CBOW和Skip-gram相比传统算法都有较大优势,而CBOW在句法问题上优势明显,但在语义问题上效果很一般。同时,文章还发现使用一个epoch在两倍的数据集上训练的效果比使用三个epoch在一倍的数据集上训练效果更佳。
Large Scale Parallel Training of Models
文章利用Adagrad这种自适应学习率程序来实现mini-batch异步梯度下降法实现了模型的大规模并行训练,实验中也体现出了较好的时间性能。
Microsoft Research Sentence Completion Challenge
文章同样介绍了微软研究语句完成挑战。这是一项类似于负采样的任务,每个句子缺少一个单词,目标是在给出五个合理选择的列表的情况下,选出与该句子其余部分最相关的词语。经过测试,Skip-gram + RNNLMs的组合架构取得了最好的性能。
Examples of the Learned Relationships
这里介绍了模型在训练后学习到的词语之间各种各样的关系,它们通常是利用向量的相加相减来表示关系的,例如Parise - France + Italy = Rome等等,这个关系提取的准确率在一定程度上会随着训练数据量和向量维度的增大而有所提升。
当然,还可以用词向量解决其他任务,如通过计算单词列表的平均向量来找到最远的单词向量等。
Conclusion
本文研究了在语法和语义语言任务集合上由各模型得出的单词向量表示的质量,文章提出的CBOW和Skip Gram可以用更小的时间开销训练出更高质量的单词向量。
研究表明,单词向量可以成功地应用于知识库中对于事实的只是扩展。对于情感分析,复述检测,机器翻译等领域也有着很大的帮助。高质量的词向量已经开始深刻影响着NLP领域。