NLP - word2vec理论基础

概括word2vec

将word映射成连续(高维)向量,求解文本特征提取的问题

1.NNLM(Neural Network Language model)

从语言模型出发,将模型的最优化过程转化为求词向量的过程。
目标函数:

L(θ)=tlogP(wt|wtn+1,...,wt1) L ( θ ) = ∑ t l o g P ( w t | w t − n + 1 , . . . , w t − 1 )

使用了非对称的前向窗函数,窗长度为n-1

输入层(input):One hot表示,假设有10w词。则输入的行向量 []110w [ ] 1 ∗ 10 w
投影层(projection layer):采用线性投影方式将词向量投影到稠密D维表示。
D=CT D = C ∗ 行 向 量 T 投影矩阵C为300*10w,则每个词向量转换成300*1的稠密向量。
隐藏层(hidden layer):做全连接,全连接“神经元”数量用户自定,若设为500,则得到了(300*N)·500的矩阵。
输出层(output):softmax分类器,输出为概率向量 []1×V [ ] 1 × 词 个 数 V ,取概率最大的max(p)。
各层权重优化:BP+SGD
计算复杂度 ND+NDH+HV N ∗ D + N ∗ D ∗ H + H ∗ V ,在word2vec中,为了避免隐层带来的高计算复杂度,直接去掉了隐层。

2.CBOW(连续词袋)

word2vec结构对NNLM结构进行简化
结构图:

目标函数:

J=wcorpusP(w|context(w)) J = ∑ w ∈ c o r p u s P ( w | c o n t e x t ( w ) )

输入层(input):直接使用低维稠密表示。直接随机初始化,比如300维,后续做最优化。
投影层(projection):简化为求和(或平均)。
输出层(output):输出层依然是Softmax分类器,输出为概率向量 []1×V [ ] 1 × 词 个 数 V
特点:1.无隐层;2.使用双向上下文窗口。

3.CBOW改进

由于上述模型输出为词的数量,维度太高。因此,采用以下改进方法:

3.1层次softmax

1.层次softmax使用哈夫曼树,来编码输出层的词典

2.计算非叶子节点的词向量贡献。
假设每个节点的参数为 θi θ i ,若当前节点为左子树节点,则将其代入sigmoid函数为 11+eθTix 1 1 + e − θ i T x ;若当前节点为右子树节点, 111+eθTix 1 − 1 1 + e − θ i T x

P()=$11+eθT1x·(111+eθT2x)·(111+eθT3x)·(11+eθT4x) P ( 足 球 ) = $ 1 1 + e − θ 1 T x · ( 1 − 1 1 + e − θ 2 T x ) · ( 1 − 1 1 + e − θ 3 T x ) · ( 1 1 + e − θ 4 T x )

3.计算量降为 log2V l o g 2 V

3.2负例采样

在样本不均衡情况下,采用负样本采样方法。将这个思想应用到word2vec中。
将正确的词设为正样本,则其余的全是负样本。假设原语料库中包含10w个词,则正样本为1,负样本为10w-1。假设从中选取500个词,其中包含正样本1个,负样本499个。
采样规则
1.假设词汇表中的词有V个,将长度为1的线段分为V份,每个词对应的线段长度为:

len(w)=counter(w)uDcounter(u) l e n ( w ) = c o u n t e r ( w ) ∑ u ∈ D c o u n t e r ( u )

可见,高频词所占线段长,低频词所占线段短
2.将[0,1]划分为M次,M>>V,每次随机生成一个[1, M - 1]的整数,看落在哪个词对应的部分上。
词划分N与M划分如下图:

一般样本不是很大时用CBOW,样本量非常大时,用Skip-Gram

4.Word2Vec:Skip-Gram模型

假如,原始语句为:我喜欢学习机器学习
CBOW为,我喜欢__机器学习,来预测“学习”
Skip-Gram恰好相反,学习,来预测“我喜欢__机器学习”

5.Word2Vec:存在的问题
  1. 对于每个窗口的内容单独训练,没有考虑全局
  2. 对于多义词无法很好的表示与处理,因为使用了唯一的词向量
参考文献
  1. http://www.cnblogs.com/pinard/p/7160330.html
  2. https://blog.csdn.net/abcjennifer/article/details/46397829
  3. https://blog.csdn.net/yingfengfeixiang/article/details/80054729
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值