Mikolov T , Chen K , Corrado G , et al. Efficient Estimation of Word Representations in Vector Space[J]. Computer ence, 2013.

源码:https://github.com/danielfrg/word2vec

文章目的

本文的目的是提出学习高质量的词向量(word2vec)的方法,这些方法主要利用在十亿或者百万词汇的数据集上。因此作者提出了两个新颖的模型(CBOW,Skip-gram)来计算连续向量表示,表示的质量用词的相似度来衡量,将结果与之前表现最好的神经网络网络模型进行比较。

作者试图用新的模型结构来最大化向量操作,并且保留单词之间的线性规律。同时讨论了训练时间和准确率如何依赖于单词向量的维度及训练数据量。

结论

  • 新的模型降低了计算复杂度,提高了准确率(从160亿单词的数据集中学习高质量的单词向量)
  • 这些向量在测试集上为度量语法和语义提供了最先进的性能。

背景

一些NLP系统和任务把词作为原子单元,词与词之间没有相似度,是作为词典的下标表示的,这种方法有几个好处:简单,鲁棒,在大数据集上训练的简单模型比小数据集上训练的复杂模型好。最广为流传的是用于统计语言模型的N元模型,今天,它可以训练几乎所有数据的n元模型。

这些简单的技术在很多任务上有限制。因此简单的改进这些基本的技术并不能带来显著的效果提升,必须关注更先进的技术。

Model Architectures

之前许多研究人员提出了许多不同类型的模型,例如LSA和LDA。在本文中,作者主要研究了神经网络学习的单词分布式表示。

为了比较不同模型的计算复杂度,提出了如下的模型训练复杂度:

\[O = E × T × Q
\]
  • E:训练迭代次数
  • T:训练集中的单词数量
  • Q:Q被每一个模型进一步定义,具体如下。

Feedforward Neural Net Language Model(NNLM)

结构:

  • Input Layer:使用one-hot编码的N个之前的单词,V是词汇表的大小
  • Projection Layer:维度是\(N×D\),使用了一个共享的投影矩阵
  • Hidden Layer:H表示隐藏层节点的个数
  • Output Layer:V表示输出节点的个数

每个样本的计算复杂度公式如下所示:

\[Q = N×D+N×D×H+H×V
\]
  • \(N×D\):输入层到投影的权重个数,N是上下文的长度,D是每个词的实数表示维度
  • \(N×D×H\):投影层到隐藏层的权重个数
  • \(H×V\):隐含层到输出层的权重个数

原本最重要的一项是\(H×V\),但是作者提出利用 hierarchical softmax 或者避免使用规则化模型来处理它。其中利用Huffman binary树来表示单词,需要评估的输出单元的个数下降了\(log_2(V)\)。因此,大多的计算复杂度来源于 \(N×D×H\) 项。

Recurrent Neural Net Language Model (RNNLM)

基于语言模型的循环神经网络主要克服前馈NNLM的缺点,比如需要确定文本的长度。RNN可以表示更复杂的模型。

结构:

  • Input Layer:单词表示D和隐藏层H有相同的维度
  • Hidden Layer:H表示隐藏层节点的个数
  • Output Layer:V表示输出节点的个数

这种模型的特点是有循环矩阵连接隐藏层,具有时间延迟连接,这允许形成长短期记忆,过去的信息可以由隐藏状态表示,隐藏状态的更新由当前输入和前一个输入的隐藏层的状态决定

每个样本的计算复杂度公式如下所示:

\[Q=H×H+H×V
\]
  • \(H×H\):输入层到隐藏层的权重个数
  • \(H×V\):隐藏层到输出层的个数

同样,使用 hierarchical softmax 可以把\(H×V\)项有效地下降为\(H×log_2(V)\)项。因此大多数地复杂度来源于\(H×H\)项。

Parallel Training of Neural Networks

作者在Google的大型分布式框架DistBelief上实现了几个模型,这个框架允许我们并行地运行同一个模型的不同副本,每个副本通过一个保存所有参数的中央服务器进行参数更新。对于这种并行训练,作者使用mini-batch异步梯度下降和一个叫做Adagrad的自适应的学习率。在这个框架下,通常使用一百或者更多的副本,每一个副本在一个的数据中心的一个机器上的使用多个CPU核心。

提出的模型

作者提出了两个新的模型(New Log-linear Models)来学习单词的表示,新模型的优势主要在于减小了计算复杂度。作者发现大量的计算复杂度主要来源于模型中的非线性隐藏层。

两个新的模型采用相似的模型结构,都有 Input层、Projection层和Output层。

Continuous Bag-of-Words Model

输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这特定的一个词的词向量。

和NNLM相比去掉了非线性隐藏层,并且投射层共享给所有的单词(不单单是投射矩阵的共享)。因此,所有单词都会投影到一个D维的向量上(加和平均)。

计算复杂度是:

\[Q=N×D+D×log_2(V)
\]

Continuous Skip-gram Model

输入是特定的一个词的词向量,而输出是特定词对应的上下文词向量。

使用当前的单词作为输入,输入到一个投影层,然后会预测当前单词的上下文。

计算复杂度是:

\[Q=C×(D+D×log_2(V))
\]
  • C:单词之间的最大距离

Comments

关于这两个模型的具体分析可以参考这篇论文:Rong X . word2vec Parameter Learning Explained[J]. Computer ence, 2014.

Efficient Estimation of Word Representations in Vector Space 论文笔记的更多相关文章

  1. pytorch --- word2vec 实现 --《Efficient Estimation of Word Representations in Vector Space》

    论文来自Mikolov等人的<Efficient Estimation of Word Representations in Vector Space> 论文地址: 66666 论文介绍了 ...

  2. 一天一经典Efficient Estimation of Word Representations in Vector Space

    摘要 本文提出了两种从大规模数据集中计算连续向量表示(Continuous Vector Representation)的计算模型架构.这些表示的有效性是通过词相似度任务(Word Similarit ...

  3. Efficient Estimation of Word Representations in Vector Space (2013)论文要点

    论文链接:https://arxiv.org/pdf/1301.3781.pdf 参考: A Neural Probabilistic Language Model (2003)论文要点  https ...

  4. 【Deep Learning学习笔记】Efficient Estimation of Word Representations in Vector Space_google2013

    标题:Efficient Estimation of Word Representations in Vector Space 作者:Tomas Mikolov 发表于:ICLR 2013 主要内容: ...

  5. ES搜索排序,文档相关度评分介绍——Vector Space Model

    Vector Space Model The vector space model provides a way of comparing a multiterm query against a do ...

  6. 论文翻译——Deep contextualized word representations

    Abstract We introduce a new type of deep contextualized word representation that models both (1) com ...

  7. 向量空间模型(Vector Space Model)的理解

    1. 问题描述 给你若干篇文档,找出这些文档中最相似的两篇文档? 相似性,可以用距离来衡量.而在数学上,可使用余弦来计算两个向量的距离. \[cos(\vec a, \vec b)=\frac {\v ...

  8. In abstract algebra, a congruence relation (or simply congruence) is an equivalence relation on an algebraic structure (such as a group, ring, or vector space) that is compatible with the structure in

    https://en.wikipedia.org/wiki/Congruence_relation In abstract algebra, a congruence relation (or sim ...

  9. Solr相似度名词:VSM(Vector Space Model)向量空间模型

    最近想学习下Lucene ,以前运行的Demo就感觉很神奇,什么原理呢,尤其是查找相似度最高的.最优的结果.索性就直接跳到这个问题看,很多资料都提到了VSM(Vector Space Model)即向 ...

随机推荐

  1. Java知识系统回顾整理01基础03变量06变量的作用域

    一.变量根据所处的位置对应不同的名称 变量处于不同的位置,有不同的名称 名称分别是  字段,属性 参数 局部变量 不同名称的变量,其作用域是不一样的 二.字段,属性,Field 当一个变量被声明在类下 ...

  2. DOS批处理中%cd%与%~dp0的区别详解

    转载:https://www.jb51.net/article/105325.htm DOS批处理中%cd%与%~dp0的区别详解     Windows下批处理中%cd%和%~dp0都能用来表示当前 ...

  3. 使用Cadence绘制PCB流程

    转载:https://blog.csdn.net/hailin0716/article/details/47169799 之前使用过cadence画过几块板子,一直没有做过整理.每次画图遇到问题时,都 ...

  4. LPCTSTR类型和字符串

    转载: 1.https://blog.csdn.net/Joker_mw/article/details/79127790 2.https://blog.csdn.net/shelleyhuhu/ar ...

  5. Golang是如何操作excel的?

    关键术语介绍 为了方便开源库的快速上手,我们先来了解 excel 中的几个关键术语,如下图所示,①为sheet,也就是表格中的页签:②为row,代表 excel 中的一行:③为cell,代表 exce ...

  6. ubuntu20 使用命令安装 redis

    安装 redis sudo apt-get install redis-server -y 配置文件 vi /etc/redis/redis.conf # 设置端口 port # 设置密码 requi ...

  7. python反序列化学习记录

    pickle与序列化和反序列化 官方文档 模块 pickle 实现了对一个 Python 对象结构的二进制序列化和反序列化. "pickling" 是将 Python 对象及其所拥 ...

  8. 转一个veth的文章

    这篇写的很好,清晰明白,保存一下https://www.cnblogs.com/bakari/p/10613710.html

  9. 【学习笔记】陀螺 Treap

    以下来自一堆人从食堂走回机房时的 yy \(\Huge{强烈谴责\ \mathrm{s\color{red}{kyh}}\ 看博客不留评论的行为}\) 听说 longdie 要爆砍 FHQ 无旋 Tr ...

  10. 【最大匹配+二分答案】HDU 2236 无题II

    题目内容 这是一个简单的游戏,在一个\(n×n\)的矩阵中,找\(n\)个数使得这\(n\)个数都在不同的行和列里并且要求这\(n\)个数中的最大值和最小值的差值最小. 输入格式 输入一个整数\(T\ ...