神经翻译笔记3扩展e第1部分. Word2Vec原理及若干关于词向量的扩展知识

本文深入探讨了Word2Vec的参数学习,包括CBOW和SkipGram模型,详细介绍了连续词袋模型的参数更新过程。此外,文章讨论了如何优化计算效率,如分层softmax和负采样技术,以应对大规模词表的挑战。同时,还介绍了如何生成高质量的词向量,并总结了不同训练策略和模型在不同任务上的表现。
摘要由CSDN通过智能技术生成

神经翻译笔记3扩展e第1部分. Word2Vec原理及若干关于词向量的扩展知识

本文共分为三节,由若干文章拼接而成。第一节具体推导word2vec参数的更新规则,第二节介绍在词表比较大时对softmax做近似的方法,第三部分介绍如何生成好的词向量

Word2vec的参数学习

本节内容完全来自于[Rong2014]

连续词袋模型(CBOW)

上下文仅有一个单词的情况

上下文只有一个单词时,网络做的事情其实类似于二元语法模型。假设词表大小为 V V V,隐藏层大小为 N N N,输入层到隐藏层及隐藏层到输出层都是全连接,输入为独热编码向量,那么网络的示意图如下图所示
此处输入图片的描述

从图中可知,输入层和隐藏层之间的权重可以使用 V × N V \times N V×N的矩阵 W \boldsymbol{W} W表示。假设输入的语境单词为词表中的第 k k k个单词,则输入向量 x \boldsymbol{x} x满足 x k = 1 x_k = 1 xk=1 ∀ k ′ ̸ = k → x k ′ = 0 \forall k' \not= k \rightarrow x_{k'} = 0 k̸=kxk=0,因此有
h = W T x = w ( k , ⋅ ) T : = v w I T \boldsymbol{h} = \boldsymbol{W}^\mathsf{T}\boldsymbol{x} = \boldsymbol{w}_{(k, \cdot)}^\mathsf{T} := \boldsymbol{v}_{w_I}^\mathsf{T} h=WTx=w(k,)T:=vwIT
W \boldsymbol{W} W的第k行行向量实际上就是词表中第k个单词词向量的转置,记输入单词词向量为 v w I \boldsymbol{v}_{w_I} vwI

假设最后得到的得分向量为 u \boldsymbol{u} u,则从隐藏层到输出层有
(1) u = W ′ T h \boldsymbol{u} = \boldsymbol{W}'^\mathsf{T}\boldsymbol{h} \tag{1} u=WTh(1)
其中 u \boldsymbol{u} u的第 j j j行元素 u j u_j uj
(2) u j = w ( ⋅ , j ) ′ T h u_j = \boldsymbol{w}_{(\cdot, j)}'^\mathsf{T}\boldsymbol{h} \tag{2} uj=w(,j)Th(2)
这里 w ( ⋅ , j ) ′ \boldsymbol{w}_{(\cdot, j)}' w(,j) W ′ \boldsymbol{W}' W的第 j j j列。记 w ( ⋅ , j ) ′ \boldsymbol{w}_{(\cdot, j)}' w(,j) v w O ′ \boldsymbol{v}'_{w_O} vwO

得到 u \boldsymbol{u} u以后,可以使用softmax来得到单词的后验分布:给定上文单词为 w I w_I wI的情况下,出现单词 w O w_O wO的概率为
(3) P ( w O ∣ w I ) = y j = exp ⁡ ( u j ) ∑ j ′ = 1 V exp ⁡ ( u j ′ ) P(w_O|w_I) = y_j = \frac{\exp(u_j)}{\sum_{j'=1}^V \exp(u_{j'})} \tag{3} P(wOwI)=yj=j=1Vexp(uj)exp(uj)(3)
将式(1)和(2)代入(3)可得
(4) P ( w O ∣ w I ) = exp ⁡ ( v w O ′ T v w I ) ∑ j ′ = 1 V exp ⁡ ( v w j ′ ′ T v w I ) P(w_O|w_I) = \frac{\exp\left(\boldsymbol{v}_{w_O}'^\mathsf{T}\boldsymbol{v}_{w_I}\right)}{\sum_{j'=1}^V \exp\left(\boldsymbol{v}_{w_j'}'^\mathsf{T}\boldsymbol{v}_{w_I}\right)} \tag{4} P(wOwI)=j=1Vexp(vwjTvwI)exp(vwOTvwI)(4)

可见对同一个单词 w w w来说,会有两个嵌入表示 v w \boldsymbol{v}_{w} vw v w ′ \boldsymbol{v}_{w}' vw,前者是 W \boldsymbol{W} W的第 i i i行行向量,后者是 W ′ \boldsymbol{W}' W的第 i i i列列向量。在后续的分析中,称前者为单词 w w w输入向量,后者为单词 w w w输出向量

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

假设给定单词 w k w_k wk,期望输出是单词 w j ∗ w_{j^\ast} wj,那么模型优化的目标是要最大化正确单词对应的概率 y j ∗ y_{j^\ast} yj,有
arg ⁡ max ⁡ W ′ p ( w O ∣ w I ) = arg ⁡ max ⁡ W ′ y j ∗ = arg ⁡ max ⁡ W ′ log ⁡ y j ∗ = arg ⁡ max ⁡ W ′ ( u j ∗ − log ⁡ ∑ j ′ = 1 V exp ⁡ ( u j ′ ) ) \begin{aligned} \mathop{ {\rm \arg}\max}_{\boldsymbol{W}'} p(w_O|w_I) &= \mathop{ {\rm \arg}\max}_{\boldsymbol{W}'} y_{j^\ast} \\ &= \mathop{ {\rm \arg}\max}_{\boldsymbol{W}'} \log y_{j^\ast} \\ &= \mathop{ {\rm \arg}\max}_{\boldsymbol{W}'} \left(u_{j^\ast} - \log \sum_{j'=1}^V \exp(u_{j'})\right) \end{aligned} argmaxWp(wOwI)=argmaxWyj=argmaxWlogyj=argmaxWujlogj=1Vexp(uj)
E = − log ⁡ p ( w O ∣ w I ) E = -\log p(w_O|w_I) E=logp(wOwI) 为学习的目标函数,那么学习的目的就是最小化 E E E。可知
∂ E ∂ u j = y j − t j : = e j \frac{\partial E}{\partial u_j} = y_j - t_j := e_j ujE=yjtj:=ej
其中 t j = 1 ( j = j ∗ ) t_j = \mathbb{1}(j = j^\ast) tj=1(j=j)。或者可以写为
∂ E ∂ u j = { y j − 1 j = j ∗ y j e l s e w h e r e \frac{\partial E}{\partial u_j} = \begin{cases}y_j - 1 & j = j^\ast \\ y_j & {\rm elsewhere}\end{cases} ujE={ yj1yjj=jelsewhere
接着可以求出 E E E W ′ \boldsymbol{W}' W中每个元素 w i j ′ w_{ij}' wij的偏导数
∂ E ∂ w i j ′ = ∂ E ∂ u j ⋅ ∂ u j ∂ w i j ′ = e j ⋅ h i \frac{\partial E}{\partial w_{ij}'} = \frac{\partial E}{\partial u_j}\cdot \frac{\partial u_j}{\partial w_{ij}'} = e_j \cdot h_i wijE=ujEwijuj=ejhi
因此梯度下降的更新方法为
w i j ′ ( n e w ) = w i j ′ ( o l d ) − η ⋅ e j ⋅ h i w_{ij}'^{(\rm new)} = w_{ij}'^{(\rm old)} - \eta \cdot e_j\cdot h_i wij(new)=wij(old)ηejhi
向量化的形式为
v w j ′ ( n e w ) = v w j ′ ( o l d ) − η ⋅ e j ⋅ h \boldsymbol{v}_{w_j}'^{(\rm new)} = \boldsymbol{v}_{w_j}'^{(\rm old)} - \eta \cdot e_j \cdot \boldsymbol{h} vwj(new)=vwj(old)ηejh
这意味着,当 y j > t j y_j > t_j yj>tj时, e j e_j ej为正值, v w j ′ \boldsymbol{v}_{w_j}' vwj会变小。由于 t j t_j tj只能为0或1,因此这说明给定输入单词为 w I w_I wI时,对不是期望单词序号 j ∗ j^\ast j j j j w j w_j wj的输出向量会变小,反之相反

输入层到隐藏层权重的更新

首先计算目标函数 E E E对隐藏层每个输出元素 h i h_i hi的偏导数。由于隐藏层到输出层是全连接的,因此 h i h_i hi对每个 u j u_j uj都有贡献,使用全微分公式有
∂ E ∂ h i = ∑ j = 1 V ∂ E ∂ u j ⋅ ∂ u j ∂ h i = ∑ j = 1 V e j ⋅ w i j ′ : = e i ′ \frac{\partial E}{\partial h_i} = \sum_{j=1}^V \frac{\partial E}{\partial u_j} \cdot \frac{\partial u_j}{\partial h_i} = \sum_{j=1}^V e_j \cdot w_{ij}' := e'_i hiE=j=1VujEhiuj=j=1Vejwij:=ei
其中 e i ′ e'_i ei N N N维向量 e ′ \boldsymbol{e}' e的第 i i i个元素。由于输入层到隐藏层也是一个全连接,因此有
h i = ∑ k = 1 V x k ⋅ w k i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值