当前位置:   article > 正文

深入理解深度学习——Word Embedding(四):Skip-Gram模型的数学原理

skip-gram模型

分类目录:《深入理解深度学习》总目录
相关文章:
· Word Embedding(一):word2vec
· Word Embedding(二):连续词袋模型(CBOW, The Continuous Bag-of-Words Model)
· Word Embedding(三):Skip-Gram模型
· Word Embedding(四):Skip-Gram模型的数学原理
· Word Embedding(五):基于哈夫曼树(Huffman Tree)的Hierarchical Softmax优化
· Word Embedding(六):负采样(Negative Sampling)优化


我们在《Word Embedding(三):Skip-Gram模型》中简单介绍了Skip-Gram的原理及架构,至于Skip-Gram如何把输入转换为词嵌入、其间有哪些关键点、面对大语料库可能出现哪些瓶颈等,并没有展开说明。而了解Skip-Gram的具体实现过程,有助于更好地了解word2vec以及其他预训练模型,如ELMo、BERT、ALBERT等。所以,本文将详细介绍Skip-Gram的实现过程,加深读者对其原理与实现的理解。对于CBOW模型,其实现机制与Skip-Gram模型类似,后续文章将不再赘述。

预处理语料库
text = "natural language processing and machine learning is fun and exciting"
corpus = [[word.lower() for word in text.split()]]
  • 1
  • 2

这个语料库就是一句话,共10个单词,其中and出现两次,共有9个不同单词。因单词较少,这里暂不设置停用词,而是根据空格对语料库进行分词,分词结果如下:

["natural", "language", "processing", "and", "machine","learning", "is", "fun","and", "exciting"]
  • 1
Skip-Gram模型架构图

使用Skip-Gram模型,设置window-size=2,以目标词确定其上下文,即根据目标词预测其左边2个和右边2个单词。具体模型如下图所示:
Skip-Gram模型架构图
在上图中,这里语料库只有9个单词V-dim=9,词嵌入维度为10,即N-dim=10,且C=4(该值为2*window-size)。

如果用矩阵来表示上图,可写成如下图所示的形式:
Skip-Gram模型矩阵
实际嵌入过程中,涉及的单词量较大,本文为便于说明,仅使用一句话作为语料。在一些文章中,又将矩阵 W V × N W_{V\times N} WV×N称为查找表(Lookup Table)。

生成中心词及其上下文的数据集

根据语料库及window-size,生成中心词与预测上下文的数据集,如下图所示:
中心词与预测上下文的数据集描述

图中共有10对数据, X k X_k Xk对应的词为中心词,其左边或右边的词为上下文。

生成训练数据

为便于训练word2vec模型,首先需要把各单词数值化。这里把每个单词转换为独热编码。在前面提到的语料库中,上图显示了10对数据,每个窗口都由中心词及其上下文单词组成。把上图中的每个词转换为独热编码后,可以得到如下图所示的训练数据集:
训练数据集

Skip-Gram模型的正向传播

上述步骤完成了对数据的预处理,接下来开始数据的正向传播,包括输入层到隐藏层、隐藏层到输出层。

从输入层到隐藏层,用图来表示就是输入向量与权重矩阵 W 1 W_1 W1的内积,如下图所示:
输入层到隐藏层

我们一般将矩阵 W 9 × 10 W_{9\times 10} W9×10先随机初始化为-1到1之间的数。

从隐藏层到输出层,其实就是求隐含向量与权重矩阵 W 2 W_2 W2的内积,然后使用Softmax激活函数、得到预测值,如下图所示:
隐藏层到输出层
损失值是预测值与实际值的差,这里以选择数据集#1为例,即中心词为natural,然后计算对应该中心词的输出,即预测值,再计算预测值与实际值的差,得到损失值 E l El El。中心词natural的上下文(这里只有下文)为languageprocessing,它们对应的独热编码为w_c=1w_c=2,具体计算过程如下图所示。
计算损失值

Skip-Gram模型的目标函数

我们使用反向传播函数,根据目标词计算的损失值 E I EI EI,反向更新 W 1 W_1 W1 W 2 W_2 W2。假设输出值为 u u u,即 h W = u hW=u hW=u,则预测值为:
y j = Softmax ( u j ) = e u j ∑ k = 1 V e u k y_j=\text{Softmax}(u_j)=\frac{e^{u_j}}{\sum_{k=1}^Ve^{u_k}} yj=Softmax(uj)=k=1Veukeuj

对于长度为 N N N的训练文本且词库词数为 V V V,在window-size指定为 w w w后,第 i i i个字符的前后window-size个字符组成第 i i i个字符的上下文文本 context ( i ) \text{context}(i) context(i),则目标函数为:
E = arg max ⁡ W , W ′ ∏ i = 1 N ∏ j = i − w i + w P ( y j ∣ y i ) = arg max ⁡ W , W ′ log ⁡ ∏ i = 1 N ∏ j = i − w i + w P ( y j ∣ y i ) = arg max ⁡ W , W ′ ∑ i = 1 N ∑ j = i − w i + w log ⁡ P ( y j ∣ y i ) = arg max ⁡ W , W ′ ∑ i = 1 N ∑ j = i − w i + w log ⁡ e u i ∑ k = 1 V e u i = arg max ⁡ W , W ′ ∑ i = 1 N ∑ j = i − w i + w ( e u i − log ⁡ ∑ k = 1 V e u i )

E=\argmaxW,Wi=1Nj=iwi+wP(yj|yi)=\argmaxW,Wlogi=1Nj=iwi+wP(yj|yi)=\argmaxW,Wi=1Nj=iwi+wlogP(yj|yi)=\argmaxW,Wi=1Nj=iwi+wlogeuik=1Veui=\argmaxW,Wi=1Nj=iwi+w(euilogk=1Veui)
E=W,Wargmaxi=1Nj=iwi+wP(yjyi)=W,Wargmaxlogi=1Nj=iwi+wP(yjyi)=W,Wargmaxi=1Nj=iwi+wlogP(yjyi)=W,Wargmaxi=1Nj=iwi+wlogk=1Veuieui=W,Wargmaxi=1Nj=iwi+w(euilogk=1Veui)

目标函数表示最大化已知中心词 y i y_i yi时上下文单词 y j y_j yj的概率,伺候再通过深度学习中的反向传播算法优惠目标函数即可实现Skip-Gram模型,得到各个单词的词向量。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号