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 ...
随机推荐
- 什么是开发中经常说的'POCO'
什么是开发中经常说的'POCO'Posted By : 蓝狐Updated On : 2015-07-19在看一些EF的文章,经常提到POCO这个词,但是,有没有比较详细的说这个POCO是什么意思呢? ...
- 基础Markdown语法
Markdown语法 1.标题 //标题语法 # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 一级标题 二级标题 三级标题 四级标题 ...
- 敏感信息泄露 - Pikachu
概述: 由于后台人员的疏忽或者不当的设计,导致不应该被前端用户看到的数据被轻易的访问到. 比如:---通过访问url下的目录,可以直接列出目录下的文件列表;---输入错误的url参数后报错信息里面包含 ...
- kaggle新手如何在平台学习大神的代码
原创:数据臭皮匠 [导读]Kaggle ,作为听说它很牛X但从未接触过的同学,可能仅仅了解这是一个参加数据挖掘比赛的网站,殊不知Kaggle也会有赛题相关的数据集, 比如我们熟知的房价预测.泰坦尼克 ...
- HTML基础复习2
6.表格 6.1建立表格: 表格由<table></table>标签来定义 每行由<tr></tr>来定义,每行被分割为若干单元格,由<td> ...
- Mac下IDEA激活Jrebel
第一步:在idea中下载jrebel,过程省略 第二步:配置反向代理工具 Windows 版:http://blog.lanyus.com/archives/317.html MAC 版: 安装hom ...
- etcd 与 Zookeeper、Consul 等其它 kv 组件的对比
基于etcd的分布式配置中心 etcd docs | etcd versus other key-value stores https://etcd.io/docs/v3.4.0/learning/w ...
- A1Z26 Cipher - Letter Number A=1 B=2 C=3 - Online Decoder, Translator https://www.dcode.fr/letter-number-cipher
A1Z26 Cipher - Letter Number A=1 B=2 C=3 - Online Decoder, Translator https://www.dcode.fr/letter-nu ...
- 服务端渲染 数据驱动 不是渲染后的网页,而是一个由html和Javascript组成的app ssr 隐藏接口服务器
小结: 1. 服务端渲染主要的工作是把组件渲染为服务器端的 HTML 字符串,将它们直接发送到浏览器,最后将静态标记"混合"为客户端上完全交互的应用程序. 服务器给到客户端的已经是 ...
- python atexit模块学习
python atexit模块 只定义了一个register模块用于注册程序退出时的回调函数,我们可以在这个函数中做一下资源清理的操作 注:如果程序是非正常crash,或者通过os._exit()退出 ...