赞
踩
分类目录:《深入理解深度学习》总目录
相关文章:
· 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()]]
这个语料库就是一句话,共10个单词,其中and
出现两次,共有9个不同单词。因单词较少,这里暂不设置停用词,而是根据空格对语料库进行分词,分词结果如下:
["natural", "language", "processing", "and", "machine","learning", "is", "fun","and", "exciting"]
使用Skip-Gram模型,设置window-size=2
,以目标词确定其上下文,即根据目标词预测其左边2个和右边2个单词。具体模型如下图所示:
在上图中,这里语料库只有9个单词V-dim=9
,词嵌入维度为10,即N-dim=10
,且C=4(该值为2*window-size
)。
如果用矩阵来表示上图,可写成如下图所示的形式:
实际嵌入过程中,涉及的单词量较大,本文为便于说明,仅使用一句话作为语料。在一些文章中,又将矩阵
W
V
×
N
W_{V\times N}
WV×N称为查找表(Lookup Table)。
根据语料库及window-size
,生成中心词与预测上下文的数据集,如下图所示:
图中共有10对数据, X k X_k Xk对应的词为中心词,其左边或右边的词为上下文。
为便于训练word2vec模型,首先需要把各单词数值化。这里把每个单词转换为独热编码。在前面提到的语料库中,上图显示了10对数据,每个窗口都由中心词及其上下文单词组成。把上图中的每个词转换为独热编码后,可以得到如下图所示的训练数据集:
上述步骤完成了对数据的预处理,接下来开始数据的正向传播,包括输入层到隐藏层、隐藏层到输出层。
从输入层到隐藏层,用图来表示就是输入向量与权重矩阵
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
的上下文(这里只有下文)为language
和processing
,它们对应的独热编码为w_c=1
,w_c=2
,具体计算过程如下图所示。
我们使用反向传播函数,根据目标词计算的损失值
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
)
目标函数表示最大化已知中心词 y i y_i yi时上下文单词 y j y_j yj的概率,伺候再通过深度学习中的反向传播算法优惠目标函数即可实现Skip-Gram模型,得到各个单词的词向量。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。