《TensorFlow自然语言处理》—3.5 连续词袋算法

举报
华章计算机 发表于 2019/07/21 22:08:01 2019/07/21
【摘要】 本节书摘来自华章计算机《TensorFlow自然语言处理》一书中的第3章,第3.5节,[澳] 图珊·加内格达拉(Thushan Ganegedara) 著 马恩驰 陆 健 译。

3.5 连续词袋算法

CBOW模型的原理类似于skip-gram算法,但是在对问题建模的公式中有一个重大变化。在skip-gram模型中,我们从目标单词预测上下文单词。但是,在CBOW模型中,我们将从上下文单词预测目标单词。让我们通过前面的例句来比较skipgram和CBOW的数:

 image.png

对于skip-gram,数据元组(即(输入词,输出词))可能如下所示:

(dog, the), (dog, barked), (barked, dog),等等。

对于CBOW,数据元组如下所示:

([the, barked], dog), ([dog, at], barked),等等。

因此,CBOW的输入具有2×m×D的维度,其中m是上下文窗口大小,D是嵌入的维度。CBOW的概念模型如图3.13所示。

我们不会详细介绍CBOW的细节,因为它与skip-gram非常相似。但是,我们会讨论其算法实现(虽然不深入,因为它与skip-gram有许多相似之处),以便清楚地了解如何正确实现CBOW。CBOW的完整实现可以在ch3练习文件夹的ch3_word2vec.ipynb中找到。

在TensorFlow中实现CBOW

首先,我们定义变量,这与skip-gram模型一样:

 image.png

image.png

 image.png

图3.13 CBOW模型

在这里,我们创建了一组堆叠的嵌入,代表每个上下文单词的位置,所以,我们将有一个大小为[batch_size,embeddings_size,2 * context_window_size]的矩阵。然后,我们使用降维运算符,通过平均最后一个轴上的堆叠嵌入,将堆叠矩阵大小减小到[batch_size,embeddings_size]:

 image.png

之后,损失和优化的定义与在skip-gram模型中一样:

image.png

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。