cbow word2vec 损失_NLP学习笔记(一):word2vec

cf0909e7ad7440d23265e55834b73f40.png

词语,作为NLP任务中的一个基本组成成分,是人类的一个抽象表示,是符号形式的,所以必须表示为计算机可处理的数值形式。将词语表示嵌入到多维数据空间中即为word embedding,word2vec为word embedding的一种。

1、skip-gram和cbow模型

word2vec的训练方式有2种,一个是根据上下文预测中心词的CBOW模型,一种是由中心词预测上下文的skip-gram模型。这里以skip-gram为说明。

d1423ddb26192b5cc78ae4945a6756fd.png
训练模型

对于一个训练语料库,我们设定词汇量为V,需要嵌入的数据空间维度为N(即词向量维度,实践中50-2000左右)。对每一个单词我们用one-hot向量表示(向量维度为v,只有对应单词的index位为1,其余全为0),随机初始化2个矩阵W和W`,

,其中W为单词作为中心词的嵌入矩阵称为输入矩阵,W`为单词作为上下文的嵌入矩阵称为输出矩阵。对于中心词
,在W和W`中都能找到对应的
向量即为单词对应的嵌入向量(一般取输入向量作为嵌入向量)。对于中心词
的上下文预测,我们由softmax分类函数来得到对应的输出概率分布:

即为模型给出的中心词预测上下文词的概率分布。损失函数为预测值与真实one-hot向量的交叉熵,模型训练时使用滑动window的方式,取k个上下文。使用反向传播梯度下降方法迭代在大量无监督样本中训练。输入矩阵W即为我们需要的嵌入矩阵。对于CBOW模型,根据上下文预测中心词,对于k个输入一般取加权平均的方式处理。

2、word2vec的使用

实际使用中都有现成的软件包可供使用。gensim包比较推荐使用:

from gensim.models import Word2Vec
model = Word2Vec(
     sentences, #预料库
     sg, #使用skip-gram或者cbow
     size, #嵌入维度
     window, #滑动窗口大小
     min_count, #忽略出现频率小于此的单词
     negative,  #优化算法负采样大小
     hs  #是否使用层级softmax优化算法
)

3、negative sample

对于Word2vec的2个基础算法,每次梯度更新只能优化一个向量且softmax里的指数求和操作计算量太大,一般使用比较高效的负采样算法。负采样算法以1:k的比例取正负样本(正样本为W,负样本U

),正负样本标签值分别为1、0,目标函数为sigmod函数。有:

最大化条件概率函数:

,对于 P(U|Content(w))概率,对于正样本,我们希望
最大化,对于负样本我们希望
最大,取负对数将连乘转化为求和:

对上面的目标函数使用梯度下降法。这样每次只取一小部分样本大大减少运算量提高效率。

对于负采样,使用带权采样方法即高频词采用的概率大一些,低频词采用的概率小一些。

带权采样算法:len(w)=

,每个词的长度为出现的词频做归一化,word2vec中对词频采用
。word2vec中对长度为1的直线做非等距N(N为词汇数)切分,切分距离len(w),再取M>>N做等距切分,将M切分投影到N切分得到一个映射表。采样时每次随机产生[1,M-1]的随机整数就可映射到一个样本。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值