MLP学习11_分布式表示、word2vec、skip-gram训练过程、NegativeSampling、梯度下降推导

one-hot 编码表示一个单词的缺陷:
1、这是一种sparse稀疏表示,整个向量只有一个位置为1
2、无法表现单词相似度,也就是不能表达语义的相关性(可以表达句子相关性)
3、表达能力弱
word2vec词向量的优势:
1、dense稠密表示
2、可以表达语义相关性
3、表达能力强
4、global generation

由此引出词向量表示形式:

词向量,分布式表示distributed representation

这种表示我们叫dense representation, 一般取300维以内表示,而one-hot的向量表示等于词典的长度
我们假定经过训练得到的词向量存在一个semantic space语义空间,可以把语义相似度高的单词分布在一个相近的位置上
在这里插入图片描述
分布式表示的能力:加入有向量是8维,那么one-hot的形式只能表示8个单词,
但是词向量表示的话,如果限定每位只能是0/1,也能表示2的8次方个单词,如果每位是实数就可以,那么可以表示无穷个单词

泛化能力 generation

one-hot
在这里插入图片描述
在这里插入图片描述
one-hot表示中,产生的每一个单词向量只适用于这个单词,类比于做菜,从食材直接做一道菜,那么当然这道菜不能变成其他菜。当然它有一个中间的参数,但是这个参数只适用于产色对应的单词,那么我根据这个单词就可以推断出到底是那个参数,但是推断出的参数却是局部适用的,而不能推广到其他单词,其他的单词,这个中间参数还得由其他单词推出,也就是这是一种local generation局部泛化
在分布式表示中,产生的每一个单词向量是从一些共享的参数中拿到的,每一位上的参数,既可以作为这个单词的词向量表示参数,也可以作为另一个单词的表示参数,最后因为选取的这些共享参数的不同而出现不同的词向量。类比于做菜,我将不同的食材,先进行加工,得到一些半成品,然后当做菜的时候,我直接从半成品中选一些再进行组合就得到一道菜,半成品选择不同,菜也就不相同。这就增强了数据的表示能力。所以词向量是一种分布式表示,我从每一个单词向量,可以推断出一系列中间参数,这些参数在其他单词中同样在使用,也就是一种泛化能力,所以词向量表示是global generation全局泛化。也类似于分布式系统,不同的服务器承担不同的任务,用户发送请求以后,由不同服务器处理不同任务来解决问题。

K-means算法是一种local generation

Word2vec

在一个文章里,离得越近的单词相似度越大,这是所以词向量训练模型用到的一个性质

训练词向量模型:skip-gram model

根据离得越近相似度越高这条性质,我们可以进行预测。如果是由两侧单词预测中间单词,有CBOW模型,很常见,但是能用的地方不多。
如果是由中间单词预测两侧的单词,有skip-gram model、glove,这是比较常用的模型。
在这里插入图片描述
从中间预测两边显然比两侧预测中间要难,那么我们训练出的模型也就效果更好
在这里插入图片描述
skip-gram model是要将中间单词两侧的单词的条件概率最大化,得出两侧单词的一个乘积,然后去把这个条件概率乘积通过模型计算一个关系来对应到我们的词向量上。
这里我们有一个window-size值,表示预测中间单词两侧单词的一个量,window-size等于2,表示预测中间单词两侧各2个单词

在这里插入图片描述
P(c|w;θ)指的就是中间单词w的两侧单词c的一个概率,θ是模型中对于这个概率的参数表示。
我们要最大化两侧单词条件概率的乘积,最后将条件概率连乘的形式转化成对数相加进行简化运算。

案例

根据语料库学习得到每个单词的词向量,长度是50
需要两个相同向量:u,v,他们包含语料库中的词向量,一个作为上下文词,一个作为中心词使用
文本text就是一个长字符串,包含语料库中的所有单词。
假定window-size=1
我们要通过skip-gram算法来构建目标函数argmax
首先将text中单词循环一遍,确定中心词w,然后再循环一次,确定上下文词,也就是中心词前后的单词c
我们要将条件概率p(c|w)写成包含参数θ的形式
接着优化,加log变加法
最后我们把logP(c|w;θ)表示出来就可以

P(c|w;θ)的表示

c和w是相邻的两个词,所以我们希望概率是最大的,同时相似度也是最大的
在计算概率时,既要保证计算出的概率处于0-1范围,也要保证概率之和为1,也就是满足概率的要素。
所以才有softmax的表示形式,Uc表示上下文词的向量,Vw表示中心词的向量,两向量做内积,得到的是作为临近词的表示,
分母中c’取的是整个词库中w这个中心词所临近c的总数,这样就保证了概率的要素。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在把目标函数化简到第二步,出现了词库量级的复杂度,要进行训练优化,用到 了negative sampling或者hieraaloal softmax,前者用得多
在这里插入图片描述
negative sampling其实就是不去考虑词库中所有的c’,比如只考虑采样5个c’
对于未登录词 ,使用fast text处理
https://zhuanlan.zhihu.com/p/32965521
在这里插入图片描述

skip-gram另一种目标函数

现在我们不去计算单词w3作为中心词,两侧词的条件概率,
而是计算两个词出现在上下文关系的概率,出现在一起则D=1,否则D=0
当两个词是上下文关系时,我们希望条件概率D=1是越大越好
当不是上下文关系时,条件概率D=0越大越好
在这里插入图片描述
这样就成了一个二分类问题,采用逻辑回归的方式表达在这里插入图片描述

NegativeSampling

新的目标函数,argmax中,根据文本得到正样本集合D,也就是作为上下文词的样本。负样本集合D非
将是上下文词的概率和不是上下文词的概率进行连乘,并使用逻辑回归中的sigmoid函数化简得到最好的式子。
假如词库是10^5,词库越大,那么正样本占比将越少,产生的负样本将会越多。
这样一个大量的负样本同样是要解决的问题。
在这里插入图片描述
negative sampling其实就是在计算负样本概率时,不计算词库中所有出现的负样本,而只采样针对中心词w的一个负采样,也就是只关心负样本中中心词是w的组合。这样就大大降低了计算
在这里插入图片描述
上面例子中,正样本一个,负样本只取除了中心词和上下文词外的两个负样本作为计算需要
所以计算时需要定义负样本采样的一个 超参数,确定需要几个负样本的采样

梯度下降推导

在这里插入图片描述
在这里插入图片描述

总结

首先遍历正样本集合,找到中心词和它的上下文词,接着,针对中心词,去以这个目标词为中心词的负样本集合中进行采集,设置超参数比如5,也就是在负样本中采样5个。然后由上述的目标函数采样梯度下降法进行参数更新,因为负样本采集是随机的,所以叫随机梯度下降法。
在这里插入图片描述
对于负样本的采样,为了提升采样效率,可能会使用到比如哈夫曼树。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值