word2vec

关于

词向量相关论文学习。

word2vec 论文

导论

The Skip-gram Model

用中间词预测周围的词,最大化对数似然函数

$$
\frac{1}{T} \sum_{t=1}^T \sum_{-c \le j \le c, j \neq 0} \log p(w_{t+j}| w_t) \\
p(w_O| w_I) = \frac{\exp(v^'_{w_O}^T v_{w_I})}{\sum_{w=1}^W \exp(v^'_{w}^T v_{w_I}) }
$$

计算代价正比于词典规模 W(10^5-10^7),因此很费时间。

Hierarchical Softmax

Frederic Morin and Yoshua Bengio. Hierarchical probabilistic neural network language model. In Pro- ceedings of the international workshop on artificial intelligence and statistics, pages 246–252, 2005.

只需要计算$(\log_2W)$个节点!
将条件概率的计算,变成多个分类概率的计算。可以用一个二叉树表示出来,叶子结点对应词,中间节点有一个参数!
每一个内部节点可以看做一个二分类逻辑回归,其参数就是二分类参数。这个参数也要学习!
文中表示用哈夫曼树作为这个二叉树可以简单提升性能。

$$
p\left( w_O | w_I \right) = \prod_{j = 1}^{L(w) - 1} \sigma \left( [n(w,j+1) = ch(n(w,j))] \centerdot v_{n(w,j)}^{\top} v_{w_I} \right)
$$

Negative Sampling

负采样解释可以看2014年的文章:http://cn.arxiv.org/pdf/1402.3722v1.pdf

可以将每一项理解为一个二元分类问题,正样本是词在中心词的上下文,而负样本是不在中心词上下文的词。
目标函数相当于让正样本出现以及k各负样本不出现的联合概率最大化!

$$
\log \sigma(v_{w_O}'^T v_{w_I}) + \sum_{i=1}^k \mathbb{E}_{w_i \sim P_n(w)} \left[ \log(-\sigma(v_{w_i}'^T v_{w_I}')) \right]
$$

对于小数据集k取 5-20 即可;对于大数据集k可以取小点2-5.
采样方法 P 取 unigram distribution $(U(w)^{3/4})$最好,即正比于词频的3/4次幂。

高频词的负采样

以概率P丢弃!

$$
P(w_i) = 1 - \sqrt{\frac{t}{f(w_i)}}
$$

t 是阈值,典型值为$(10^{-5})$,f是词频率!
这种方式不但可以加快速度,还能提高低频词的精度!(不是数据越多越好?!)

测试数据

短语学习

将经常出现在一起的,而不经常在其他上下文出现的多个词作为一个token。例如:New York Times;
但是:this is,没有作为一个token!

CBOW 论文

Mikolov, T., Chen, K., Corrado, G., & Dean, J. (2013). Efficient estimation of word representations in vector space. arXiv preprint arXiv:1301.3781.

周围词加和预测中心词,Hierarchical Softmax 哈夫曼树!

Glove

Pennington, J., Socher, R., & Manning, C. D. (2014, October). Glove: Global Vectors for Word Representation. In EMNLP (Vol. 14, pp. 1532-43).

核心思想,直接建模共生矩阵!(skip-gram,CBOW是直接建模上下文!不能利用全局统计信息?)
建模概率比率,而不是建模概率本身!

$$
F(w_i, w_j, \hat{w}_k) = \frac{P_{ik}}{P_{jk}}
$$

希望学习到线性关系?!

$$
F(w_i, w_j, \hat{w}_k) = F(w_i - w_j, \hat{w}_k) \\
= F( (w_i - w_j)^T \hat{w}_k) = \frac{P_{ik}}{P_{jk}}
$$

考虑对称性,即将共生矩阵行列对换,需要保持不变性!那么要F是群(R, +)到(R+, x)的同态映射

$$
F((w_i - w_j)^T \hat{w}_k) = \frac{F(w_i^T \hat{w}_k)}{F(w_j^T \hat{w}_k)}
$$

因此,F是指数函数!

进而要求具有交换对称性,可以增加bias实现

$$
w_i^T \hat{w}_k + b_i + \hat{b}_k = \log(X_{ik})
$$