Distributed Representations of Words and Phrases and their Compositionality 阅读笔记

2014-07-26 by Leon
via: liustrive.com

文章提出了一些对Skp-gram模型的扩展,提出一种NCE(Noise Contrastive Estimation )方法用以代替上文hierarchical softmax方法,从而获得更高的效率和对高频词的更好的词向量结果。 文中提到词向量表示的一大弊端是它们无法表示一些词组成的常用短语,这短语不是字面上把其组成词连接起来的意义,于是提出扩展,将基于词的模型变成基于短语的模型,扩展的原理是先抓出这些短语,然后把这些短语作为整体的“词”加入训练集,然后使用上文实验部分中提到的方法,利用词向量代数运算验证准确性。

The Skip-gram Model

上文介绍过skip-gram模型的结构,给定一句由训练词{w1,w2,w3…wT},其目标是最大化平均对数概率,c为目标词的前后上下文长度

$$\frac{1}{T}\sum_{t=1}^T \sum_{-c\leq j \leq c, j\neq0} \log p(w_{t+j}|w_t)$$
其中,\(p(w_{t+j} | w_t)\) 用softmax函数计算:
$$\hat{p}(w_t|w_{t-1},...,w_{t-n+1}) = \frac{e^{y_{w_t}}}{\sum_i e^{y_i}}$$

即:
$$p(w_O| w_I) = \frac{exp({v'}_{w_O} {}^{\mathrm{T}} v_{w_I})}{\sum_{w=1}^W exp(v'_w {}^{\mathrm{T}}v_{w_I})}$$

Hierarchical Softmax

Hierarchical Softmax是full softmax的一种计算量优化,其目标是减少计算:

$$p(A|C) = \frac{e^{-E(A,C)}}{\sum_{v=1}^V e^{-E(wv,C)}}$$
时所需的巨大计算量,使其运算量从计算|V|个输出节点变成log|V| 其推导过程如下:

Negative Sampling

文章提出一种代替hierarchical softmax的方法(NCE),NCE能够求出softmax的对数概率函数近似最大,由于skip-gram模型只关心词向量的质量,所以在保证词向量准确性的条件下,还可以进一步简化NCE,文章定义了NCG方法: 每个$\log p(W_O | W_I) $的运算被下式替代:

$$\log \sigma ({v'}_{w_O} {}^{\mathrm{T}}v_{w_I}) + \sum_{i=1}^{k} E_{w_i \sim P_n(w)}\log \sigma(-{v'}_{w_i} {}^{\mathrm{T}}v_{w_I})]$$

其中k是为每个数据样本选用k个负类样本,在小的数据集时可以取5-20,大的数据集甚至取2-5就够用,Negative sampling 和NCE的主要区别是NCE同时需要样本和噪声分布的数值概率 ?

Subsampling of Frequent Words

在大型的语料中,一些词会有非常高的词频,比如the, a , in 这种类型词,但是这种高频词往往比一些低频词提供更少的有效信息,所以为了逆转这种不平衡性,文章提出一种二次抽样方法:

$$P(w_i) = 1-\sqrt{\frac{t}{f(w_i)}}$$
其中\(f(w_i)\)是词\(w_i\)的词频,t是预设的阈值,词频高于t的\(w_i\) 具有\(P(w_i)\)的概率被抛弃。

实验部分:

传统的实验

这篇文章的实验任务也采用上文的代数运算准确率衡量,实验描述参见上文Task description 文中实验Skip-gram采用10亿数据量的数据集,抛弃词频少于5次的词,实验结果如图Table1

可以观察到Negative Sampling准确率高于HS算法,比原版的NCE也有少许提升,同时观察到以\(10^{-5}\)为阈值二次采样过滤后,大幅缩短了训练时间,同时少量提升了词向量准确度。

短语实验

上文提到过,一些由词组成的固定短语并不是其字面意义,于是作者抓出这些固定短句,并以其为整体加入词库而不是拆分成单个的词,抓出这些词的具体方法是:

$$score(w_i,w_j) = \frac{count(w_i,w_j)-\delta}{count(w_i)\times count(w_j)}$$
基本上就是词以固定形式出现的次数减去一个折扣系数与他们各自出现频率的比值,已决定这个短语的权值,最后权值超过预设的阈值的短语被取出作为固定短语,文中实验采用递降的阈值对训练集跑了2-4次这样的取短语操作,使长固定短语也能被抓出

这里具体怎么个2-4次法,前次的输出作为后次的数据集还是什么,文中没说清。

而后作者设计了针对固定短语的实验,与前文代数运算实验相近,只是测试用例变成: 组成固定短语的词 →固定短语 的关系,采用的样例如Table2:

根据此类测试用例,实验这对固定短语的词向量代数运算,数据集仍然采用10亿词量大小的Google News,并向词库加入抓取出的固定短语,实验结果发现,HS经过subsampling后具有最好的准确性,这表明subsampling不但能提升训练速度,也能提升一些情况下的准确率。 为了最大化这个固定短语词向量的准确性,另外的实验采用了1000维n=全句的HS算法,并采用330亿词数的数据集,模型准确率达到了72%,而数据集降到6B时,准确率为66%,说明训练数据的规模对词向量的准确率是决定性的。

Additive Compositionality

文章最后还讨论了词向量的加法语义合成,如Table4所示:


词向量加法能得到与相加的两词语义最接近的词或短语,这主要是因为在训练过程中,相加的两词有更大可能与结果短语或词在同一句中,比如“中国”+“首都”= “北京”

文章最后横向与相近工作的其它模型做了比较,比较训练时间以及词向量的准确率,结果表明Skip-gram phrase model 具有最快的训练时间(随着数据集规模的增长只有少量时间增加)和很好的准确性。


Comments