200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > cbow word2vec 损失_Skip-gram和CBOW知识点

cbow word2vec 损失_Skip-gram和CBOW知识点

时间:2019-07-06 20:33:20

相关推荐

cbow word2vec 损失_Skip-gram和CBOW知识点

本文涉及的内容:

如何构造HuffMan树Hierarchical Softmax似然函数skip-gram似然函数CBOW似然函数Negative Sampling方法

一 HuffMan树构造方法

构造一颗颗的单结点树,树的值为单词的出现频率在森林中找到值最小的两颗树合并,两颗树的和为根节点的和,两颗树作为左右子树。删除两颗子树,左子树的值大于右子树的值。重复2和3,直到只有一棵树。

哈夫曼树构造过程

哈夫曼树编码过程

二 Hierarchical Softmax

背景:

,算法的复杂度为 ,利用Hierarchical Softmax可以将复杂度降为 。

例如

同时出现在一个窗口中, 是 对应的词向量,我们希望 从根节点出发到达 的概率最大。在 独立同分布的假设下,似然函数为:

三 Skip-gram参数更新

skip-gram是利用中间的单词窗口中的上下文,用

表示中间单词, 表示窗口中的另外一个单词,注意上下文是相互的,在期望 最大的同时, 也是最大的。在实际操作中,是利用梯度上升让 最大。这样做的好处是,在每一个窗口中,不仅更新了 ,还更新了 个 , 为窗口的大小;坏处是比CBOW的训练时间长 倍。下面是skip-gram更新参数伪代码:

for i in range(1, 2c):e = np.zeros_like(x_i)for j in range(2, l_w):f = 1 / (1 + np.exp(np.dot(x_i, sitaw_j)))g = (1 - dw_j - f) * yitasitaw_j = sitaw_j + g * x_ie = e + g * sitaw_j;x_i = x_i + e

四 CBOW参数更新

CBOW是利用上下文单词的平均向量预测中间单词,

。伪代码如下:

for i in range(1, 2c):x_w += x_ix_w = xw / acfor j in range(2, lw):f = 1 / (1 + np.exp(np.dot(x_w, sitaw_j)))g = (1 - dw_j - f) * yitasitaw_j = sitaw_j + g * x_we = e + g * sitaw_jfor i in range(1, 2c):x_i = x_i + e

五 Negative Sampling

Hierachical softmax需要构造HuffMan树,每次都要循环求概率积。Negative Sampling的思路是每次训练的时候从整个训练库当中按照单词概率抽取几个负样本,损失函数定义为:

求导数很简单,可以手动推导一下。

参考链接:

yuyuqi:word2vec(cbow+skip-gram+hierarchical softmax+Negative sampling)模型深度解析​word2vec原理(二) 基于Hierarchical Softmax的模型​

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。