Word2Vec(Efficient Estimation of Word Representations in Vector Space)

本篇论文的整体结构如下:

  1. 对比模型:
    1. NNLM
    2. RNNLM
  2. Word2Vec
    1. Skip-Gram
    2. CBOW
    3. 关键技术
      1. 层次softmax
      2. 负采样
  3. 实验结果
    1. 与对比模型的直接对比结果
    2. 不同参数的实验
    3. 不同模型的效率分析

 

一、对比模型

 

语言模型基本思想: 句子中一个词出现和前面的词是有关系的,可以使用前面的词预测下一个词

 

NNLM:

输入层: 将词映射成向量,相当于一个1*v的one-hot向量乘以一个v*d的向量得到一个1*d的向量

隐藏层: 一个以tanh为激活函数的全连接层 a = tanh(d+ux),   u、d为参数

输出层: 一个全连接层,后面接一个softmax函数来生成概率分布,y = b + wa, 其中y是一个1*v的向量

P(wt|wt-n+1........wt-1) = exp(ywt)/sum(exp(yi))

参数个数:

       1) 每一个词映射为1*D的向量N个词concat,参数个数为N*D

       2) 隐藏层大小为H,所以w参数矩阵大小为N*D*H

       3) 词表大小为V,所以u的参数个数为H*V

所以NNLM参数个数Q = N*D + N*D*H + H*V

 

RNNLM:

输入层: 和NNLM一样,需要将当前步转化为词向量

隐藏层: 对输入和上一个时间步的隐藏输出进行全连接层操作:

                         s(t) = Uw(t) + ws(t-1) + d

输出层: 一个全连接层后面接一个softmax函数来生成概率分布

                              y(t) = b + vs(t)

其中y是一个1*v的向量,P(wt|wt-n+1........wt-1) = exp(ywt)/sum(exp(yi))

参数个数:

         s(t) = Uw(t) + Ws(t-1)   

         y(t) = Vs(t)  -- softmax --> p(xi|xi-N,.....xi-1)

         y = [y1,y2,.....yv] = e^yi/(sum(e^yi))

         w(t)表示t时刻当前输入的单词词向量,s(t-1)表示隐藏层的前一层输出,y(t) 表示输出的词的index

         w维度是H, s维度是H, W维度是H*H, U维度是H*H, V维度是H*V(V表示词表大小)

 所以RNNLM 参数个数Q = H*H + H*V

 

评价语言模型常用指标-困惑度

Loss : L = -1/Tlogp(wi|wi-n+1,.....wi-1)

pp(s) = p(w1,w2,....wt)^(-1/T)

logpp(s) = -1/Tlog(p(w1)p(w2|w1)....(wt/wt-n+1...wt-1))

logpp(s) = -1/T(log(p(w1)) + log(p(w2|w1)) + ...... log(p(wt|wt-n+1.....wt-1)))

logpp(s) = -1/Tsumi=1->Tlogp(wi|wi-n+1....wi-1)

pp(s) = e^Loss

 

上述模型存在的问题:

1、仅对一部分有意义的词进行梯度传播(如 the,a无意义)

2、引入先验知识,如词性等

3、解决一词多意问题

4、加速softmax层

 

二、Word2Vec

 

word2vec基本思想是句子中相近的词之间是有联系的,用词预测词

skip-gram: 中心词预测周围词

CBOW: 周围词预测中心词

 

Skip-gram:

1、中心词预测周围词

2、中心词生成2*windowsize个样本,中心词词向量和周围词做内积的方式得到周围词的概率,并进行优化

训练 W*,W, 词向量可以为W或者为(W + W*)/2

 

CBOW

1、周围词预测中心词

2、周围词向量求和或者平均 之后和中心词向量内积,进行softmax,然后反向优化

 

模型复杂度(模型参数个数)

Skip-gram: Q = C(D + D*V) C表示周围词,D表示每个中心词D维词向量

负采样:Q = C(D + D*(K+1)) K个负样本,1个正样本

CBOW:Q= N*D + D*V 因为sum或者avg所以向量维度与词向量维度一致,不是concat

层次softmax: Q = N*D + D*log2V

负采样: Q = N*D + D*(K+1) 

N表示N个周围词,D表示每一个词词向量维度

 

三、实验结果

 

1、任务描述

2、最大化正确率

      数据集越大、维度越大,效果越好

3、不同模型间比较

     与其它人开源的词向量比较,Skip-gram比CBOW稍微慢一些,但是效果较好

4、大规模并行模型训练

     词与词之间的关系,给一个词五个句子选择最合适的句子

5、微软研究院相关比赛

6、学习到句子间的关系

 

四、论文小结

关键点:

1、更简单的预测模型 -- word2vec

2、更快的分类方案 -- HS和NEG

创新点:

1、使用词对的预测来替代语言模型的预测

2、使用HS和NEG降低分类复杂度

3、使用subsampling 加快训练

4、新的词对推理数据集来评估词向量的质量

启发点:

1、大数据集上的简单模型往往强于小数据集上的复杂模型

2、理解数据 + 模型应用

一些经验:

超参数选择: 利用gensim做word2vec的时候,词向量的维度和单词数目有没有一个比较好的对照范围

1、dim一般在100-500之间选择

2、初始值词典大小V的1/4次方V = 10K,dim=100

3、min_count(词频出现的最少次数) 一般在2-10之间选择

4、时间比较多,可以用网格搜索grid_search

 

五、相关复现代码

代码详见: https://github.com/wangtao666666/NLP/tree/master/Word2Vec

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值