轻松理解CBOW模型

原创 2017年12月05日 20:59:53

引言

前面我分析了Word2vec的一种模型叫做skip-gram模型。在这篇文章中,我将讲述另一个word2vec模型——连续词袋模型(CBOW)模型。如果你理解skip-gram模型,那么接下来的CBOW模型就更好理解了,因为两者模型互为镜像。我们先来看看CBOW模型与skip-gram模型对比图:
word2vec
如何,这是不是镜像关系?所以接下来的讲解也会和skip-gram那篇文章极其类似。

前向传播

接下来我们来看下CBOW神经网络模型,CBOW的神经网络模型与skip-gram的神经网络模型也是互为镜像的
cbownero
在上图中,该模型的输入输出与skip-gram模型的输入输出是相反的。这里输入层是由one-hot编码的输入上下文{x1,…,xC}组成,其中窗口大小为C,词汇表大小为V。隐藏层是N维的向量。最后输出层是也被one-hot编码的输出单词y。被one-hot编码的输入向量通过一个V×N维的权重矩阵W连接到隐藏层;隐藏层通过一个N×V的权重矩阵W连接到输出层。
接下来,我们假设我们知道输入与输出权重矩阵的大小。

  • 第一步就是去计算隐藏层h的输出。如下:
    h=1CW(i=1Cxi)(1)

    该输出就是输入向量的加权平均。这里的隐藏层与skip-gram的隐藏层明显不同。
  • 第二部就是计算在输出层每个结点的输入。如下:
    uj=vTwjh(2)

    其中vTwj是输出矩阵W的第j列。
  • 最后我们计算输出层的输出,输出yj如下:
    yc,j=p(wy,j|w1,...,wc)=exp(uj)Vj=1exp(uj)(3)

通过BP(反向传播)算法及随机梯度下降来学习权重

在学习权重矩阵WW过程中,我们可以给这些权重赋一个随机值来初始化。然后按序训练样本,逐个观察输出与真实值之间的误差,并计算这些误差的梯度。并在梯度方向纠正权重矩阵。这种方法被称为随机梯度下降。但这个衍生出来的方法叫做反向传播误差算法。
具体推导步骤就不详写了:

  • 首先就是定义损失函数,这个损失函数就是给定输入上下文的输出单词的条件概率,一般都是取对数,如下所示:
    E=logp(wO|wI)(4)

    =vTwohlogj=1Vexp(vTwjh)(5)

    接下来就是对上面的概率求导,具体推导过程可以去看BP算法,我们得到输出权重矩阵W的更新规则:
    w(new)=w(old)ijη(yjtj)hi(6)

    同理权重W的更新规则如下:
    w(new)=w(old)ijη1CEH(7)

参考文献

[1] Mikolov T, Chen K, Corrado G, et al. Efficient Estimation of Word Representations in Vector Space[J]. Computer Science, 2013.(这篇文章就讲了两个模型:CBOW 和 Skip-gram)
[2] Mikolov T, Sutskever I, Chen K, et al. Distributed Representations of Words and Phrases and their Compositionality[J]. 2013, 26:3111-3119.(这篇文章针对Skip-gram模型计算复杂度高的问题提出了一些该进)
[3] Presentation on Word2Vec(这是NIPS 2013workshop上Mikolov的PPT报告)

版权声明:本文为博主原创文章,未经博主允许不得转载。

word2vec 中的数学原理详解(一)目录和前言

word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单、高效,因此引起了很多人的关注。由于 word2vec 的作者 Tomas Miko...
  • peghoty
  • peghoty
  • 2014年07月19日 22:42
  • 129038

Word2Vec概述与基于Hierarchical Softmax的CBOW和Skip-gram模型公式推导

该文档是我在《Word2Vec_中的数学原理详解》基础上做的总结和一些新的描述,增加了代码与公式的对照和公式总汇(公式太多,汇总下看起来更方便),可以更加方便的加深对代码和公式理解。既然是总结,则一些...
  • liuyuemaicha
  • liuyuemaicha
  • 2016年09月21日 18:09
  • 7163

自己动手写word2vec (四):CBOW和skip-gram模型

CBOW和skip-gram应该可以说算是word2vec的核心概念之一了。这一节我们就来仔细的阐述这两个模型。其实这两个模型有很多的相通之处,所以这里就以阐述CBOW模型为主,然后再阐述skip-g...
  • u014595019
  • u014595019
  • 2016年07月18日 16:54
  • 38702

word2vec模型

(一)CBOW 1.模型图 (1)输入层是上下文若干个词的词向量; (2)隐藏层是词向量累加; (3)输出层是哈夫曼树,其中非叶子节点是类词向量,叶子节点是词向量(包括所有词); 2.模型函数 (...
  • dream_catcher_10
  • dream_catcher_10
  • 2016年05月10日 11:06
  • 3813

谈谈Word2Vec的CBOW模型

最近在做毕设,涉及到了Word2Vec,就写下这篇,顺便加深理解。0X00  简介 Word2Vec是Google与2013年开源推出的一个用于获取word vecter的工具包,利用神经网络为单...
  • github_36235341
  • github_36235341
  • 2017年11月22日 19:33
  • 252

轻松理解CBOW模型

引言前面我分析了Word2vec的一种模型叫做skip-gram模型。在这篇文章中,我将讲述另一个word2vec模型——连续词袋模型(CBOW)模型。如果你理解skip-gram模型,那么接下来的C...
  • u010665216
  • u010665216
  • 2017年12月05日 20:59
  • 643

Word2Vec源码详细解析(下)

相关链接: 1、Word2Vec源码最详细解析(上) 2、Word2Vec源码最详细解析(下) Word2Vec源码最详细解析(下)         在这一部分...
  • EnochX
  • EnochX
  • 2016年10月18日 20:28
  • 1951

word2vec Skip-gram模型精华理解

https://github.com/jikexueyuanwiki/tensorflow-zh/blob/master/SOURCE/tutorials/word2vec.md#skip-gram-...
  • guotong1988
  • guotong1988
  • 2017年02月14日 14:27
  • 1500

Word2vec之CBOW模型和Skip-gram模型形象解释

Word2vec中两个重要模型是:CBOW和Skip-gram模型这里主要讲下我本人对CBOW模型的理解,这是主要是举个例子简化下首先说下CBOW的三层结构:输入层,投影层(中间层),输出层假设语料库...
  • u011734144
  • u011734144
  • 2017年11月29日 19:15
  • 396

word2vec源码解析(注释合理版本)

word2vec词向量学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/51564783 个人微博:黄锦池-hjimce 一、使...
  • kexinmei
  • kexinmei
  • 2016年11月08日 14:44
  • 1382
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:轻松理解CBOW模型
举报原因:
原因补充:

(最多只允许输入30个字)