word2vec算是NLP中的经典算法,之前在课程中简单的学过,但面试时经不起深问。痛定思痛,参考Jack(@没搜出来)的总结,笔者重点阅读了Mikolov的原始论文[1]和Xin Rong的详细推导[2]

Jack:word2vec 相关论文​zhuanlan.zhihu.com

Mikolov的原始论文主要从时间复杂度论证了word2vec的效率,但对于其中原理和具体训练方法描述却相对较少,本文将以Xin Rong的推导为主(最后行文可能像是这篇论文的中文缩略版)。

一、bigram情形

笔者认为这是word2vec模型的核心,即用一个词预测另一个词共现概率(显然这两个词的次序、相隔距离都是可以叠加设置的,从而转换成word2vec的两种方法——CBOW和skip-gram)。其框架图如下所示:

图中V是词的数量,即词独热编码的长度,N为隐藏层变量的维度,在这里等于所要训练词向量的维度,该模型相当于用词向量为隐含层,从而从输入层(上下文词)的独热编码预测输出层(目标词)的独热编码。计算隐含层的权重矩阵记为W,从隐含层计算输出层的权重矩阵记为W'。接下来我们需一步步推导其更新方程。

首先从输入层到隐藏层的公式为:

这里可以看到,由于x是独热编码(即对应该向量只有词id位置的值为1,其余值均为0),隐含层相当于取出W(维度为V×N)中词id对应的行向量,这里定义为输入词的向量

对于隐含层到输出层,定义了另一个权重矩阵W'(ps:在源码实际训练中,W'是W转置,共享词的信息),维度为N×V,可理解为词id位置对应的列向量为输出词的词向量。通过隐藏层与输出词词向量作内积,可以认为是隐藏层(此处不使用输入词向量是因为在后续CBOW时,h不等于输入词向量,而是上下文多个词向量平均值)与实际输出的余弦相似度。从而得到每个词与当前位置的匹配度为:

其中,下标j即为输出词的id,

即第j个输出词对应的词向量,是W'的第j列。

为了将匹配度转化为对应词出现的概率分布,记作y,使用了经典的softmax函数,从而将其映射到0-1之间,这里不列出公式了。模型的目标是使对应真实输出词的匹配度最高(即出现概率最大),从而可以得出目标函数,同时其相反数为损失函数:

其中上标*表示实际对应的情况,即

表示实际输出词对应到模型中的匹配度。

之后就是对损失函数进行求偏导,从而得出训练时更新方程,分为两部分:

  1. 隐含层到输出层的权重;
  2. 输入层到隐含层的权重。

对于第一部分,依靠链式法则进行计算,首先计算损失函数对于匹配度的偏导(预测误差):

其中,

对应
部分,求导后为预测的概率分布;而
对应
的定义为当且仅当下标为
时为1,其余时候都为0。(ps:我认为将记为
可能更直观明了一些。)

之后通过链式法则,即可计算出代价函数关于W'的偏导:

从而得出:

接着计算代价函数对于W的偏导,首先计算代价函数关于隐含层的偏导:

这里定义EH(维度为N的向量)为W'所有词向量关于预测误差

为权重的和,即:

从而,同样通过链式法则计算代价函数关于W的偏导:

从而得到更新函数为:

由于x是独热编码的缘故,事实上只需更新输入函数的那一行,至此word2vec最核心的部分bigram用单个词上下文信息预测某个词的证明完成,加下来分别增加输入词数量(CBOW)和输出词数量(skip-gram)。

二、CBOW方法

CBOW方法是用词上下文k个词来预测该位置词的信息(通常是该词前k/2个词,该词后k/2个词,但从推导来看由于权重不同,对于窗口和词位置的关系并没有太大关系,前后词数不一定要对称),预测模型的框架图如下所示:

与bigram情况的主要不同在于输入词由一个变为C个,隐含层计算公式为这些词的等权平均数:

由于隐含层到输出层过程相较于bigram情形没有任何变化,对于W'的更新函数也完全相同:

而对于输入层到隐含层过程,可以对于C个输入词分别按照bigram过程进行计算后取平均值,因而可以得出输入层到隐含层权重的更新函数为:

笔者认为可以修改bigram情形中输入词的定义,将其改为输入上下文词独热编码的等权平均值,从而完全套用bigram情形中的公式:

三、Skip-Gram方法

Skip-Gram方法是用中心词预测输出上下文的概率,预测模型框架图如下所示:

与bigram情形的最大区别在于输出词由1个变为C个,从而从损失函数函数开始就要发生变化:

从而可看出等于C次bigram损失函数加和,由此,根据bigram情形损失函数对于单一匹配度的偏导,定义对于上下文输出匹配度的偏导(预测误差):

根据链式法则,损失函数关于隐含层到输出层权重的偏导为:

从而得出隐含层到输出层权重的更新函数为:

同时更新定义EH(维度为N的向量)为W'所有词向量关于预测误差

为权重的和,即:

从而输入层到隐含层的更新函数仍然适用:

笔者认为由推导过程中也可以看出,skip-gram算法虽然输出层的权重是相同的,也可重新定义y为C个上下文词的独热编码等权平均数,从而完全套用bigram情形中的公式(和原公式相比只是更新项相差C倍):

ps: 对于word2vec原理推导应该算完成了,但对于具体计算过程的细节仍存在一些疑问,比如层次softmax和负采样两种计算技巧,留个坑,如果有机会写源码阅读笔记再写。

参考

  1. ^Tomas Mikolov, Kai Chen, Greg Corrado, and Jeffrey Dean. Efficient estimation of word representations in vector space.ICLR Workshop, 2013 https://www.researchgate.net/publication/234131319_Efficient_Estimation_of_Word_Representations_in_Vector_Space
  2. ^Rong X. word2vec parameter learning explained[J]. arXiv preprint arXiv:1411.2738, 2014. https://www.researchgate.net/publication/268226652_word2vec_Parameter_Learning_Explained

word2vec原理_word2vec论文阅读笔记相关推荐

  1. 论文阅读笔记——VulDeePecker: A Deep Learning-Based System for Vulnerability Detection

    本论文相关内容 论文下载地址--Engineering Village 论文中文翻译--VulDeePecker: A Deep Learning-Based System for Vulnerabi ...

  2. keras cnn注意力机制_2019 SSA-CNN(自注意力机制)目标检测算法论文阅读笔记

    背景 <SSA-CNN Semantic Self-Attention CNN for Pedestrian Detection>是2019 的工作,其作者来自于南洋理工.这篇文章主要是做 ...

  3. LiDAR-based Panoptic Segmentation via Dynamic Shifting Network(论文阅读笔记)

    LiDAR-based Panoptic Segmentation via Dynamic Shifting Network(论文阅读笔记) 环形扫描骨干网络.动态漂移.一致性驱动的融合 一.重点内容 ...

  4. 论文阅读笔记--Aesthetics-Driven Stereoscopic 3-D Image Recomposition With Depth Adaptation-2018

    论文阅读笔记:美学引导的带有深度适应的立体3D图像重构 I.介绍 II.相关工作 A.单目(2D)图像处理 1)美学驱动的重构(Recomposition) 2)图像分割与抠图(Segment and ...

  5. 论文阅读笔记:Improving Attacks on Speck32 / 64 using Deep Learning

    论文阅读笔记:Improving Attacks on Speck32 / 64 using Deep Learning 本文通过神经网络利用了减少轮数的 Speck 的差分性质.为此,作者对神经网络 ...

  6. 点云配准论文阅读笔记--(4PCS)4-Points Congruent Sets for Robust Pairwise Surface Registration

    目录 点云配准系列 写在前面 Abstract摘要 1 Introduction引言 2 Background研究背景 RANSAC Randomized Alignment 3 Approximat ...

  7. 虚假新闻检测的论文阅读笔记——sigir2021:User Preference-aware Fake News Detection

    文章目录 1.虚假新闻检测的相关简介 2.本篇论文引言 3.模型介绍 3.1.内生偏好编码器 3.2.外生内容编码器 3.3.二者信息融合 4.实验 4.1.各模型的实验结果 4.2.消融实验 5.结 ...

  8. 论文阅读笔记(二)——牛的人脸识别,能做到吗?

    论文阅读笔记(二)--牛的人脸识别,能做到吗? 论文简介 论文中文翻译:<牛的人脸识别,能做到吗?> 论文名称:<Face Recognition of Cattle: Can it ...

  9. [论文阅读笔记] Are Meta-Paths Necessary, Revisiting Heterogeneous Graph Embeddings

    [论文阅读笔记] Are Meta-Paths Necessary? Revisiting Heterogeneous Graph Embeddings 购物返利 www.cpa5.cn 本文结构 解 ...

最新文章

  1. sql,nolock
  2. 启动文件需要做的工作
  3. |NOIOJ|动态规划|8462:大盗阿福
  4. jsp java代码报错,求助!JSP代码中调java服务出参返回正常 weblogic报错BEA-101017
  5. Mac上安装homebrew(类似于Linux上的apt-get)
  6. 创建与管理Oracle的分区表和本地索引
  7. 微信小游戏 - 理论介绍 - 账号注册 - 开发前准备
  8. js高级学习笔记(b站尚硅谷)-5-回调函数
  9. C# 程序图标设置/winform 图标
  10. 360路由器的虚拟服务器设置,360路由器无线万能中继设置教程图解
  11. 电脑上个别按键失灵可能原因
  12. 地方科技局重点科技项目在线申报管理系统
  13. 无人驾驶卡车开上干线,嬴彻科技、主线科技们如何拿下产业化赛点?
  14. 一度智信:拼多多探路知识普惠
  15. python 腾讯视频签到_Python处理腾讯视频
  16. 异步四位二进制计数器逻辑图
  17. 35 款 JavaScript 图形图表库
  18. The return type of function ‘main(WordCountToObject.java:28)‘ could not be determined automatically,
  19. 市场分析(一)——现今各大在线英语词典比较
  20. VC++环境OpenSSL安装

热门文章

  1. Debugging into .NET Core源代码的两种方式
  2. 单元测试02:Open-Cover安装与使用
  3. 中标麒麟linux卸载qt,国产化 银河麒麟编译Qt程序的问题汇总 | 阿拉灯
  4. 用python来获取Github IP地址
  5. 【EPS精品教程】基于DOM和DSM创建垂直模型、加载垂直模型
  6. Windows之Fiddler抓HTTP和HTTPS请求
  7. Android之获取指定目录下的所有特殊文件名字
  8. mysql为什么添加索引_当我添加新索引时,为什么MySQL中索引的基数保持不变?
  9. sq工程师是做什么的_算法工程师为什么成天做数据,都做哪些数据?
  10. jq取第一个子元素为select_【转】jquery如何获取第一个或最后一个子元素?