从PMI矩阵分解的角度看word2vec

从PMI矩阵分解的角度看word2vec

本文需要读者对word2vec中涉及到的Skip-Gram模型、负采样等有基本的了解,如果对这些有不懂的地方,可以阅读文章《一篇浅显易懂的word2vec原理讲解》。


1. 文章的动机

在利用Skip-Gram和负采样(简称SGNS)来求解word2vec的时候,会得到两个矩阵 WC ,其中 W 代表的是输入层到隐藏层的权重矩阵, C 代表的是隐藏层到输出层的权重矩阵。一般情况下,我们会保留 W 作为我们的词向量矩阵,而直接忽略掉矩阵 C

WC^T=M

我们看上面的公式,这个公式想表达的意思是矩阵 W 和矩阵 C 事实上就是矩阵 M 的分解,所以如果我们能找出矩阵 M,就能证明Skip-Gram加负采样近似等价于对矩阵 M 的分解。

M_{ij}=w_i \cdot c_j

在这里, w_i 是词 w 对应的向量,而 c_jw 的上下文的词对应的向量,那么 M_{ij} 衡量的是词与其上下文之间的联系。


2. 分析SGNS与矩阵分解的关系

SGNS需要最大化的目标函数是

l=\sum_{w}\sum_{c}\#(w,c)(log\sigma(w\cdot c)+k\cdot E_{c_N\sim P_D}[log\sigma(-w\cdot c_N)])

经过一番求导之后得出:当满足下述条件时,函数 l 达到最值。

w\cdot c=log(\frac{\#(w,c)\cdot |D|}{\#(w)\cdot \#(c)}) - log(k)

其中 D 是训练文本, c 是词 w 的上下文, \#(w,c)(w,c)D 中出现的次数, \#(w)\#(c) 以此类推。log(\frac{\#(w,c)\cdot |D|}{\#(w)\cdot \#(c)}) 就是 (w,c) 的pointwise mutual information(简称PMI),即

M_{ij}^{SGNS}=w_i\cdot c_j=PMI(w_i,c_j)-log(k)

至此,我们找到了矩阵 M


3. 利用SVD直接分解Shifted PPMI矩阵(论文中提出来的方法)

Shifted PPMI矩阵

M=SPPMI_K(w,c)=max(PMI(w,c)-logk,0)

SVD分解 M

M=U\Sigma V^T

取出 \Sigma 中的前d大的特征值对应的行列组成新矩阵 \Sigma_d ,对于 UV 也是如此,那么得到

M_d=U_d\Sigma_d V_d^T

W^\alpha=U_d(\Sigma_d)^{\alpha}

C^{\alpha}=V_d(\Sigma_d)^{\alpha}

其中 \alpha 是可以调节的参数。这样我们就得到了词向量 W


参考文献

《Neural Word Embedding as Implicit Matrix Factorization》

编辑于 2018-09-30 17:51