word2vec理解及pytorch实现

更新时间:2023-05-20 09:53:44 阅读: 评论:0

word2vec 理解及pytorch 实现
word2vec 理解及pytorch 实现
word2vec是Google研究团队的成果之⼀,它作为⼀种主流的获取分布式词向量的⼯具,在⾃然语⾔处理、数据挖掘等领域有着⼴泛的应⽤。本⽂⾸先会介绍⼀些预备知识,⽐如softmax、ngram、subsampling、neg-sampling等,之后来讲解word2vec的原理,并着⼿使⽤pytorch搭建word2vec模型。
word2vec 优点
word2vec词向量与传统的one-hot词向量相⽐,主要有以下两个优势
1.低维稠密
⼀般来说分布式词向量的维度设置成100-500就⾜够使⽤,⽽one-hot类型的词向量维度与词表的⼤⼩成正⽐,是⼀种⾼维稀疏的表⽰⽅法,这种表⽰⽅法导致其在计算上效率⽐较低。
2.蕴含语义信息
one-hot这种表⽰⽅式使得每⼀个词映射到⾼维空间中都是互相正交的,也就是说one-hot向量空间中词
与词之间没有任何关联关系,这显然与实际情况不符合,因为实际中词与词之间有近义、反义等多种关系。Word2vec虽然学习不到反义这种⾼层次语义信息,但它巧妙的运
⽤了⼀种思想:“具有相同上下⽂的词语包含相似的语义”,使得语义相近的词在映射到欧式空间后中具有较⾼的余弦相似度。
图1
Skip-gram 模型
1.训练样本
怎么把“具有相同上下⽂的词语包含相似的语义”这种思想融⼊模型是很关键的⼀步,在模型中,两个词是否出现在⼀起是通过判断这两个词在上下⽂中是否出现在⼀个窗⼝内。例如,原始样本“The quick brown fox jumps over the lazy dog.”在送⼊模型前会经过图2所⽰处理(这⾥为了绘图简单假设窗⼝为2,⼀般窗⼝是设置成5)。
sim (apple ,banana )=∣vec ∣⋅∣vec ∣
apple banana vec ⋅vec apple banana
如图所⽰,skip-gram模型的输⼊是当前词,输出是当前词的上下⽂,虽然我们训练模型的时候喂的是⼀个个分词好的句⼦,但内部其实是使⽤⼀个个word pair来训练。同样是之前的ca“The quick brown fox jumps over the lazy dog.”,假如窗⼝改为5,则
(The,quick)这个word pair会成为⼀个训练样本。
假如两个词具有相同的输出,则可反推出作为输⼊的两个词之间具有较⾼相似性,接下来就是如何使⽤模型来实现上述⽬标。
图2
2.skip-gram
skip-gram模型与⾃编码器(Autoencoder)类似,唯⼀的区别在于⾃编码器的输出等于输⼊,⽽skip-gram模型的输出是输⼊的上下⽂。那么,作为训练样本的word pair应该以什么样的⽅式输⼊给模型? 答案是one-hot向量,为了得到one-hot向量,必须⾸先知道训练语料中包含了多少词。因此,在训练之前会⾸先对语料进⾏统计,得到词表。假设词表长度为10000,词向量为300维,则skip-gram模型可表⽰为图3。
图3
如图3所⽰,假设输⼊的word pair为(ants, able),则模型拟合的⽬标是,同时也需要满⾜
,这⾥利⽤的是对数似然函数作为⽬标函数。上述表述中可表⽰为:
根据和,可构建似然函数:
则:
将代⼊有:
Max  P (able ∣ants )Min  P (other  words ∣ants )P (able ∣ants )P (able ∣ants )=softmax (X ⋅W )
ants  1×1000010000×300softmax (X )=
exp (X ⋅W )
∑i =1100001×300i
300×1exp (X ⋅W )1×300300×1P (able ∣ants )P (other  words ∣ants )L (W )=P (able ∣ants )⋅P (other  words ∣ants )y =able y =other  words
log  L (W )={y =target  word }{log  P (able ∣ants )+log  P (other  words ∣ants )}
=
{y =i
10000
target  word }logP (word ∣ants )
i P (word ∣ants )i logL (W )=
{y =i
10000
target  word }log exp (X ⋅W )
∑i =1
10000
medex1×300i
300×1exp (X ⋅W )
1×300300×1
式中{*}表⽰如果表达式*为true,则{*}=1,否则{*}=0。接下来要做的是最⼤化似然函数,也即:
要实现上述⽬标,可利⽤梯度上升法,⾸先对参数求偏导:
接下来根据学习率对进⾏更新:
隐藏层的参数矩阵就包含了所有词的词向量,该矩阵的⾏为词表长度,列为词向量维度,矩阵中的每⼀⾏表⽰⼀个词的词向量。由于输⼊层是one-hot向量,与隐藏层点乘后其实是选中了该矩阵中的⼀⾏,如图5所⽰,这⼀⾏表⽰的是ants的词向量,⽽输出层其实是以ants的词向量为特征,以ants的上下⽂词作为类别来训练softmax分类器。
负采样 negative sample
以图3所⽰的模型为例,对每⼀个训练样本需要更新的参数个数有三百万(准确的说是三百万零三百,由于输⼊是one-hot,隐藏层每次只需要更新输⼊词语的词向量),这还是假设词表只有⼀万的情况下,实际情况会有五⼗万甚⾄更多,这时候参数就达到了亿级。训练过程中要对每个参数计算偏导,然后进⾏更新,这需要很⼤的计算资源。
负采样是加快训练速度的⼀种⽅法,这⾥的负可以理解为负样本。针对训练样本(ants, able),able这个词是正样本,词表中除able外的所有词都是负样本。负采样是对负样本进⾏采样,不进⾏负采样时,对每⼀个训练样本模型需要拟合⼀个正样本和九千九百九⼗九个负样本。加⼊负采样后,只需要从这九千九百九⼗九个负样本中挑出来⼏个进⾏拟合,⼤⼤节省了计算资源。那么应该挑⼏个负样本,根据什么进⾏挑呢?Google给出的建议是挑5-20个,怎么挑是根据词在语料中出现的概率,概率越⼤越有可能被选中,具体计算公式为:
其中f(word)表⽰word出现的概率。
那么如何使⽤负采样数据呢?下⾯会对使⽤负采样后的优化⽬标进⾏推导。
考虑⼀对单词和上下⽂的组合。我们⽤表⽰是真实上下⽂对的概率。相应地,将是不是真实上下⽂对的概率。假设存在控制分布的参数。
Max  logL (W )
=∂w i ∂logL (W )x ({y =i target  word }−P (target  word ∣x ;W ))
i w =i w +i η⋅
∂w i ∂logL (W )
呼吁英语W 10000×300X ants  1×10000W 10000×300P (word )=(f (word ))
∑i =110000
i 4
3
f (word )4
3
(w ,c )p (D =1∣w ,c )(w ,c )p (D =0∣w ,c )=1−p (D =
1∣w ,c )(w ,c )θ:p (D =1∣w ,c ;θ)
根据论⽂,我们假设单词和上下⽂来⾃不同的词汇表,因此,单词dog相关联的向量将与上下⽂dog相关联的向量不同。做出这种假设的⼀个可能的解释如下:考虑单词dog和上下⽂dog共享相同向量的情况。单词⼏乎不会出现在⾃⾝的上下⽂中,因此模型应该为分配⼀个低概率,这需要为分配⼀个低值,这是不可取的。
我们现在的⽬标是找到参数,以最⼤化所有单词上下⽂对确实是真实的概率,即:
可以⽤softmax定义:
优化⽬标是:
ausf我们需要⼀种机制,通过禁⽤某些组合来阻⽌所有向量具有相同的值。负采样就满⾜这种情况,负样本对不是真实数据,因此其
迪士尼英语动画片大全
是很低的,设负样本集合为D’,优化⽬标为:
令,可得:
v p (dog ∣dog )v ⋅v arg
p (D =θ
max (w ,c )∈D描述
∏1∣w ,c ;θ)
=arg负责人 英语怎么说
log p (D =θ
max
(w ,c )∈D ∏
1∣w ,c ;θ)create account
=arg
logp (D =θ
max (w ,c )∈D
∑1∣w ,c ;θ)
p (D =1∣w ,c ;θ)p (D =1∣w ,c ;θ)=1+e −v ⋅v c w
1
arg
θ
max (w ,c )∈D
∑1+e −v ⋅v c w
1(w ,c )p (D =1∣w ,c ;θ)arg p (D =θ
max (w ,c )∈D
新通出国∏1∣w ,c ;θ)p (D =(w ,c )∈D ′∏
0∣w ,c ;θ)
=arg
log p (D =θ
max
(w ,c )∈D ∏
1∣w ,c ;θ) (1−(w ,c )∈D ′∏
p (D =1∣w ,c ;θ))
=arg
logp (D =θ
max (w ,c )∈D
∑1∣w ,c ;θ)+log (1−(w ,c )∈D ′∑
p (D =1∣w ,c ;θ))
=arg
log +θ
max (w ,c )∈D
∑1+e −v ⋅v c w 1log (1−(w ,c )∈D ′
∑)
1+e −v ⋅v c w 1
=arg
垃圾袋英文log +θ
max (w ,c )∈D
∑1+e −v ⋅v c w 1log (w ,c )∈D ′
∑1+e v ⋅v c w
合肥日语
1
σ=1+e −x 1

本文发布于:2023-05-20 09:53:44,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/115659.html

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

标签:向量   模型   参数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图