word2vec 模型的详细数学推导和直观理解

word2vec作为一个优秀的用于产生词向量开源工具,在自然语言处理和计算机视觉领域有着很多应用,实践中效果相当好,但是很多使用者往往知其然不知其所以然。本文对word2vec Parameter Learning Explained这篇文章进行翻译和解读。深入浅出地剖析了词嵌入模型的参数学习过程,给出了详细的数学推导以及直观的解释。看完对word2vec会有一个更深层次的理解,有利于更好地使用和改进这一工具。

说明:读本文之前,需要对神经网络及后向传播有一定了解。另外,对word2vec需要有一个大概的了解。

1 连续词袋模型(CBOW)

1.1 单个单词上下文

从一个最简单的连续词袋模型开始,假设上下文只有一个单词,即输入一个目标单词,预测一个单词(而不是多个)。
下图是在上述定义之下的网络模型。
单个上下文网络模型
上图中,词汇量大小为 V V ,隐藏层大小为 N ,各层直接都是全连接。输入是一个one-hot向量,即对于一个给定的上下文单词, V V 个元素 { x 1 , . . . x V } 中只有一个为1,其他均为0。

解释:每个输入的向量 { x1,...xV} { x 1 , . . . x V } V V 个元素,一个元素 x k 代表一个单词。如果向量表示第 k k 个单词, x k 为1,其他元素均为0。

为了让大家有一个更直观具体的理解,这里给出一个具体的例子,图中假设 V=6 V = 6 N=3 N = 3
直观示意图

输入层和隐藏层之间的权重可以用一个 V×N V × N 矩阵 W W 表示, W 的每一行是一个 N N 维的向量 v w ,表示输入层对应的单词, W W 的第 i 行用 vTw v w T 表示,给定一个上下文(在这个模型中即为一个单词),假设 xk=1,xk=0,kk x k = 1 , x k ′ = 0 , k ′ ≠ k ,有以下式子:

h=WTx=WTk,.:=vwI(1) h = W T x = W k , . T := v w I ( 1 )
上式本质上是将 W W 的第 k k 行复制给 h vwI v w I 是输入单词 wI w I 的向量表示。这表示隐藏层的激活函数是一个简单的线性函数(比如,直接将输入的加权和传递到下一层)。
隐藏层和输出层之间,有一个不同的权重矩阵 W={ wij} W ′ = { w i j ′ } ,这是一个 N×V N × V 矩阵。使用这些权重,我们可以计算词汇表( V V 个单词组成的词汇表)中每一个单词的分值 u j
uj=vTwjh(2) u j = v w j ′ T h ( 2 )
其中, vwj v w j ′ 是矩阵 W W ′ 的第 j j 列。

解释:输出共有 V 个元素,每一个元素由 W W 的第 j 列和 h h 相乘得到(加权和),即为 uj u j

接着我们使用softmax,一个log线性分类器模型,以得到每个单词的后验概率,这是一个多项式分布:

p(wj|wI)=yj=exp(uj)Vj=1exp(uj)(3) p ( w j | w I ) = y j = e x p ( u j ) ∑ j ′ = 1 V e x p ( u j ′ ) ( 3 )
其中, yj y j 是输出层的第 j j 个元素。
将(1)式和(2)式代入(3)式有:
p ( w j | w I ) = y j = e x p ( v w j T v w I ) j = 1 V e x p ( v w j T v w I ) ( 4 )
注意 vw v w vw v w ′ 是词语 w w 的两个表示。 v w 来自输入层和隐藏层间的权重矩阵 W W 的行, v w 来自隐藏层和输出层间的权重矩阵 W W ′ 的列。在接下来的分析中,我们称 vw v w 为词语 w w 的输入向量,称 v w 为词语 w w 的输出向量。

注意:在一次训练中,输入向量和输出向量不是同一个向量,不是代表同一个词语,输入的是上下文词语,输出的是由上下文推导而来的词语。

隐藏层到输出层的权重更新等式

先说更新思路,目标是最大化 p ( w O | w I ) ,即要最小化损失函数 E E 。因此找到权重关于 E 的公式,求偏导得到梯度,利用梯度更新权重,使得 E E 尽快下降。

尽管实际进行这种权重更新计算是不切实际的(下文有解释),但我们探究这个源头有利于理解没用任何技巧的初始模型。
我们训练的目标是为了最大化式(4):

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值