CS224n-2017(二)Word2Vec 之 negative sampling 和 hierarchical softmax

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhq9695/article/details/86527539

这是斯坦福大学2017年课程CS224n: Natural Language Processing with Deep Learning
笔者学习完之后,简单做个笔记
如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~

0. 前言

本篇中,我们将介绍两种训练模型的方法:

  1. negative sampling
  2. hierarchical softmax

1. negative sampling

由之前的计算得知,每次更新参数需要遍历词汇表 V V 中的所有词汇,时间复杂度为 O ( V ) O(\left|V\right|)

替代遍历整个词汇表,可以仅从一个噪声分布 P n ( w ) P_n(w) 中采样,这个分布与词汇表的分布相匹配。

以下以skip-gram为例子:

考虑一对 ( w , c ) (w,c) w w 表示中间单词, c c 表示上下文单词,如果 ( w , c ) (w,c) 在语料库中出现,则表示为 P ( D = 1 w , c ) P(D=1\mid w,c) ,如果 ( w , c ) (w,c) 在语料库中没有出现,则表示为 P ( D = 0 w , c ) P(D=0\mid w,c) ,其中:
P ( D = 1 w , c , θ ) = σ ( u c T v w ) = 1 1 + exp ( u c T v w ) P(D=1\mid w,c,\theta)=\sigma(u_c^Tv_w)=\frac{1}{1+\exp(-u_c^Tv_w)}

优化目标为最大化如果 ( w , c ) (w,c) 出现在语料库中并且确实出现的概率和如果 ( w , c ) (w,c) 没有出现在语料库中并且确实没有出现的概率
θ = a r g m a x θ ( w , c ) D P ( D = 1 w , c , θ ) ( w , c ) D ~ P ( D = 0 w , c , θ ) = a r g m a x θ ( w , c ) D P ( D = 1 w , c , θ ) ( w , c ) D ~ ( 1 P ( D = 1 w , c , θ ) ) = a r g m a x θ ( w , c ) D log P ( D = 1 w , c , θ ) + ( w , c ) D ~ log ( 1 P ( D = 1 w , c , θ ) ) = a r g m a x θ ( w , c ) D log 1 1 + exp ( u c T v w ) + ( w , c ) D ~ log ( 1 1 1 + exp ( u c T v w ) ) = a r g m a x θ ( w , c ) D log 1 1 + exp ( u c T v w ) + ( w , c ) D ~ log 1 1 + exp ( u c T v w ) \begin{aligned} \theta &= argmax_\theta \prod_{(w,c)\in D}P(D=1\mid w,c,\theta)\prod_{(w,c)\in \tilde{D}}P(D=0\mid w,c,\theta)\\ &= argmax_\theta \prod_{(w,c)\in D}P(D=1\mid w,c,\theta)\prod_{(w,c)\in \tilde{D}}(1-P(D=1\mid w,c,\theta))\\ &= argmax_\theta \sum_{(w,c)\in D} \log P(D=1\mid w,c,\theta)+\sum_{(w,c)\in \tilde{D}}\log(1-P(D=1\mid w,c,\theta))\\ &= argmax_\theta \sum_{(w,c)\in D} \log \frac{1}{1+\exp(-u_c^Tv_w)}+\sum_{(w,c)\in \tilde{D}}\log(1-\frac{1}{1+\exp(-u_c^Tv_w)})\\ &= argmax_\theta \sum_{(w,c)\in D} \log \frac{1}{1+\exp(-u_c^Tv_w)}+\sum_{(w,c)\in \tilde{D}}\log\frac{1}{1+\exp(u_c^Tv_w)}\\ \end{aligned}

其中, θ \theta 表示矩阵 V \boldsymbol{V} U \boldsymbol{U} D D 表示语料库, D ~ \tilde{D} 表示错误的语料库,可以通过随机采样获得。

对于skip-gram,新的损失函数表示为:
log σ ( u c m + j T v c ) k = 1 K log σ ( u ~ k T v c ) -\log\sigma(u_{c-m+j}^Tv_c)-\sum_{k=1}^K\log\sigma(-\tilde{u}_k^Tv_c)
对于CBOW,新的损失函数表示为:
log σ ( u c T v ^ ) k = 1 K log σ ( u ~ k T v ^ ) -\log\sigma(u_{c}^T\hat{v})-\sum_{k=1}^K\log\sigma(-\tilde{u}_k^T\hat{v})

2. hierarchical softmax

负采样对于频繁词低维度的向量效果更好,而分层softmax对于不频繁的词效果更好。

分层softmax采用二叉树的表示,每个叶子节点表示一个单词,仅有唯一的路径从树根到叶子节点,其余每个节点都对应着模型需要学习的一个向量。

输出单词的概率定义为从树根随机行走到此叶子节点的概率,计算代价为路径的长度 O ( log ( V ) ) O(\log(\left|V\right|))

在分层softmax中,每个单词只有一种向量表示。

如下图所示(图源:CS224n-2017):

分层softmax的符号定义如下:

  • L ( w ) L(w) :从树根到叶子节点 w w 所经过的节点,例如 L ( w 2 ) = 3 L(w_2)=3
  • n ( w , i ) n(w,i) :叶子节点 w w 路径上的第 i i 的节点,例如 n ( w , 1 ) n(w,1) 是树根
  • v n ( w , i ) v_{n(w,i)} :节点 n ( w , i ) n(w,i) 的向量
  • c h ( n ) ch(n) :节点 n n 的孩子节点(一般指左子节点)

给出向量 w i w_i ,预测单词 w w 的概率表示为:
P ( w w i ) = j = 1 L ( w ) σ ( [ n ( w , j + 1 ) = c h ( n ( w , j ) ) ] v n ( w , j ) T v w i ) [ x ] = { 1   i f   x   i s   t r u e 1   o t h e r w i s e P(w\mid w_i)=\prod_{j=1}^{L(w)}\sigma([n(w,j+1)=ch(n(w,j))]\cdot v_{n(w,j)}^Tv_{w_i})\\ [x]=\left\{ \begin{aligned} & 1\ if\ x\ is\ true\\ & -1\ otherwise \end{aligned} \right.
其中,因为 c h ( n ( w , j ) ) ch(n(w,j)) 始终代表着 n ( w , j ) n(w,j) 的左子节点,而路径上的 n ( w , j + 1 ) n(w,j+1) 有可能是右子节点,所以相当于随机行走的概率判断,满足:
σ ( v n T v w i ) + σ ( v n T v w i ) = 1 w = 1 V P ( w w i ) = 1 \sigma(v_n^Tv_{w_i})+\sigma(-v_n^Tv_{w_i})=1\\ \sum_{w=1}^{\left|V\right|}P(w\mid w_i)=1

例如:
P ( w 2 w i ) = p ( n ( w 2 , 1 ) , l e f t ) p ( n ( w 2 , 2 ) , l e f t ) p ( n ( w 2 , 3 ) , r i g h t ) = σ ( v n ( w 2 , 1 ) T v w i ) σ ( v n ( w 2 , 2 ) T v w i ) σ ( v n ( w 2 , 3 ) T v w i ) \begin{aligned} P(w_2\mid w_i)&=p(n(w_2,1),left)\cdot p(n(w_2,2),left)\cdot p(n(w_2,3),right)\\ &=\sigma(v_{n(w_2,1)}^Tv_{w_i})\cdot \sigma(v_{n(w_2,2)}^Tv_{w_i})\cdot \sigma(-v_{n(w_2,3)}^Tv_{w_i}) \end{aligned}

通过最大负对数似然训练模型,更新从树根到叶子节点路径上每个节点的向量。


如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~

猜你喜欢

转载自blog.csdn.net/zhq9695/article/details/86527539