Word2vec(CBOW和Skip-Gram)原理理解及模型训练过程推理

Word2vec(CBOW和Skip-Gram)原理理解及模型训练过程推理
word2vec理解
学习nlp最先了解的概念应该就是词嵌⼊(word embedding)吧,Word2vec是⼀种有效的词嵌⼊的⽅法,采⽤了两种模型(CBOW与skip-gram模型)与两种优化⽅法(负采样与层次softmax⽅法)的组合。现在使⽤Word2vec获得词的向量表达,并将其应⽤于各种nlp任务中已经⾮常常见。
由于我们要⽤计算机来完成各种⾃然语⾔理解的任务,⽽对于计算机来说,⼈类世界的各种语⾔⽂字符号,它根本就不认识,它只能理解数字化的对象,所以需要将⾃然语⾔“翻译”成计算机能理解的形式。
One-hot Representation
⽐较简单的“翻译”⽅式是One-hot Representation,即词的独热表⽰。这种词表⽰⽅法是将每个词表⽰成⼀个向量,向量的长度等于语料中所有词的个数,向量中该单词位置的元素是1,其他位置的元素都是0。⽐如⼀个语料中有两个句⼦,“易烊千玺喜欢我”,“我喜欢李现”,那么这个语料中每个词的独热词表⽰如下:
“易烊千玺”表⽰为:[1 0 0 0]
“喜欢”表⽰为:[0 1 0 0]
“我”表⽰为:[0 0 1 0]
diat“李现”表⽰为:[0 0 0 1]
每个词都是茫茫0海中的⼀个1,(哈哈哈哈这句话是从别的博客中看到的,笑死)。
One-hot Representation这种将⼀个词转化成⼀个⾼维稀疏向量的表⽰⽅式⽐较简单,但缺点也很明显。⼀个缺陷就是容易造成维度灾难,如果语料中有五万个词,那么每个词向量就是五万维,然⽽平时⽤来训练的语料词语数都很多,数量成千上万很常见。另⼀个缺陷是这种⽅法⽆法表⽰词之间的相关性,每个词之间都是独⽴的,不包含语义信息⽆法反映出词语在语义层⾯的含义。
distributed representation
另外⼀种“翻译”⽅式是distributed representation,即词的分布式表达。通过训练,将每个词映射成⼀个维度固定的向量,这个向量的维度可以⾃⼰设定,所以它就不会那么长了。另外由于在训练的过程中考虑了词语的上下⽂,所以这种⽅式可以将词语表达成带有语义信息的低维稠密向量。这个“翻译”的过程就是‘词嵌⼊(word embedding)’。Word2vec就是⼀种有效的词嵌⼊的⽅法。
Word2vec这种词嵌⼊的⽅法在训练的过程中考虑了词语的上下⽂,就是在⽬标词(x)和⽬标词的上下⽂(y)之间建⽴⼀个语⾔模型
f(x)=y,对这个语⾔模型进⾏训练,从⽽实现根据上下⽂的词得到⽬标词或根据⽬标词得到其上下⽂的词。可以说⼀个词由其上下⽂的词表⽰,⽽相似的词往往拥有相似的上下⽂语境,所以相似的词⽤这种⽅式得到的词向量也相似。
Word2vec⽤神经⽹络的⽅式来建⽴上下⽂和⽬标词之间的语⾔模型,当神经⽹络训练结束后,其隐藏层的权重就是我们要的每个词的词向量。所以word2vec是⼀个通过训练神经⽹络得到语⾔模型的任务,只不过这个任务是个幌⼦,我们实际要的是这个过程中产⽣的副产物即隐藏层权重,⽤这个副产物作为每个词的词向量,将获得的词向量送⼊下游nlp任务中进⾏应⽤才是最终⽬的。
刚刚说了word2vec包括两个模型和两个⽤来优化模型trick,下⾯先说两个模型。
CBOW
CBOW模型理解
CBOW模型根据某个中⼼词前后A个连续的词,来计算该中⼼词出现的概率,即⽤上下⽂预测⽬标词。模型结构简易⽰意图如下:
模型有三层,输⼊层,隐藏层(⼜叫投影层),输出层。上图模型的window=2,即在中⼼词前后各选两个连续的词作为其上下⽂。输⼊层的w(t-2),w(t-1),w(t+1),w(t+2)是中⼼词w(t)的上下⽂。
接下来根据下图,⾛⼀遍CBOW的流程,推导⼀下各层矩阵维度的变化。
原始语料词库(corpus)中有V个单词。滑动窗⼝window选为A,那总共选取的上下⽂词个数C=2A.
1.在输⼊层,输⼊的是多个上下⽂单词的one-hot。
(维度:因为corpus中有V个单词,所以每个单词的one-hot的维度1*V,那么在输⼊层输⼊的就是C个1*V的向量,所以在输⼊层,数据维度为C*V)
2.设定最终获得的词向量的维度为N,初始化输⼊层与隐藏层之间的权重矩阵w,w维度为V*N。上下⽂单词的one-hot(C*V)与⽹络的输⼊权重矩阵w(V*N)相乘,得到C个1*N的向量。把它们求和再平均,得到隐藏层向量h,维度为1*N.
3.初始化隐藏层与输出层之间的权重矩阵,维度为N*V。
4.隐藏层向量h(1*N)与(N*V)相乘,得到1*V的向量u,。为了⽅便概率表⽰,将向量u经过softmax,此时向量softmax(u)的每⼀维代表语料中的⼀个单词。向量softmax(u)概率最⼤的位置所代表的单词为模型预测出的中间词。
5.上⼀步输出的1*V向量与groud truth中的one hot⽐较。训练的⽬的是最⼤化实际中⼼词出现的概率,基于此定义损失函数,通过最⼩化损失函数,采⽤梯度下降算法更新W和W’。当⽹络收敛则训练完成,此时矩阵W就是我们想要的词向量。如果我们想要知道语料中某个词的向量表⽰,就⽤这个词的one-hot乘以权重矩阵w,得到1*N的向量,这个向量就是我们要的这个词的向量表⽰。
h =(x +C 11x +2...+x )⋅c w
w ,w ′u =h ⋅w ′
因为词的one-hot表⽰中只有⼀个位置是1,其余都是0,那么与w相乘后,得到的是w中的某⼀列向量。由于每个词语的 one-hot⾥⾯ 1 的位置是不同的,所以不同词的one-hot与w相乘,得到的词向量是w中的不同的列向量。所以可见,权重矩阵中的每⼀列向量都能对应的、唯⼀的表⽰corpus中的每⼀个词。所以要的词向量就是神经⽹络输⼊层与隐藏层之间的权重矩阵。
CBOW 模型参数训练过程
这⾥推导的是更⼀般的情况,即输⼊的上下⽂词不⽌⼀个的情况。
前向传播:
输⼊: x (上下⽂的one-hot)
Input-hidden权重矩阵: w
隐藏层: 当输⼊的上下⽂词有多个时,CBOW在计算隐藏层输出时,并不是直接复制输⼊上下⽂的词的输⼊向量,⽽是取输⼊的C个上下⽂词的向量的均值。
Hidden-output权重矩阵: w’
输出层每个节点的输⼊:,其中是矩阵w’的第j列向量
输出层每个节点的输出: 就是⽤softmax获得的词表中每个单词为中⼼词的概率,
得到训练由模型输出的真实中⼼词的概率为:
我们训练的⽬的就是使这个概率最⼤。
其中表⽰真实词在词汇表中的下标。
定义损失函数:
反向传播、随机梯度下降更新权重:
1.损失函数E 对w’取导数,获得隐层到输出层的权重的梯度
,其中 是预测误差,h =w (x +C 1⊤1x +2...+x )=c (v +v +...+v )C 1
W ,I 1W ,I 2W ,Ic ⊤
u =j h ⋅w ′=v ′h w j ⊤
v ′w j p (w ∣w w ...w )=j I 1,I 2,IC y =j exp(u )j ′=1∑
v j ′exp(u )j p (w ∣w w ...w )
绝缘法兰
O I 1,I 2,IC max p (w ∣w w ...w )O I 1,I 2,IC =max log p (w ∣w w ...w )O I 1,I 2,IC =max log =max(u −log exp(u ))
exp(u )=1
j ′∑v j ′exp(u )j ∗j ∗=1j ′∑v j ′j ∗E =−log p (w ∣w w ...w )=O I 1,I 2,IC log exp(u )−j ′=1∑v j ′u =j ∗log exp(v ′⋅h)−j ′=1∑v
wj ⊤v ′⋅wo ⊤h =∂w ′∂E ⋅∂u j ∂E =∂w ′∂u j
e ⋅j h e j e =j y −j t j
根据随机梯度下降,得到隐含层和输出层之间的权重更新⽅程:
该⽅程向量⽅式的写法为:
横孔螺母
其中是矩阵w’的第j列向量,η为学习率。
2.损失函数E 对w取导数,获得输⼊层到隐层的权重的梯度
,其中根据随机梯度下降,得到输⼊层和隐层之间的权重更新⽅程:
zigbee定位该⽅程向量化的写法为:
其中是矩阵w的第c列向量,η为学习率。
CBOW 举例
下⾯⽤⼀个例⼦来说明CBOW的训练过程,其实主要是想明确⼀下实际操作时训练样本怎么⽣成怎么应⽤,所以具体计算只算了前向传播,计算梯度反向传播嫌⿇烦都没算。
假如语料为⼀句话:Real dream is the other shore of reality.我们设定⼀个滑动窗⼝window=2,即中⼼词左右分别选两个词作为其上下⽂词。
1.在训练前,⾸先要将原始⽂本⽣成训练样本数据。下图展⽰了根据原始语料⽣成训练数据的过程。
后埋式止水带w ′=(new )w ′−(old )η⋅e ⋅j h ,for  j =1,2, (v)
v ′=wj (new )v ′−wj (old )η⋅e ⋅j h ,for  j =1,2, (v)
v ′w j =∂w ∂E ⋅∂h ∂E ∂w ∂h =∂h ∂E =j =1∑v ∂u j ∂E ∂h ∂u j e w ′=j =1∑v j EH
w =(new )w −(old )η⋅c 1
EH
v
=⊤W ,Ic (new )v −⊤W ,Ic (old )η⋅c 1EH ,for  c =1,2,...C v w ,I ⊤
图中蓝⾊阴影所覆盖的单词为中⼼词,⽣成的训练所⽤的数据。每⼀个训练样本由多个输⼊特征和⼀个输出组成。其中input是feature,output是label。可见,这句⽂本最后整理成了8个训练样本,下⾯以第6个样本为例,说明词向量的⽣成过程。

本文发布于:2024-09-23 02:33:51,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/337887.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:向量   训练   模型   权重
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议