当前位置:   article > 正文

总结word2vec_one-hot标签用什么符号表示

one-hot标签用什么符号表示

主要参考:https://www.zybuluo.com/Dounm/note/591752

词的表征方式

词的表征方式有两种:一是one-hot representation(独热表示);二是distributed representation(分布式表示)。

独热表示(one-hot representation)

亦称独热编码,设词典的大小为N,首先将每个不同的词与0~N-1连续整数一一对应,即整数作为该词的索引,然后将每个词表示为长度为N的向量,在向量中,除词对应的索引i处为1,其余都为0。
该方法的优点是构建容易;缺点有:1.向量维度为词典大小,词越大维度越大;2.词与词间的相关性无法反映。

分布式表示(distributed representation)

鉴于one-hot编码的不足,提出了分布式表示。区别于one-hot编码,分布式表示将每个元素由整型改为浮点型;浮点型将原来的巨大维度的向量压缩到更小维度的空间。
分布式表示主要可分为两类:1.基于矩阵的分布表示,代表模型为GloVe;2.基于神经网络的分布表示,代表模型为word2vec

word2vec的前世今生

统计语言模型

在NLP中,统计语言模型就是计算一个句子在语料库中出现概率的模型。设 W = w 1 T : = ( w 1 , w 2 , . . . , w T ) W=w_{1}^{T}:= \left ( w_{1},w_{2},...,w_{T}\right ) W=w1T:=(w1,w2,...,wT)表示由 T T T个词 w 1 , w 2 , . . . , w T w_1,w_2,...,w_T w1,w2,...,wT组成的句子。则该句子的出现概率可表示为:
p ( W ) = p ( w 1 T ) = p ( w 1 , w 2 , . . . , w T ) = p ( w 1 ) ⋅ p ( w 2 ∣ w 1 ) ⋅ p ( w 3 ∣ w 1 2 ) ⋅ ⋅ ⋅ p ( w T ∣ w 1 T − 1 ) p\left ( W\right )=p\left ( w_{1}^{T}\right )=p\left ( w_{1},w_{2},...,w_{T}\right )\\ =p\left ( w_{1}\right )\cdot p\left ( w_2|w_1\right )\cdot p\left ( w_3|w_{1}^{2}\right )\cdot \cdot \cdot p\left ( w_{T}|w_{1}^{T-1}\right ) p(W)=p(w1T)=p(w1,w2,...,wT)=p(w1)p(w2w1)p(w3w12)p(wTw1T1)

根据大数定理得到近似计算结果:
p ( w k ∣ w 1 k − 1 ) = p ( w 1 k ) p ( w 1 k − 1 ) ≈ c o u n t ( w 1 k ) c o u n t ( w 1 k − 1 ) p\left ( w_k|w_{1}^{k-1}\right )=\frac{p\left ( w_{1}^{k}\right )}{p\left ( w_{1}^{k-1}\right )}\\\approx \frac{count\left ( w_{1}^{k}\right )}{count\left ( w_{1}^{k-1}\right )} p(wkw1k1)=p(w1k1)p(w1k)count(w1k1)count(w1k)

虽然可以算出近似概率,但模型参数的个数太多。假设语料库中词典的大小为 N N N,那么一维参数有 N N N个(即每个词单独出现的概率),二维参数有个 N 2 N^2 N2(即已知第一个词,第二个词的概率,共 N ∗ N N*N NN种),三维有个 N 3 N^3 N3 T T T维有 N T N^T NT个参数。如果要计算任意长度为 T T T的句子的概率,理论上就需要 N + N 2 + . . . + N T N+N^2+...+N^T N+N2+...+NT个参数。

于是借助N-gram模型来简化参数

N-gram

即假设一个词只与它前面 n − 1 n-1 n1个词相关。于是计算公式近似为:
p ( w k ∣ w 1 k − 1 ) ≈ p ( w k ∣ w k − n + 1 k − 1 ) = p ( w 1 k ) p ( w k − n + 1 k − 1 ) ≈ c o u n t ( w 1 k ) c o u n t ( w k − n + 1 k − 1 ) p\left ( w_k|w_{1}^{k-1}\right )\approx p\left ( w_k|w_{k-n+1}^{k-1}\right )=\frac{p\left ( w_{1}^{k}\right )}{p\left ( w_{k-n+1}^{k-1}\right )}\\\approx \frac{count\left ( w_{1}^{k}\right )}{count\left ( w_{k-n+1}^{k-1}\right )} p(wkw1k1)p(wkwkn+1k1)=p(wkn+1k1)p(w1k)count(wkn+1k1)count(w1k)

实作上,最多的情况是取n=3。

概率模型函数化

N-gram模型是存储下来所有可能的概率参数,然后计算时对概率进行连乘。但参数还是比较多,还可以再减少参数。按照机器学习领域的通用做法,我们不需要存储所有可能的概率参数,而是求解对问题建模后得到的目标函数的最优参数即可。

对于统计语言模型来说,我们通常构造的目标函数是最大似然函数,如下式:
∏ w ∈ C p ( w ∣ C o n t e x t ( w ) ) \prod_{w\in C}^{}p\left ( w|Context\left ( w\right )\right ) wCp(wContext(w))

即最大化已知词 w w w的上下文时,词 w w w出现的概率。其中 C C C表示语料库; C o n t e x t ( w ) Context(w) Context(w)表示 w w w的上下文。

由于连乘可能导致概率极小,所以常用最大对数似然作为目标函数,即:
L = ∑ w ∈ C l o g p ( w ∣ C o n t e x t ( w ) ) L=\sum_{w\in C}^{}logp\left ( w|Context\left ( w\right )\right ) L=wClogp(wContext(w))

如果将条件概率 p ( w ∣ C o n t e x t ( w ) ) p\left ( w|Context\left ( w\right )\right ) p(wContext(w))视为关于 w w w C o n t e x t ( w ) Context(w) Context(w)的函数,得到:
L = ∑ w ∈ C l o g F ( w , C o n t e x t ( w ) , θ ) L=\sum_{w\in C}^{}logF\left ( w,Context\left ( w\right ),\theta \right ) L=wClogF(w,Context(w),θ)

其中 θ \theta θ是待定参数集。因此一旦对上式进行优化得到最优参数集 θ ∗ \theta^* θ之后, F F F也就唯一确定。我们只需要存储 θ ∗ \theta^* θ,而不需要事先计算并保存所有的概率值了。如果选取合适的方法来构造函数 F F F,可使 θ \theta θ中参数的个数远小于N-gram模型中参数的个数。

神经网络语言模型(NNLM)

NNLM是上述目标函数的具象化实例,即用神经网络构建F,结构图如下:
在这里插入图片描述
训练样本: ( C o n t e x t ( w ) , w ) (Context(w), w) Context(w),w

投影层向量 X w X_w Xw:将 C o n t e x t ( w ) Context(w) Context(w)的词向量拼接在一起构成 X w X_w Xw(图中绿色实线),长度为 ( n − 1 ) ∗ m (n-1)*m (n1)m m m m为单个词向量长度

隐藏层向量 Z w Z_w Zw Z w = t a n h ( W X w + p ) Z_w=tanh(WX_w+p) Zw=tanh(WXw+p)

输出层向量y_w:维度为 N = ∣ D ∣ N=|D| N=D,即词典 D D D中词的个数, y w = U Z w + H X w + q y_w = UZ_w + HX_w + q yw=UZw+HXw+q

其中 H X w HX_w HXw为图中绿色虚线部分,将投影层向量直接接入输出层。

y w y_w yw做softmax归一化后,得到的 y w y_w yw的分量就是各词的概率,所以: p ( w ∣ C o n t e x t ( w ) ) = e y w , i w ∑ i = 1 N e y w , i p\left ( w|Context\left ( w\right )\right )=\frac{e^{y_{w,i_w}}}{\sum_{i=1}^{N}e^{y_{w,i}}} p(wContext(w))=i=1Neyw,ieyw,iw

对于NNLM,参数包括词向量 v ( m ) v(m) v(m)和神经网络参数 W 、 U 、 H 、 p 、 q W、U、H、p、q WUHpq,明显参数个数少了。

NNLM有以下优缺点:
1)优点
1.可以学习到词向量,词与词的相似度可以通过词向量来体现;
2.自带平滑化处理,无需额外处理。
2)缺点:计算量大。词向量的维度在 1 0 2 10^2 102量级;隐藏层节点维度在 1 0 2 10^2 102量级;输出层节点维度在 1 0 5 10^5 105量级。对于每个词的训练都要经过矩阵运算和softmax,在词数很大的情况下,计算量就会很大。

word2vec的改进

1)优化网络结构

输入层到投影层的计算从拼接变为按位求和,缩小了Xw的维度;删去隐藏层,极大地降低了模型的复杂度。优化后的网络结构如下图:
在这里插入图片描述
设词向量的维度为3,词典大小为4,因此投影层的节点数为3,输出层的节点数为4,示意图如下:
在这里插入图片描述
对上图而言,任意节点 y i y_i yi的计算公式为:
y i = ∑ j = 1 3 x j w i j = w i ⃗ T x ⃗ y_i=\sum_{j=1}^{3}x_j w_{ij}=\vec{w_i}^T\vec{x} yi=j=13xjwij=wi Tx
其中 x x x为上下文向量,这里的权重 w i w_i wi则为节点 y i y_i yi的向量。
y 1 y_1 y1为例, y 1 = w 1 ⃗ T x ⃗ = w 11 x 1 + w 12 x 2 + w 13 x 3 y_1=\vec{w_1}^T\vec{x}=w_{11}x_1+w_{12}x_2+w_{13}x_3 y1=w1 Tx =w11x1+w12x2+w13x3
所以 x → y x\rightarrow y xy既可以看成点积,也可以看成全连接层的神经网络。

这也导致了最终每个词会学到两个词向量,一个是作为上下文(背景词)时学到的;另一个是作为中心词的时候学到的。在实际应用中,使用skip-gram学到的中心词向量作为词的最终向量;CBOW则相反。

2)优化softmax

为了从y输出层得到词出现概率,最后需要一个softmax归一化,计算公式为:
p ( y i ∣ C o n t e x t ( w ) ) = e x p ( y i ) ∑ k = 1 N e x p ( y k ) = e x p ( w i ⃗ T x ⃗ ) ∑ k = 1 N e x p ( w k ⃗ T x ⃗ ) p\left ( y_i|Context\left ( w\right )\right )=\frac{exp\left ( y_i\right )}{\sum_{k=1}^{N}exp\left ( y_k\right )}\\ =\frac{exp\left ( \vec{w_i}^T\vec{x}\right )}{\sum_{k=1}^{N}exp\left ( \vec{w_k}^T\vec{x}\right )} p(yiContext(w))=k=1Nexp(yk)exp(yi)=k=1Nexp(wk Tx )exp(wi Tx )

这种计算方式问题在于分母计算量太大。对于语料库中的每个词,在训练时都需要遍历词典中所有的词。

因此,Word2vec提出了两种优化Softmax计算过程的方法,对应着Word2vec的两种框架,即:Hierarchical Softmax和Negative Sampling。

Hierarchical Softmax

Hierarchical softmax采用的树是二叉树。它将树上的叶子节点分配给词典里的词,而将从树根到叶子节点的路径上的每个非叶子结点都看作是二分类,路径上的二分类概率连乘的结果就是该叶子节点对应的词的概率。
在这里插入图片描述
例如已知 y 2 y_2 y2的编码为001,那么需要最大化从根节点到 y 2 y_2 y2的路径上的分类结果为0、0、1的概率。
在这里插入图片描述
一个full softmax需要一次计算所有的 W W W个词,而hierarchical softmax却只需要计算大约 l o g 2 W log_2W log2W(即树根到该叶子节点的路径长度)个词,大大减少了计算的复杂度。

实际应用中,Hierarchical Softmax采用是Huffman树而不是其他的二叉树,这是因为Huffman树对于高频词会赋予更短的编码,使得高频词离根节点距离更近,从而使得训练速度加快。

Negative Sampling

Negative Sampling采用随机负采样。
先回顾一下之前的softmax公式:
p ( y i ∣ C o n t e x t ( w ) ) = e x p ( w i ⃗ T x ⃗ ) ∑ k = 1 N e x p ( w k ⃗ T x ⃗ ) p\left ( y_i|Context\left ( w\right )\right )=\frac{exp\left ( \vec{w_i}^T\vec{x}\right )}{\sum_{k=1}^{N}exp\left ( \vec{w_k}^T\vec{x}\right )} p(yiContext(w))=k=1Nexp(wk Tx )exp(wi Tx )
我们要最大化 p ( y i ∣ C o n t e x t ( w ) ) p\left ( y_i|Context\left ( w\right )\right ) p(yiContext(w)),就相当于最大化分子,最小化分母。因为两个向量的点积越大,约等于两个向量余弦相似度越高。所以,尽量最大化当前词 w i ⃗ \vec{w_i} wi x ⃗ \vec{x} x 的相似度,最小化非当前词 w k ⃗ \vec{w_k} wk x ⃗ \vec{x} x 的相似度。

我们将分子的 ( C o n t e x t ( w ) , w i ) (Context(w),w_i) (Context(w),wi)看做一个正样本,将分母 ( C o n t e x t ( w ) , w k ) (Context(w),w_k) (Context(w),wk)看做负样本。但问题在于上述公式将所有词都看作了负样本,计算太耗时。所以,我们采用负采样的思路,每次只从词典随机选一些词作为当前词 w w w的负样本。

其实在做出随机选取负样本的动作之后,我们就已经抛弃了softmax这个函数所代表的归一化的意思了。也就代表我们不再关注语言模型的问题,而只关注求解词向量的问题。

选取负样本需要按照一定的概率分布,Word2vec使用的是 3 4 \frac{3}{4} 43次幂的 U n i g r a m   d i s t r i b u t i o n Unigram\ distribution Unigram distribution。概率分布公式如下:
p ( w ) = [ c o u n t ( w ) ] 3 4 ∑ u ∈ D [ c o u n t ( u ) ] 3 4 p\left ( w\right )=\frac{\left [ count\left ( w\right )\right ]^{\frac{3}{4}}}{\sum_{u\in D}^{}\left [ count\left ( u\right )\right ]^{\frac{3}{4}}} p(w)=uD[count(u)]43[count(w)]43

基于Hierarchical Softmax的CBOW

网络结构:

  • 上下文 C o n t e x t ( w ) Context(w) Context(w):由 w w w前后各 c c c个词构成
  • 输入层:包含 2 c 2c 2c个词的词向量
  • 投影层:将输入的 2 c 2c 2c个词做累加求和
    X w = ∑ i = 1 2 c v ( C o n t e x t ( w ) i ) ∈ R m X_w=\sum_{i=1}^{2c}v\left ( Context\left ( w\right )_i\right )\in R^m Xw=i=12cv(Context(w)i)Rm
  • 输出层:输出层对应的是一棵Huffman数。该Huffman树以词典中的词为叶子节点,以各词在语料中出现的次数当做权值构造。

在这里插入图片描述
即此时上图中 [ x 1 , x 2 , x 3 ] [x_1,x_2,x_3] [x1,x2,x3]是由上下文词向量累加求和得到。

从根节点出发到某个叶子节点的路径上,每次分支都可视为进行了一次二分类。默认左边(编码为0)是负类,右边(编码为1)是正类。
基于Hierarchical Softmax的CBOW与NNLM的区别:

  • 输入层到投影层:CBOW是累加,NNLM是拼接
  • 隐藏层:CBOW无隐藏层,NNLM有
  • 输出层:CBOW是树形结构,NNLM是线性结构

梯度计算

符号定义:

  • p w p^w pw:从根节点到 w w w对应的叶子节点的路径
  • l w l^w lw:路径 p w p^w pw上包含的节点的个数
  • p 1 w , p 2 w , . . . , p l w w p_1^w,p_2^w,...,p_{l^w}^w p1w,p2w,...,plww:路径 p w p^w pw上对应的节点
  • d 2 w , d 3 w , . . . , d l w w ∈ { 0 , 1 } d_2^w,d_3^w,...,d_{l^w}^w\in\left \{0,1\right \} d2w,d3w,...,dlww{0,1}:路径上的节点对应的Huffman编码,根节点不对应编码
  • θ 1 w , θ 2 w , . . . , θ l w − 1 w ∈ R m \theta_1^w,\theta_2^w,...,\theta_{l^w-1}^w\in R^{m} θ1w,θ2w,...,θlw1wRm:路径上的非叶子对应的词向量

整体思路:
对于词典 D D D中的任意词 w w w,Huffman树中必存在一条从根节点到词 w w w对应叶子节点的路径 p w p^w pw。路径 p w p^w pw上存在 l w − 1 l^w-1 lw1个分支,将每个分支看做一次二分类,每次分类产生一个概率,将这些概率连乘得到 p ( w ∣ C o n t e x t ( w ) ) p(w|Context(w)) p(wContext(w))

p ( w ∣ C o n t e x t ( w ) ) = ∏ j = 2 l w p ( d j w ∣ X w , θ j − 1 w ) p\left ( w|Context\left ( w\right )\right )=\prod_{j=2}^{l^{w}}p\left ( d_{j}^{w}|X_w,\theta_{j-1}^{w}\right ) p(wContext(w))=j=2lwp(djwXw,θj1w)

其中,
p ( d j w ∣ X w , θ j − 1 w ) = { σ ( X w T θ j − 1 w ) if  d j w = 0 1 − σ ( X w T θ j − 1 w ) if  d j w = 1 = [ σ ( X w T θ j − 1 w ) ] 1 − d j w ⋅ [ 1 − σ ( X w T θ j − 1 w ) ] d j w p\left ( d_{j}^{w}|X_w,\theta_{j-1}^{w}\right )=

{σ(XwTθj1w)if djw=01σ(XwTθj1w)if djw=1
\\ =\left [ \sigma \left ( X_{w}^{T}\theta _{j-1}^{w}\right )\right ]^{1-d_{j}^{w}}\cdot \left [ 1-\sigma \left ( X_{w}^{T}\theta _{j-1}^{w}\right )\right ]^{d_{j}^{w}} p(djwXw,θj1w)={σ(XwTθj1w)1σ(XwTθj1w)if djw=0if djw=1=[σ(XwTθj1w)]1djw[1σ(XwTθj1w)]djw

带入最大似然公式 L = ∑ w ∈ C l o g p ( w ∣ C o n t e x t ( w ) ) L=\sum_{w\in C}^{}logp\left ( w|Context\left ( w\right )\right ) L=wClogp(wContext(w)),得到:

L = ∑ w ∈ C l o g ∏ j = 2 l w { [ σ ( X w T θ j − 1 w ) ] 1 − d j w ⋅ [ 1 − σ ( X w T θ j − 1 w ) ] d j w } = ∑ w ∈ C ∑ j = 2 l w { ( 1 − d j w ) ⋅ l o g [ σ ( X w T θ j − 1 w ) ] + d j w ⋅ l o g [ 1 − σ ( X w T θ j − 1 w ) ] } L=\sum_{w\in C}^{}log\prod_{j=2}^{l^w}\left \{\left [ \sigma \left ( X_{w}^{T}\theta _{j-1}^{w}\right )\right ]^{1-d_{j}^{w}}\cdot \left [ 1-\sigma \left ( X_{w}^{T}\theta _{j-1}^{w}\right )\right ]^{d_{j}^{w}}\right \}\\ =\sum_{w\in C}^{}\sum_{j=2}^{l^w}\left \{\left ( 1-d_j^w\right )\cdot log\left [ \sigma \left ( X_{w}^{T}\theta _{j-1}^{w}\right )\right ]+d_j^w\cdot log\left [ 1-\sigma \left ( X_{w}^{T}\theta _{j-1}^{w}\right )\right ]\right \} L=wClogj=2lw{[σ(XwTθj1w)]1djw[1σ(XwTθj1w)]djw}=wCj=2lw{(1djw)log[σ(XwTθj1w)]+djwlog[1σ(XwTθj1w)]}

令:
L ( w , j ) = ( 1 − d j w ) ⋅ l o g [ σ ( X w T θ j − 1 w ) ] + d j w ⋅ l o g [ 1 − σ ( X w T θ j − 1 w ) ] L\left ( w,j\right )=\left ( 1-d_j^w\right )\cdot log\left [ \sigma \left ( X_{w}^{T}\theta _{j-1}^{w}\right )\right ]+d_j^w\cdot log\left [ 1-\sigma \left ( X_{w}^{T}\theta _{j-1}^{w}\right )\right ] L(w,j)=(1djw)log[σ(XwTθj1w)]+djwlog[1σ(XwTθj1w)]

首先对 θ \theta θ求导:
∂ L ( w , j ) ∂ θ j − 1 w = ∂ ∂ θ j − 1 w { ( 1 − d j w ) ⋅ l o g [ σ ( X w T θ j − 1 w ) ] + d j w ⋅ l o g [ 1 − σ ( X w T θ j − 1 w ) ] } = ( 1 − d j w ) [ 1 − σ ( X w T θ j − 1 w ) ] X w − d j w σ ( X w T θ j − 1 w ) X w = { ( 1 − d j w ) [ 1 − σ ( X w T θ j − 1 w ) ] − d j w σ ( X w T θ j − 1 w ) } X w = [ 1 − d j w − σ ( X w T θ j − 1 w ) ] X w \frac{\partial L\left ( w,j\right )}{\partial \theta _{j-1}^{w}}=\frac{\partial }{\partial \theta _{j-1}^{w}}\left \{\left ( 1-d_j^w\right )\cdot log\left [ \sigma \left ( X_{w}^{T}\theta _{j-1}^{w}\right )\right ]+d_j^w\cdot log\left [ 1-\sigma \left ( X_{w}^{T}\theta _{j-1}^{w}\right )\right ]\right \}\\ =\left ( 1-d_j^w\right )\left [ 1-\sigma \left ( X_{w}^{T}\theta _{j-1}^{w}\right )\right ]X_w-d_j^w\sigma \left ( X_{w}^{T}\theta _{j-1}^{w}\right )X_w\\ =\left \{\left ( 1-d_j^w\right )\left [ 1-\sigma \left ( X_{w}^{T}\theta _{j-1}^{w}\right )\right ]-d_j^w\sigma \left ( X_{w}^{T}\theta _{j-1}^{w}\right )\right \}X_w\\ =\left [ 1-d_j^w-\sigma \left ( X_{w}^{T}\theta _{j-1}^{w}\right )\right ]X_w θj1wL(w,j)=θj1w{(1djw)log[σ(XwTθj1w)]+djwlog[1σ(XwTθj1w)]}=(1djw)[1σ(XwTθj1w)]Xwdjwσ(XwTθj1w)Xw={(1djw)[1σ(XwTθj1w)]djwσ(XwTθj1w)}Xw=[1djwσ(XwTθj1w)]Xw

同理,
∂ L ( w , j ) ∂ X w = [ 1 − d j w − σ ( X w T θ j − 1 w ) ] θ j − 1 w \frac{\partial L\left ( w,j\right )}{\partial X_w}=\left [ 1-d_j^w-\sigma \left ( X_{w}^{T}\theta _{j-1}^{w}\right )\right ]\theta _{j-1}^{w} XwL(w,j)=[1djwσ(XwTθj1w)]θj1w

在对词向量进行更新时,因为 X w X_w Xw表示的是 C o n t e x t ( w ) Context(w) Context(w)中各词词向量的叠加,所以 X w X_w Xw的更新也要贡献到 C o n t e x t ( w ) Context(w) Context(w)中的每个词向量上去。
v ( w ˉ ) : = v ( w ˉ ) + η ∑ j = 2 l w ∂ L ( w , j ) ∂ X w , w ˉ ∈ C o n t e x t ( w ) v\left ( \bar{w}\right ):=v\left ( \bar{w}\right )+\eta \sum_{j=2}^{l^w}\frac{\partial L\left ( w,j\right )}{\partial X_w},\bar{w}\in Context\left ( w\right ) v(wˉ):=v(wˉ)+ηj=2lwXwL(w,j),wˉContext(w)

基于Negative Sampling的CBOW

梯度计算

符号定义:
设关于 w w w的负样本子集 N E G ( w ) NEG(w) NEG(w),并且定义了对于词典 D D D中的任意词 w ′ {w}' w,都有
L w ( w ′ ) = { 1  if  w ′ = w 0  if  w ′ ≠ w L^{w}\left ( {w}'\right )=

{1 if w=w0 if ww
Lw(w)={1 if w=w0 if w=w

整体思路:
对于一个给定的正样本 ( C o n t e x t ( w ) , w ) (Context(w),w) (Context(w),w),我们希望最大化:
g ( w ) = ∏ u ∈ { w } ∪ N E G ( w ) p ( u ∣ C o n t e x t ( w ) ) g\left ( w\right )=\prod_{u\in \left \{w\right \}\cup NEG\left ( w\right )}^{}p\left ( u|Context\left ( w\right )\right ) g(w)=u{w}NEG(w)p(uContext(w))
其中,
p ( u ∣ C o n t e x t ( w ) ) = { σ ( X w T θ u )   if  L w ( u ) = 1 1 − σ ( X w T θ u )   if  L w ( u ) = 0 = [ σ ( X w T θ u ) ] L w ( u ) ⋅ [ 1 − σ ( X w T θ u ) ] 1 − L w ( u ) p\left ( u|Context\left ( w\right )\right )=

{σ(XwTθu) if Lw(u)=11σ(XwTθu) if Lw(u)=0
\\ =\left [ \sigma \left ( X_{w}^{T}\theta ^{u}\right )\right ]^{L^w\left ( u\right )}\cdot \left [ 1-\sigma \left ( X_{w}^{T}\theta ^{u}\right )\right ]^{1-L^w\left ( u\right )} p(uContext(w))={σ(XwTθu) 1σ(XwTθu) if Lw(u)=1if Lw(u)=0=[σ(XwTθu)]Lw(u)[1σ(XwTθu)]1Lw(u)

所以,
g ( w ) = σ ( X w T θ w ) ∏ u ∈ N E G ( w ) [ 1 − σ ( X w T θ w ) ] g\left ( w\right )=\sigma \left ( X_{w}^{T}\theta ^{w}\right )\prod_{u\in NEG\left ( w\right )}^{}\left [ 1-\sigma \left ( X_{w}^{T}\theta ^{w}\right )\right ] g(w)=σ(XwTθw)uNEG(w)[1σ(XwTθw)]

对于给定语料库 C C C来说,整体的优化目标即为最大化 G = ∏ w ∈ C g ( w ) G=\prod_{w\in C}^{}g\left ( w\right ) G=wCg(w)。则 L o s s Loss Loss函数为:

L = l o g G = l o g ∏ w ∈ C g ( w ) = ∑ w ∈ C l o g   g ( w ) = ∑ w ∈ C l o g ∏ u ∈ { w } ∪ N E G ( w ) { [ σ ( X w T θ u ) ] L w ( u ) ⋅ [ 1 − σ ( X w T θ u ) ] 1 − L w ( u ) } = ∑ w ∈ C ∑ u ∈ { w } ∪ N E G ( w ) { L w ( u ) ⋅ l o g [ σ ( X w T θ u ) ] + [ 1 − L w ( u ) ] ⋅ l o g [ 1 − σ ( X w T θ u ) ] } L=logG=log\prod_{w\in C}^{}g\left ( w\right )=\sum_{w\in C}^{}log\ g\left ( w\right )\\ =\sum_{w\in C}^{}log\prod_{u\in \left \{w\right \}\cup NEG\left ( w\right )}^{}\left \{\left [ \sigma \left ( X_{w}^{T}\theta ^{u}\right )\right ]^{L^w\left ( u\right )}\cdot \left [ 1-\sigma \left ( X_{w}^{T}\theta ^{u}\right )\right ]^{1-L^w\left ( u\right )}\right \}\\ =\sum_{w\in C}^{}\sum_{u\in \left \{w\right \}\cup NEG\left ( w\right )}^{}\left \{L^w\left ( u\right )\cdot log\left [ \sigma \left ( X_{w}^{T}\theta ^{u}\right )\right ]+\left [ 1-L^w\left ( u\right )\right ]\cdot log\left [1- \sigma \left ( X_{w}^{T}\theta ^{u}\right )\right ]\right \} L=logG=logwCg(w)=wClog g(w)=wClogu{w}NEG(w){[σ(XwTθu)]Lw(u)[1σ(XwTθu)]1Lw(u)}=wCu{w}NEG(w){Lw(u)log[σ(XwTθu)]+[1Lw(u)]log[1σ(XwTθu)]}

令:
L ( w , u ) = L w ( u ) ⋅ l o g [ σ ( X w T θ u ) ] + [ 1 − L w ( u ) ] ⋅ l o g [ 1 − σ ( X w T θ u ) ] L\left ( w,u\right )=L^w\left ( u\right )\cdot log\left [ \sigma \left ( X_{w}^{T}\theta ^{u}\right )\right ]+\left [ 1-L^w\left ( u\right )\right ]\cdot log\left [1- \sigma \left ( X_{w}^{T}\theta ^{u}\right )\right ] L(w,u)=Lw(u)log[σ(XwTθu)]+[1Lw(u)]log[1σ(XwTθu)]

对上式求导,得:

∂ L ( w , u ) ∂ θ u = ∂ ∂ θ u { L w ( u ) ⋅ l o g [ σ ( X w T θ u ) ] + [ 1 − L w ( u ) ] ⋅ l o g [ 1 − σ ( X w T θ u ) ] } = L w ( u ) [ 1 − σ ( X w T θ u ) ] X w − [ 1 − L w ( u ) ] σ ( X w T θ u ) X w = [ L w ( u ) − σ ( X w T θ u ) ] X w \frac{\partial L\left ( w,u\right )}{\partial \theta ^{u}}=\frac{\partial }{\partial \theta ^{u}}\left \{L^w\left ( u\right )\cdot log\left [ \sigma \left ( X_{w}^{T}\theta ^{u}\right )\right ]+\left [ 1-L^w\left ( u\right )\right ]\cdot log\left [1- \sigma \left ( X_{w}^{T}\theta ^{u}\right )\right ]\right \}\\ =L^w\left ( u\right )\left [ 1-\sigma \left ( X_{w}^{T}\theta ^{u}\right )\right ]X_w-\left [ 1-L^w\left ( u\right )\right ]\sigma \left ( X_{w}^{T}\theta ^{u}\right )X_w\\ =\left [ L^w\left ( u\right )-\sigma \left ( X_{w}^{T}\theta ^{u}\right )\right ]X_w θuL(w,u)=θu{Lw(u)log[σ(XwTθu)]+[1Lw(u)]log[1σ(XwTθu)]}=Lw(u)[1σ(XwTθu)]Xw[1Lw(u)]σ(XwTθu)Xw=[Lw(u)σ(XwTθu)]Xw

同理,
∂ L ( w , u ) ∂ X w = [ L w ( u ) − σ ( X w T θ u ) ] θ u \frac{\partial L\left ( w,u\right )}{\partial X_w}=\left [ L^w\left ( u\right )-\sigma \left ( X_{w}^{T}\theta ^{u}\right )\right ]\theta ^{u} XwL(w,u)=[Lw(u)σ(XwTθu)]θu

所以,词向量的更新为:

v ( w ′ ) : = v ( w ′ ) + η ∑ u ∈ { w } ∪ N E G ( w ) ∂ L ( w , u ) ∂ X w , w ′ ∈ C o n t e x t ( w ) v\left ( {w}'\right ):=v\left ( {w}'\right )+\eta \sum_{u\in \left \{w\right \}\cup NEG\left ( w\right )}^{}\frac{\partial L\left ( w,u\right )}{\partial X_w},{w}'\in Context\left ( w\right ) v(w):=v(w)+ηu{w}NEG(w)XwL(w,u),wContext(w)

基于Hierarchical Softmax的skip-gram

skip-gram模型是已知当前词 w w w,对其上下文 C o n t e x t ( w ) Context(w) Context(w)中的词进行预测。

网络结构

  • 输入层:当前样本的中心词 w w w的词向量
  • 投影层:没作用
  • 输出层:类似CBOW模型,也是一颗Huffman树
    在这里插入图片描述

即此时上图中 [ x 1 , x 2 , x 3 ] [x_1,x_2,x_3] [x1,x2,x3]是由上下文词向量累加求和得到。

梯度计算

p ( C o n t e x t ( w ) ∣ w ) = ∏ u ∈ C o n t e x t ( w ) p ( u ∣ w ) p\left ( Context\left ( w\right )|w\right )=\prod_{u\in Context\left ( w\right )}^{}p\left ( u|w\right ) p(Context(w)w)=uContext(w)p(uw)

基于Hierarchical Softmax,有:

p ( u ∣ w ) = ∏ j = 2 l w p ( d j u ∣ v ( w ) , θ j − 1 u ) = ∏ j = 2 l w [ σ ( v ( w ) T θ j − 1 u ) ] 1 − d j u ⋅ [ 1 − σ ( v ( w ) T θ j − 1 u ) ] d j u p\left ( u|w\right )=\prod_{j=2}^{l^w}p\left ( d_{j}^{u}|v\left ( w\right ),\theta _{j-1}^{u}\right )\\ =\prod_{j=2}^{l^w}\left [ \sigma \left ( v\left ( w\right )^T\theta _{j-1}^{u}\right )\right ]^{1-d_{j}^{u}}\cdot \left [ 1-\sigma \left ( v\left ( w\right )^T\theta _{j-1}^{u}\right )\right ]^{d_{j}^{u}} p(uw)=j=2lwp(djuv(w),θj1u)=j=2lw[σ(v(w)Tθj1u)]1dju[1σ(v(w)Tθj1u)]dju

带入最大似然公式,得:

L = ∑ w ∈ C l o g ∏ u ∈ C o n t e x t ( w ) ∏ j = 2 l w { [ σ ( v ( w ) T θ j − 1 u ) ] 1 − d j u ⋅ [ 1 − σ ( v ( w ) T θ j − 1 u ) ] d j u } = ∑ w ∈ C l o g ∑ u ∈ C o n t e x t ( w ) ∑ j = 2 l w { ( 1 − d j u ) ⋅ l o g [ σ ( v ( w ) T θ j − 1 u ) ] + d j u ⋅ l o g [ 1 − σ ( v ( w ) T θ j − 1 u ) ] } L=\sum_{w\in C}^{}log\prod_{u\in Context\left ( w\right )}^{}\prod_{j=2}^{l^w}\left \{\left [ \sigma \left ( v\left ( w\right )^T\theta _{j-1}^{u}\right )\right ]^{1-d_{j}^{u}}\cdot \left [ 1-\sigma \left ( v\left ( w\right )^T\theta _{j-1}^{u}\right )\right ]^{d_{j}^{u}}\right \}\\ =\sum_{w\in C}^{}log\sum_{u\in Context\left ( w\right )}^{}\sum_{j=2}^{l^w}\left \{\left ( 1-d_{j}^{u}\right )\cdot log\left [ \sigma \left ( v\left ( w\right )^T\theta _{j-1}^{u}\right )\right ]+d_{j}^{u}\cdot log\left [ 1-\sigma \left ( v\left ( w\right )^T\theta _{j-1}^{u}\right )\right ]\right \} L=wCloguContext(w)j=2lw{[σ(v(w)Tθj1u)]1dju[1σ(v(w)Tθj1u)]dju}=wCloguContext(w)j=2lw{(1dju)log[σ(v(w)Tθj1u)]+djulog[1σ(v(w)Tθj1u)]}

令:
L ( w , u , j ) = ( 1 − d j u ) ⋅ l o g [ σ ( v ( w ) T θ j − 1 u ) ] + d j u ⋅ l o g [ 1 − σ ( v ( w ) T θ j − 1 u ) ] L\left ( w,u,j\right )=\left ( 1-d_{j}^{u}\right )\cdot log\left [ \sigma \left ( v\left ( w\right )^T\theta _{j-1}^{u}\right )\right ]+d_{j}^{u}\cdot log\left [ 1-\sigma \left ( v\left ( w\right )^T\theta _{j-1}^{u}\right )\right ] L(w,u,j)=(1dju)log[σ(v(w)Tθj1u)]+djulog[1σ(v(w)Tθj1u)]

对上式求导,得:

∂ L ( w , u , j ) ∂ θ j − 1 u = ∂ ∂ θ j − 1 u { ( 1 − d j u ) ⋅ l o g [ σ ( v ( w ) T θ j − 1 u ) ] + d j u ⋅ l o g [ 1 − σ ( v ( w ) T θ j − 1 u ) ] } = ( 1 − d j u ) [ 1 − σ ( v ( w ) T θ j − 1 u ) ] v ( w ) − d j u σ ( v ( w ) T θ j − 1 u ) v ( w ) = { ( 1 − d j u ) [ 1 − σ ( v ( w ) T θ j − 1 u ) ] − d j u σ ( v ( w ) T θ j − 1 u ) } v ( w ) = [ 1 − d j u − σ ( v ( w ) T θ j − 1 u ) ] v ( w ) \frac{\partial L\left ( w,u,j\right )}{\partial \theta _{j-1}^{u}}=\frac{\partial }{\partial \theta _{j-1}^{u}}\left \{\left ( 1-d_{j}^{u}\right )\cdot log\left [ \sigma \left ( v\left ( w\right )^T\theta _{j-1}^{u}\right )\right ]+d_{j}^{u}\cdot log\left [ 1-\sigma \left ( v\left ( w\right )^T\theta _{j-1}^{u}\right )\right ]\right \}\\ =\left ( 1-d_{j}^{u}\right )\left [ 1-\sigma \left ( v\left ( w\right )^T\theta _{j-1}^{u}\right )\right ]v\left ( w\right )-d_{j}^{u}\sigma \left ( v\left ( w\right )^T\theta _{j-1}^{u}\right )v\left ( w\right )\\ =\left \{\left ( 1-d_{j}^{u}\right )\left [ 1-\sigma \left ( v\left ( w\right )^T\theta _{j-1}^{u}\right )\right ]-d_{j}^{u}\sigma \left ( v\left ( w\right )^T\theta _{j-1}^{u}\right )\right \}v\left ( w\right )\\ =\left [ 1-d_{j}^{u}-\sigma \left ( v\left ( w\right )^T\theta _{j-1}^{u}\right )\right ]v\left ( w\right ) θj1uL(w,u,j)=θj1u{(1dju)log[σ(v(w)Tθj1u)]+djulog[1σ(v(w)Tθj1u)]}=(1dju)[1σ(v(w)Tθj1u)]v(w)djuσ(v(w)Tθj1u)v(w)={(1dju)[1σ(v(w)Tθj1u)]djuσ(v(w)Tθj1u)}v(w)=[1djuσ(v(w)Tθj1u)]v(w)

同理,

∂ L ( w , u , j ) ∂ v ( w ) = [ 1 − d j u − σ ( v ( w ) T θ j − 1 u ) ] θ j − 1 u \frac{\partial L\left ( w,u,j\right )}{\partial v\left ( w\right )}=\left [ 1-d_{j}^{u}-\sigma \left ( v\left ( w\right )^T\theta _{j-1}^{u}\right )\right ]\theta _{j-1}^{u} v(w)L(w,u,j)=[1djuσ(v(w)Tθj1u)]θj1u

更新公式如下:
θ j − 1 u : = θ j − 1 u + η [ 1 − d j u − σ ( v ( w ) T θ j − 1 u ) ] v ( w ) \theta _{j-1}^{u}:=\theta _{j-1}^{u}+\eta \left [ 1-d_{j}^{u}-\sigma \left ( v\left ( w\right )^T\theta _{j-1}^{u}\right )\right ]v\left ( w\right ) θj1u:=θj1u+η[1djuσ(v(w)Tθj1u)]v(w)

v ( w ) : = v ( w ) + η ∑ u ∈ C o n t e x t ( w ) ∑ j = 2 l w [ 1 − d j u − σ ( v ( w ) T θ j − 1 u ) ] θ j − 1 u v\left ( w\right ):=v\left ( w\right )+\eta \sum_{u\in Context\left ( w\right )}^{}\sum_{j=2}^{l^w}\left [ 1-d_{j}^{u}-\sigma \left ( v\left ( w\right )^T\theta _{j-1}^{u}\right )\right ]\theta _{j-1}^{u} v(w):=v(w)+ηuContext(w)j=2lw[1djuσ(v(w)Tθj1u)]θj1u

基于Negative Sampling的Skip-gram

略。

总结

word2vec的发展历程可以概括为:统计语言模型–>N-gram–>NNLM一类模型–>word2vec。

word2vec有两种优化softmax归一化的方式,一种是Hierarchical Softmax;另一种是Negative Sampling。

word2vec包含两种模型:一种是skip-gram,基于中心词预测背景词;另一种是CBOW,基于背景词预测中心词。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/350368
推荐阅读
相关标签
  

闽ICP备14008679号