#彻底理解# NLP中的word2vec

首先简单概括一下 word2vec 的思想:
word2vec的目的是用指定维度的向量来表示词库中的每一个词,这些向量更利于后期进行各种NLP任务;每个词语对应的词向量本质上是语言模型中的一些权重参数,因此我们需要通过训练网络的方式得到这些权重的最优值,换句话说,我们通过预测未知词的方式训练网络,目的并不是真的要去使用模型预测未知词,而是提取网络的网络的权重参数 进而得到词向量,然后拿这些词向量作为词语的另一种表示形式去进行别的模型里完成NLP任务

word2vec的目的是通过训练语言模型得到词向量,而早在 2003 年大牛 Bengio 就已经提出了神经网络语言模型(Neural Network Language Model, NNLM)该模型在学习语言模型的同时,也得到了词向量;因此我们先要了解一下NNLM模型

1. Neural Network Language Model(NNLM)

语言模型是一个多分类问题,给定前 n-1 个单词,预测第 n 个单词是什么。 在 NNLM 中词向量可以认为是神经网络语言模型训练的副产物。

NNLM的结构如下:
在这里插入图片描述
模型的内部运算流程如下:

  1. 输入每个词的one-hot 编码
  2. 对每个输入点乘权重矩阵 C,得到每个词对应的词向量
  3. 将所有词的词向量拼接成一个长向量
  4. 将长向量输入隐藏层
  5. 隐藏层将输入点乘隐藏层的权重矩阵并加偏置后 通过tanh函数输出到输出层
  6. 输出层点成输出层权重矩阵w并加偏置后通过softmax函数输出预测每个词的概率(输出层节点数=词库容量)

上图中的虚线表示从词向量到输出层的类似残差的结构,这里先不做赘述

这里最模型的输入和词向量的计算着重说明一下:

模型的输入

模型的输入是词库中词的one-hot编码
对词进行 one-hot 编码的过程如下:
用和词库容量大小(v)的维度来表示一个词语,词库中的第N个词语的第N维置为1,其余位置置为0

词向量的计算

输入词语的one-hot编码(1行v列)点乘矩阵C(v行m列)会得到对应的词向量,得到的是一个1行m列的向量(m的维度是人为指定的);但由于one-hot向量特殊性,两者点乘等价于提取C矩阵中词语序号对应的行,因此我们可以理解为,C矩阵中按行存储着词库中每个词的词向量;这个C矩阵本是通过学习得到的网络参数一般情况下不会实际价值,这就是为什么说词向量矩阵是NNLM的副产物。

word2vec

word2vec有两种网络结构 cbow 和 skip-gram ;和 NNLM的不同之处在于cbow 和 skip-gram摒弃了NNLM的隐藏层结构、没有使用激活函数并且将NNLM的词向量拼接转换成了 词向量求均值

由于NNLM的目的是用来预测,而word2vec的目的是用来得到词向量矩阵(网络的权重参数),所以得到的预测结果并不需要绝对准确,只要相对准确就即可;换句话说,我们只需将模型优化到极限,并不需要模型得到最准确的预测结果。因此cbow 和 skip-gram两种网络结构中都摒弃了NNLM中的隐藏层;

如上文所述,word2vec的目的是得到网络的权重矩阵,cbow 和 skip-gram只是两种训练网络的方式,cbow通过上下文预测中间词的方式训练网络,skip-gram通过中间词预测上下文的方式训练网络

cbow

在这里插入图片描述
模型的内部运算流程如下:

  1. 输入每个词的one-hot 编码
  2. 对每个输入点乘权重矩阵 C,得到每个词对应的词向量
  3. 将所有词向量的每一维求均值后的到均值向量并将均值向量输出到输出层
  4. 输出层点成输出层权重矩阵w并通过softmax函数输出预测每个词的概率(输出层节点数=词库容量)

skip_gram

在这里插入图片描述
模型的内部运算流程如下:

  1. 输入中间词的one-hot 编码
  2. 对输入one-hot 编码点乘权重矩阵 C,得到中间词对应的词向量并输出到隐含层
  3. 对输入的词向量点乘权重矩阵w,并输出的输出层
  4. 对每个输出层节点使用softmax函数输出每个输出节点预测每个词的概率
    (每个输出层输出节点数=词库容量)

参考文章:
6. 语言模型(二)—— 神经网络语言模型(NNLM)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

energy_百分百

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值