您的位置:首页 > 其它

[NLP论文阅读] Word Embedding based on Fixed-Size Ordinally Forgetting Encoding

2017-10-16 18:25 555 查看
论文原文:Word Embeddings based on Fixed-Size Ordinally Forgetting Encoding

引言

EMNLP刚刚结束,在浏览accepted paper后,选择了几篇作为近期的论文阅读。之前一直看的都是句子建模的文章,这次换了换口味,看看词向量建模的最近工作。通读全文下来,这是一篇组合了前人的方法利用单词的上下文(context)来学习词向量的文章,并且意外发现了Fixed-Size Ordinally Forgetting encoding(FOFE)这个序列建模方法。

FOFE based Embedding

作者是基于distributional hypothesis进行一系列设计的。首先,为了能够完整体现distributional hypothesis,作者对目标词的上下文(文章中称为focus word的left context和right context)进行了完全的编码。其次作者认为,距离目标词越近的单词在编码目标词的上下文时越重要。

在本文中,作者直接将Fixed-size ordinally-forgetting encoding(FOFE)方法作为唯一编码方法对所有由离散单词组成的不定长序列进行编码。

FOFE

给定词表大小(vocabulary size)为K,FOFE使用one-hot编码来表示,每一个单词,即一个K维向量来表示单词。FOFE使用下列公式对不定长序列进行编码:

zt=α∗zt−1+et(1≤t≤T)

其中,zt表示从输入序列中由第一个单词w1直到第t个单词wt组成的子序列的FOFE编码(假设z0=0),α是forgeting factor(常数),et是单词wt对应的one-hot向量。

那么,zT就可以看作是对序列w1,w2,...,wT的一种向量表示。

举例来说,如果词表为

A=[1,0,0]

B=[0,1,0]

C=[0,0,1]

那么,通过计算可以得到

ABC=[α2,α,1]

ABCBC=[α4,α+α3,1+α2]

根据文献Zhang et al., 2015b,FOFE编码具有一些很好的性质:

1. 如果0<α≤0.5,那么FOFE对任意K和T都是唯一的。

2. 如果0.5<α<1,那么FOFE对于大多数K和T都是唯一的,只有有限个α的取值是例外。

也就是说,FOFE几乎可以唯一地编码任意序列,并且做到无损。

使用FOFE编码上下文



上图很好的说明了使用FOFE编码目标单词上下文的过程。

对于目标单词bank,其left context被编码成left FOFE code L,right context被编码成right FOFE code R(和left context不同,方向是从右往左编码)。如果目标单词在文章中多次出现,那么就会对应多个上下文向量,作者通过计算平均值的方式进行了处理。最终,对于此表中的每一个单词wt都会有对应的Lwt和Rwt,从而形成一个K行2K列的word-context矩阵(wa, 维度爆炸),即FOFE矩阵。

基于点互信息(PMI)的权重分配

机器学习相关文献里面,经常会用到点互信息PMI(Pointwise Mutual Information)这个指标来衡量两个事物之间的相关性。

作者使用PMI对FOFE矩阵进行权重分配。这一部分作者没有细说,我猜想是计算每一行的L和R的PMI然后值越高对应单词的权重的就越大。通过该操作,最终得到weighted FOFE matrix。

基于SVD的矩阵分解

我们的目的是得到词向量矩阵,作者为了能从加权之后的FOFE矩阵中得到最终的词向量矩阵,采用了对FOFE矩阵进行奇异值分解的方式(truncated SVD),经过奇异值分解之后会得到三个矩阵:

U,Σ,VT

如果Σ的秩(rank)为d,那么Ud就是词向量矩阵,每一行对应一个单词,词向量的维度为d。

实验结果

训练数据集: standard enwiki9(约1.3亿个单词)

测试数据集: WordSim353, MEN, Mechanical Turk, Rare Words以及SimLex-999

最终实验结果记录如下(表中展示的是Spearman rank correlation coeffiecient):



从斯皮尔曼系数来看,确实有了提高。

整个实验唯一需要更新的参数就是实验用的训练集合了。要是能用更大的集合,说不定有更好的效果。不过,由于使用了one-hot表示,维度是个问题啊。

总结

之前一直在看句子建模的文章,这次看单词建模的文章,一下子觉得方法好简单。同时,就文中一些不懂的内容,邮件询问的作者,希望能得到回音。不过意外收获是知道了FOFE这个序列建模的方法,最近要好好学习一下了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nlp 阅读 word
相关文章推荐