word2vector论文笔记
背景
很多当前的NLP系统和技术都把单词像ont-hot一样当做原子性的一个概念去对待,单纯就是一个索引,无法表示词之间的相似性。原因就是往往一个简单的、鲁棒的、可观测的模型在海量数据集上的学习效果要优于一个复杂模型在少量数据集上的学习效果。
然而,基于简单技术的模型有以下缺陷:比如语音识别和机器翻译等NLP任务,获取海量的可用数据是相当困难的,必须从根本上改进技术,使得利用海量的数据进行学习向量表示的成本更低更有效。
这几年基于神经网络的分布式词向量表示学习获得了不错的表现,超越了N-gram模型。
本文目的
介绍一种新的方法,其可以史无前例的在十亿量级的单词量及百万级的词典规模上学习出高质量的词向量表示。
惊喜的是,其不仅可以表示此之间的相似性及此法规则,还可以表达词语之间简单的代数计算,比如:vector(King)-vector(Queen) = vector(Man)-vector(Woman)
本文通过开发新的模型结构尝试最大化以上操作包括词法的准确率。我们设计了一个新的测试集来测量词法和句法、语义的准确性。此外也讨论了训练时间对词向量维度与数据量的依赖。
之前的工作
- NNLM:神经网络语言模型,就是用一个前馈神经网络去学习一段话下一个单词是什么。

不同模型结构的计算复杂度
NNLM
模型复杂度为:
Q = N*D + N*D*H + H*V
N是输入模型的词序列的长度,即词个数
D是词向量维度
H是隐藏层的节点数
V是词典大小
其中,计算量占大头的是隐藏层到输出层的H*V,词典都比较大,这一层的计算量也很大。为避免昂贵的计算,这一层通常用 hierarchical softmax来做输出,这一层的复杂度可以降低至log2(V)。因此,整个模型的复杂度通常为 N*D*H。
在我们的模型中,使用了霍夫曼二叉树的hierarchical softmax来做输出层,详见霍夫曼二叉树。
RNNLM
模型复杂度
Q = H*H + H*V
H是隐藏层节点数
V是词向量维度
同理,H*V的复杂度可通过hierarchical softmax降低至log2(V), 只要的计算复杂度来源于H*H。
并行训练
在大规模分布式集群进行多机多核并行训练。
New Log-linear Models
以上分析可知,模型复杂度通常集中在非线性隐藏层,下面两个模型在此处做了改进。
CBOW(Continuous Bag-of-Words Model)
模型结构如上图所示
- 使用
w(t)上下文的词w(t-2),w(t-1),w(t+1),w(t+1)预测当前词w(t)。 - 去掉隐藏层,词序列通过Embedding层得到词向量后求平均,然后接 softmax 输出层。当输入词序打乱后求平均得到的值是一样的,因此本质上是一个词袋模型。
模型复杂度:
Q = N*D +D*log2(V)
Skip-gram
模型结构如上图所示
- 同CBOW相反,skip-gram是用当前的词
w(t)预测它周围的词w(t-2),w(t-1),w(t+1),w(t+1)。 - 离当前词距离越远其与当前词的联系越弱,这里通过不同的采样权重在训练的时候给距离较远的词更小距离较近的词较大的权重。
模型复杂度
Q = C*(D + D*log2(V))
C代表取当前周围词的最大距离,本片文章取C=10。
Tricks
- 霍夫曼编码。
- Negative Sampling。
基本思路就是根据词频分布对不同的词进行采样,当做负样本。
Result
作者使用了不同的词向量维度大小以及不同规模的训练数据进行测试,结果显示明细当词向量维度更高、训练数据规模更大的时候,训练出来的词向量具有更高的质量。

作者在相同的训练数据下,同样的词向量维度进行训练。几个不同的模型结构比较如下:

比较了不同的模型在不同训练语料、不同词向量维度下的表现:

在大规模语料Google News 6B级别数据上训练的精度和耗时

可以看到,在以上实验中,CBOW和skip-gram对以往模型无论是精度还是训练速度上都是碾压姿态。
Examples of the Learned Relationships
通过Paris - France + Italy = Rome这种计算方法来寻找具有某种关系的word pairs。sklip-gram在783M语料、300维词向量的设定上训练的词向量,案例如下,准去率60%左右,相信在更大的语料和更高的词向量维度上可以取得更优异的表现。
Conclusion
构建了两个复杂度更加简单的词向量模型
复杂度简单,得以在更大规模的语料上进行训练,从而训练得到更高质量的词向量。
word2vector论文笔记的更多相关文章
- Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)
Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文, ...
- 论文笔记之:Visual Tracking with Fully Convolutional Networks
论文笔记之:Visual Tracking with Fully Convolutional Networks ICCV 2015 CUHK 本文利用 FCN 来做跟踪问题,但开篇就提到并非将其看做 ...
- Deep Learning论文笔记之(八)Deep Learning最新综述
Deep Learning论文笔记之(八)Deep Learning最新综述 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感觉看完 ...
- Twitter 新一代流处理利器——Heron 论文笔记之Heron架构
Twitter 新一代流处理利器--Heron 论文笔记之Heron架构 标签(空格分隔): Streaming-process realtime-process Heron Architecture ...
- Deep Learning论文笔记之(六)Multi-Stage多级架构分析
Deep Learning论文笔记之(六)Multi-Stage多级架构分析 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些 ...
- Multimodal —— 看图说话(Image Caption)任务的论文笔记(一)评价指标和NIC模型
看图说话(Image Caption)任务是结合CV和NLP两个领域的一种比较综合的任务,Image Caption模型的输入是一幅图像,输出是对该幅图像进行描述的一段文字.这项任务要求模型可以识别图 ...
- 论文笔记(1):Deep Learning.
论文笔记1:Deep Learning 2015年,深度学习三位大牛(Yann LeCun,Yoshua Bengio & Geoffrey Hinton),合作在Nature ...
- 论文笔记(2):A fast learning algorithm for deep belief nets.
论文笔记(2):A fast learning algorithm for deep belief nets. 这几天继续学习一篇论文,Hinton的A Fast Learning Algorithm ...
- 论文笔记:Towards Diverse and Natural Image Descriptions via a Conditional GAN
论文笔记:Towards Diverse and Natural Image Descriptions via a Conditional GAN ICCV 2017 Paper: http://op ...
随机推荐
- 【Linux】在文件的指定位置插入数据
今天遇到一个似乎很棘手的问题,要在文件的中间,插入几条配置 这里就以my.cnf这个文件为例 1 [mysqld] 2 datadir=/var/lib/mysql 3 socket=/var/lib ...
- 【Linux】awk想打印制定列以后的所有列
今天偶然研究awk,有一个文件,文件内容是全篇的1 2 3 4 5 6 7 8 9 0 现在想打印除了第一列意外的所有列 文件内容: [root@localhost ~]# cat test.txt ...
- leetcode 357. 计算各个位数不同的数字个数(DFS,回溯,数学)
题目链接 357. 计算各个位数不同的数字个数 题意: 给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10n . 示例: 输入: 2 输出: 91 解释: 答 ...
- 在recover database时,如何决定该从哪一个SCN开始恢复
使用备份恢复的方法搭建DG库,还原数据文件后,打开数据库时报错 SQL> ALTER DATABASE OPEN READ ONLY; ALTER DATABASE OPEN READ ONLY ...
- 微软官网下载win10离线介质
1.打开google浏览器 2.搜索win10官网下载或者直接输入网址https://www.microsoft.com/zh-cn/software-download/windows10 3.按F1 ...
- 06--Docker自定义镜像Tomcat9
1. 创建目录 /zhengcj/mydockerfile/tomcat9 2.将jdk和tomcat的安装包拷贝到tomcat9下 3.在tomcat9目录下创建Dockerfile文件,并写以下命 ...
- QTextEdit字符串的高亮显示问题
20130222 鬼猫猫 整理 http://www.cnblogs.com/muyr/ 解决方法的原始地址 http://www.qtcn.org/bbs/read.php?tid=20335 背景 ...
- Flask中的g到底是个什么鬼?
g到底是个什么鬼? 在一次请求请求的周期,可以在g中设置值,在本次的请求周期中都可以读取或复制. 相当于是一次请求周期的全局变量. from flask import Flask,g app = Fl ...
- MySQL全面瓦解21(番外):一次深夜优化亿级数据分页的奇妙经历
背景 1月22号晚上10点半,下班后愉快的坐在在回家的地铁上,心里想着周末的生活怎么安排. 突然电话响了起来,一看是我们的一个开发同学,顿时紧张了起来,本周的版本已经发布过了,这时候打电话一般来说是线 ...
- 网络Devops探索与实践 流程管理分析师
https://mp.weixin.qq.com/s/OKLiDi78uB8ZkPG2kUVxvA 网络Devops探索与实践 王镇 鹅厂网事 2020-09-23 9月16日举办的2020 ODC ...