标题:Efficient Estimation of Word Representations in Vector Space

作者:Tomas Mikolov

发表于:ICLR 2013

主要内容:

在NLP中,每一个词语都表示称实数向量的形式(称为word embedding or word representation)。通常词语的实数向量用神经网络进行训练得到,如Bengio在2003年的工作,以及在此基础上的改进,如:用递归的神经网络进行训练。不过这些方法计算复杂度较高,对词表大小、训练语料规模都有限制。本文的方法提供了一种log-bilinear模型,去除了神经网络的隐含层,仅用线性表示能力,计算词语的实数表示向量。

1. Model Architectures

1.1 Feedforward Neural Net Language Model (NNLM)

回顾Bengio在2003年的工作。神经网络分为输入层(词语id)、投影层(projection,由id转为词向量)、隐含层和输出层。整个网络的参数为:

Q = N*D  + N*D*H + H*V

其中N*D为输入层到投影层的权重,N是ngram中的n,表示上下文长度,D是每个词的实数表示维度;N*D*H 为投影层到隐含层的权重个数,H是隐含层节点个数;H*V是隐含层到输出层的权重个数,V是输出层节点个数。

为了提速,作者对输出层进行改造,用huffman树代替线性结构,从而使得参数降低为 H * log(V)

1.2 Recurrent Neural Net Language Model (RNNLM)

RNNLM的参数个数为

Q = H*H + H*V

1.3 Parallel Training of Neural Networks

google有一个工具叫DistBelief,可以让节点机与中心服务器同步神经网络中的梯度值,从而同步神经网络的各个权重。不过再后来看作者的源代码的时候,作者似乎只是用了linux多线程,来进行并行训练。

2. New Log-linear Models

这是作者着重介绍的模型。

作者发现,大量的计算都消耗在神经网络的非线性隐含层(The main observation from the previous section was that most of the complexity is caused by the non-linear hidden layer in the model),所以作者去除隐含层,以加快计算。另外,作者从前的研究成果,将词语实数向量的计算和神经网络对Ngram的训练相分开,相比同时训练,能大大提高效率(neural network language model can be successfully trained in two steps: first, continuous word vectors are learned using simple model, and then the N-gram NNLM is trained on top of these distributed representations of words.)

2.1 Continuous Bag-of-Words Model

去除了隐含层,所有N个上线问词语都投影到一个D维实属向量上(加和平均)。网络结构如下:

看样子是纯的线性结构;不过看作者的源代码(利用梯度那一部分),似乎是exp指数节点。

2.2 Continuous Skip-gram Model

上面是根据上下文来输出当前词语。另一种结构,是根据当前词语来输出网络上下文。如下:

3. 实验结果

3.1 Task Description

作者设计这样的任务:D(河北)-D(石家庄)+D(哈尔滨)=D(黑龙江)。D是词语的实属向量。上面公式解释为:河北的省会是石家庄,经过运算,哈尔滨是黑龙江的省会。其时写成D(河北)-D(石家庄)=D(黑龙江)-D(哈尔滨)更容易理解。作者先找出“河北--石家庄”这样的词语对儿,训练出来词语实属向量之后,用上面的计算来验证是否正确,计算出准确率。用准确率来衡量得出的词语实数向量的好坏。

3.2 Maximization of Accuracy

扩大两倍的向量维度,和扩大两倍的训练集,都能提升准确率,且增加的训练时间相同,不过提升的准确率幅度可不相同。在某些时候,提升向量维度的作法使得性能提升更大;某些时候,增加训练语料更好些。向量维度一般300维之后,再增加向量维度的作用就不大了。作者的学习速率设定为0.0025(很小啊)。

3.3 Comparison of Model Architectures

模型之间的相互比较,CBOW效果最好,然后是CSGM,Bengio2003的模型效果反而不好。还有可以看到,作者迭代了三次和迭代了一次,效果差别不大。所以对整个训练集来讲,迭代一次就够了。(个人观点哈)

3.4 Large Scale Parallel Training of Models

3.5 Microsoft Research Sentence Completion Challenge

微软的测试集合,就是有1k个句子,去掉其中一个词,然后给出五个词作为候选,任务是找到最合适的那个词使句子完整。作者把这个任务转成了计算句子概率的任务(对五个词都拼成句子,计算概率,选择概率最大的那个)。

完。

【Deep Learning学习笔记】Efficient Estimation of Word Representations in Vector Space_google2013的更多相关文章

  1. Efficient Estimation of Word Representations in Vector Space 论文笔记

    Mikolov T , Chen K , Corrado G , et al. Efficient Estimation of Word Representations in Vector Space ...

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

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

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

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

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

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

  5. 【deep learning学习笔记】注释yusugomori的DA代码 --- dA.h

    DA就是“Denoising Autoencoders”的缩写.继续给yusugomori做注释,边注释边学习.看了一些DA的材料,基本上都在前面“转载”了.学习中间总有个疑问:DA和RBM到底啥区别 ...

  6. [置顶] Deep Learning 学习笔记

    一.文章来由 好久没写原创博客了,一直处于学习新知识的阶段.来新加坡也有一个星期,搞定签证.入学等杂事之后,今天上午与导师确定了接下来的研究任务,我平时基本也是把博客当作联机版的云笔记~~如果有写的不 ...

  7. Deep Learning 学习笔记(8):自编码器( Autoencoders )

    之前的笔记,算不上是 Deep Learning, 只是为理解Deep Learning 而需要学习的基础知识, 从下面开始,我会把我学习UFDL的笔记写出来 #主要是给自己用的,所以其他人不一定看得 ...

  8. 【deep learning学习笔记】Recommending music on Spotify with deep learning

    主要内容: Spotify是个类似酷我音乐的音乐站点.做个性化音乐推荐和音乐消费.作者利用deep learning结合协同过滤来做音乐推荐. 详细内容: 1. 协同过滤 基本原理:某两个用户听的歌曲 ...

  9. 【deep learning学习笔记】注释yusugomori的RBM代码 --- 头文件

    百度了半天yusugomori,也不知道他是谁.不过这位老兄写了deep learning的代码,包括RBM.逻辑回归.DBN.autoencoder等,实现语言包括c.c++.java.python ...

随机推荐

  1. DEDECMS中,获取面包屑导航

    获取面包屑导航 {dede:field name='position'/} {dede:field.position/}

  2. Json对象序列化与反序列化

    如果后台的参数数对象,需要在前台传入: JS代码: //创建JS对象 var CUTTING_TABLET_MO = new Object(); CUTTING_TABLET_MO.CUTTING_T ...

  3. JS中如何判断null

    var exp = null; if (exp == null) { alert("is null"); } exp 为 undefined 时,也会得到与 null 相同的结果, ...

  4. python学习之html从0开始(一)

    <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...

  5. centos install(160112更新)

    centos安装之后: 更新 yum update 新增用户: useradd myuser passwd myuser 添加sudo: usermod -a -G wheel myuser //vi ...

  6. CorelDRAW 插件的安装和使用

    CorelDRAW 是一款在中国非常受欢迎的图形软件,开放的界面和编程技术,能够对它进行二次开发制作插件,插件大抵有三种gms.cpg.exe格式,下面介绍一下这三种插件的安装和使用方法. 一.gms ...

  7. 浅谈String类型

    首先,我们要知道的是String类型是一个引用类型,它的基类是Object.并且它的内容是只读的. 我们有时候经常会看到两个字符串类型,一个是“Sting”,一个是“string”.大写的String ...

  8. oracle中的隐式提交(auto commit)

    通常我们执行sql或pl/sql时,需要我们手工提交.这样才能使所做的更改永久保存到数据库. 但有时即使我们没有在sql或pl/sql中发出commit命令,所做的更改也会被提交.这种提交是在某些特定 ...

  9. [转]struct实例字段的内存布局(Layout)和大小(Size)

    在C/C++中,struct类型中的成员的一旦声明,则实例中成员在内存中的布局(Layout)顺序就定下来了,即与成员声明的顺序相同,并且在默认情况下总是按照结构中占用空间最大的成员进行对齐(Alig ...

  10. POJ1734 - Sightseeing trip

    DescriptionThere is a travel agency in Adelton town on Zanzibar island. It has decided to offer its ...