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

3.5 连续词袋算法

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

 

对于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模型一样:

 

 

图3.13 CBOW模型

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

 

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

admin
admin管理员

上一篇:《重新定义Spring Cloud实战》——1.3.2 Spring Cloud与领域驱动
下一篇:《Linux使用笔记》(4)常用shell命令

留言评论

暂无留言
取消
扫码支持