学习词向量from Sebastian Ruder

参考
http://ruder.io/word-embeddings-1/

无监督学习得到的词向量在NLP任务中取得巨大成功。而且近两年ACL和EMNLP会议上有关词向量的文章特别多,甚至有人调侃Embedding Methods in Natural Language Processing更适合EMNLP。

简单来说,词向量是单词在低维空间的稠密表示。主要讲神经词向量,即词向量是由神经网络学到的。

Bengio在2003年通过神经网络训练语言模型,得到了词向量这个副产品;
Collobert and Weston在2008年声明了词向量对下游任务是个有用的工具;
Mikolov在2013年提出了word2vec;
Pennington在2014年提出了Glove。

词向量是无监督学习的一个成功应用,无需昂贵的标记数据,从大量未标记的语料中进行学习得到。预训练好的词向量可以用于拥有小量标记数据的下游任务。

用非常深的架构产生词向量是计算量昂贵的。Mikolov提出的word2vec可以引起巨大影响,是因为大大减小了词向量的计算代价。

词向量模型和语言模型是紧密联系的。词向量模型的评估使用perplexity,是从语言模型借鉴来的。

语言模型:给定前面的词,预测下一个词。在这里插入图片描述
通过链式法则和马尔可夫假设,我们可以近似得到一个句子的概率:
在这里插入图片描述
在语言模型中,我们是通过频率来获得概率的:
在这里插入图片描述
而在神经网络中,我们使用softmax层来获得:
在这里插入图片描述

经典神经语言模型from Bengio 2003
使用前馈神经网络:
在这里插入图片描述
在这里插入图片描述
优化目标是:
在这里插入图片描述
其中:
在这里插入图片描述

在这里插入图片描述

模型的三个主要部分:

  1. Embedding Layer: 将单词映射到低维空间的稠密向量表示
  2. Intermediate Layer: 通过一层或多层产生输入的中间表示
  3. Softmax Layer: 产生在词汇表V上的概率分布
    其中第三点是网络的主要瓶颈,和词汇表的大小密切相关。因此缓解这一部分的计算代价是关键挑战之一。

C&W模型
Bengio提出这个方法后,由于在大量的词汇表上进行训练计算代价太大,词向量的研究停滞不前。
Collobert and Weston在2008年提出在大量数据集上训练的词向量会携带句法和语义信息,可以提高下游任务的性能。
为了避免softmax层昂贵的计算代价,他们使用了不同的目标函数,不同于Bengio使用的交叉熵损失函数,他们使用了pairwise ranking criterion,输出的是对窗口的打分。
在这里插入图片描述
对于每一个窗口,将中间单词替换为词汇表里的其他单词,即构造了假样本。通过最小化上面的目标函数,使得正确窗口的打分至少比假样本的打分高1分。

Word2vec
Word2vec并不属于深度学习,因为它的结构既不深也没有采用非线性变换。
Word2vec相比Bengio语言模型和C&W模型的两大优点:

  1. word2vec移除了hidden layer
  2. 使得语言模型考虑了其他的上下文

当然,word2vec的成功不仅是上面的改变,还尤其是训练技巧。
CBOW:continuous bag-of-words
word2vec的目的是生成准确的词向量,因此Mikolov采用了用前后各n个单词来预测中间的单词。没有考虑单词的顺序。
在这里插入图片描述
Skip-gram
不同于CBOW,SG使用中间词来预测周围的词。
在这里插入图片描述

word embeddings VS distributional semantics models
DSM通过操作共现矩阵统计单词的共现信息,神经词向量模型是尝试着预测周围单词。
Levy et al (2015)将Glove被视为预测模型,同时它也利用了共现矩阵信息,有点像传统的方法,如PCA, LSA. Levy et al还演示了 word2vec 隐式地分解了 word-contxt PMI matrix.
表面上看上去,DSM和word embedding models使用了不同的算法,本质上,两者都是基于数据统计量的,即单词间的共现次数。

猜你喜欢

转载自blog.csdn.net/YQMind/article/details/83018081