http://blog.youkuaiyun.com/itplus/article/details/37969635
原始的skip-gram是一种计算语言模型。
看题目中说要训练得到词向量,猜测题目里的skip-gram指的是类似于word2vec中的skip-gram 。那么就以word2vec中的经典模型skip-gram negative sampling来举例说明:
word2vec中的skip-gram negative sampling就是采用skip-gram策略用SGD算法优化以下这个目标函数:
\max_{\forall \mathbf{w}, \mathbf{c}} \sum_{w\in V_w} \sum_{c\in V_c} #(w,c) [ \log \sigma(\mathbf{w}^T\mathbf{c}) + k E_{c_N\sim P_{\mathcal{D}}} (\log \sigma(-\mathbf{w}^T\mathbf{c})) ]
这里,\mathbf{w}就是词向量,w是词语,c是w的上下文(本质上也是词语),#(w,c)是c出现在w上下文中的次数。
前面提到『采用skip-gram策略用SGD算法优化』具体来说,就是直接从头到尾扫一遍文档,对每一个位置都使用skip-gram构造多个wc 词对,并对目标函数的一个分量\log \sigma(\mathbf{w}^T\mathbf{c}) + k E_{c_N\sim P_{\mathcal{D}}} (\log \sigma(-\mathbf{w}^T\mathbf{c})) 中的两个部分都做梯度下降,并且这里的期望E_{c_N\sim P_{\mathcal{D}}}采用采样k次来近似,由于采样出的样本可以看做负样本,所以叫做negative sampling。
优化结束后,得到每个词w的词向量\mathbf{w}。
作者:li Eta
链接:http://www.zhihu.com/question/29894719/answer/92783887
来源:知乎
著作权归作者所有,转载请联系作者获得授权。