1 背景
在Mikolov 2013年提出word2vec之后,它所带来的性能提升,让word embedding迅速火起来。近年深度学习在自然语言处理中应用时,词向量已经是其中的一个标准工具。
在自然语言模型中,词语的一种简单表示是one-hot representation。它用一个很长的向量来表示一个词语,向量长度为字典大小|V|,向量只有一个分量为1,其它全为0。为1的这个分量对应了这个词语在词典中索引位置。这种表示方法有诸多缺点,首先是维度太高,不利于计算;这是一种稀疏表示,存在大量的0;另外,这种表示方式无法体现出近义词、反义词的语义信息。
Distributed representation则能很好的克服one-hot representation的上述缺点。Distributed representation最早由Hinton在1986年提出。它将词语从高维稀疏空间映射到低维稠密的空间。每个词语都用一个向量表示,而两个词语之间的相似度可以通过向量之间的距离来判断。Wor2vec就是采用了这种思想。事实上,在拓扑学中,有一种将高维流形映射到低维稠密空间的概念(流行可以简单理解为一张折起来的纸张,它是三维的,但是展开来却可以用二维空间表示),在术语上叫做embedding。
实际上有许多方法可以获取词语的低维向量表示,例如LSI、LDA、非负矩阵分解。最近常用的是word2vec、glove。
2 Word2vec模型
Word2vec[1]可以分为CBOW和skip-gram两种模型。这两种模型都包含三层:输入层、投影层、输出层。
2.1 CBOW模型与skip-gram模型
CBOW模型
CBOW模型的目标是使用Context中的词语来预测当前词语,映射层的输入为:
例如给定一个句子,”the quick brown fox jump over the lazy dog”,如果滑动窗口为1,那么映射关系是[the brown]->quick,[quick fox]->brown等。
输出层可能是一个Hierarchical Softmax,预测当前词语是字典中的哪个词语;而如果采用negative sampling,则是通过预测预测w’作为当前词语的概率,负样本概率为0,正样本概率为1。
Skip-gram模型
Skip-gram模型利用当前词语来预测context中的词语。
模型假设了,context中的各个词语出现概率相互独立,因此,可以看做预测目标是p(u|w)。例子”the quick brown fox jump over the lazy dog”中,如果滑动窗口为1,那么映射关系是quick->the, quick->brown等。
2.2 Hierarchical softmax与negative sampling
如果单纯使用softmax,那么输出就有|V|个类别,计算导数的复杂度正比于词典大小。因此word2vec提出采用Hierarchical softmax或者negative sampling来减少运算量。
Hierarchical softmax使用一个Huffman树来编码所有的词语。在每个节点进行一个sigmoid函数运算来决定选择下一个节点是左子节点还是右子节点,直到选出叶子节点,从而得到预测的词语。
这里{$latex \sigma}是sigmoid函数,,j当前节点在树中的层。
而negative sampling采用的目标函数则是,
其中wi是负样本。目标函数最大化产生当前词语Wo的概率,而最小化负样本wi的概率。负样本采样的概率函数使用的是一个
Word2vec采用对高频词进行降采样的技巧。对于频率大于t的词语,以概率
来舍弃。
另外,负采样还使用了alpha=3/4的幂函数。
Word2vec有十分有趣的性质,一个是word similarity,两个意思相近的词语可以通过向量的cosine similarity来衡量;另外一个是word analogies,它回答了问题,”a is to b as c to ?”。例如:”Paris is to France as Tokyo is to ?”,可以通过词向量的运算w(France)-w(Paris)+w(Tokyo)得到。这两个任务也是后来用于评价词向量好坏的通用指标。
3 Word2vec模型与互信息矩阵分解的等价性
Levy在ACL 2015[2]的文章指出采用shifted positive PMI矩阵的SVD分解可以取得比skip-gram with negative-sampling 的word2vec更好的效果。
首先PMI公式为:
词语与context词语之间的PMI经验估计:
对PMI进行shift
SPPMI构成一个矩阵,矩阵上(w,c)位置的数值定义为上式。对SPPMI矩阵进行SVD分解,而词向量定义为:
实验表明,矩阵分解取得了比word2vec更好的效果。
4 Glove模型
EMNLP 2014上的Glove模型[3]提出直接通过对log PMI矩阵进行SVD分解来得到词向量。这样可以避免多次扫描语料中的context windows。目标函数为:
其中,wi与wj分别是词向量与context向量。Xij表示单词i与单词j出现同一个context窗口中的次数。
5 Sentence/Paragraph vector
文档向量[4]的训练实际上是在word2vec中CBOW模型的基础上加入一个向量,与Context单词的向量一起作为特征,来预测当前词语。可以把文档向量看成另外一个单词,它包含了一些当前context所丢失的信息,或者把它看成整个文档的信息。文章中将这个Paragraph vector模型叫做PV-DM。
另外,有一个版本的PV-DBOW的文档向量模型,与word2vec中的skip-gram模型十分相似。使用一个文档向量来预测文档中的单词。但是效果要比PV-DM差。
6 总结与思考
为什么word embedding可以在诸多任务中取得优秀的效果呢?首先它利用了大规模语料来训练词语的向量表示,这可以看成是一种迁移学习。另外,word embedding的学习过程中,实际上采用的是一种半监督的方式,它的学习目标是预测context中的词语或者利用context中的词语预测当前词语,这个优化目标实际上与任务本身(如情感分类等)并不是直接相关的。如果把数据比作一个蛋糕,那么任务本身的标签信息可以看做蛋糕的表层,而这种context的关系可以看做蛋糕本身的一大块。因此这种训练方式带来的效果就是不止利用了标签的信息来指导训练过程,还使用了context信息来训练词向量。
参考文献
[1]Mikolov, Tomas, et al. “Distributed representations of words and phrases and their compositionality.” Advances in neural information processing systems. 2013.
[2]Levy, Omer, Yoav Goldberg, and Ido Dagan. “Improving distributional similarity with lessons learned from word embeddings.” Transactions of the Association for Computational Linguistics 3 (2015): 211-225.
[3]Pennington, Jeffrey, Richard Socher, and Christopher D. Manning. “Glove: Global Vectors for Word Representation.” EMNLP. Vol. 14. 2014.
[4]Le, Quoc, and Tomas Mikolov. “Distributed representations of sentences and documents.” Proceedings of the 31st International Conference on Machine Learning (ICML-14). 2014.
793 评论