标题: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. 全部省市县数据库(MySQL脚本) (转)

    /*MySQL - 5.5.47 *************//*!40101 SET NAMES utf8 */; create table `base_area` (    `codeid` me ...

  2. SQL SERVER 遇到Unable to find the requested .Net Framework Data Provider. It may not be installed. (System.Data)

    今天新装的SQLSERVER 2012 EXPRESS 用于客户端程序 安装完成后打开登陆SQLSERVER 一切正常 当查看表定义.视图结构时,弹出一下内容 Unable to find the r ...

  3. MAC机中安装RUBY环境

    在安装CocoaPods之前要先配置好RUBY环境,本文就怎么安装RUBY的环境进行一总结.安装Ruby环境首先需要安装Xcode然后需要安装Homebrew,接下来需要安装RVM最后安装Ruby环境 ...

  4. [译]Java Thread join示例与详解

    Java Thread join示例与详解 Java Thread join方法用来暂停当前线程直到join操作上的线程结束.java中有三个重载的join方法: public final void ...

  5. PHP实现中文简体字和繁体字互转

    function convert($str, $action='S'){ if($action != 'S' && $action != 'T'){ return $str; } $s ...

  6. 关于B/S系统中文件上传的大小限制怎么做

    1.前端:采用flash控件或者Html5的特性(有浏览器版本要求)来判断文件大小.纯html或js是没法判断用户上传文件大小的. 2.nginx:服务器端的第一道防线,一般会有对上传文件做大小限制. ...

  7. ASP.NET如何获取根目录的方法汇总

    编写程序的时候,经常需要用的项目根目录,自己总结如下: 1.取得控制台应用程序的根目录方法 方法1.Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径 方法 ...

  8. MyBatis定义复合主键

    <resultMap type="XX" id="XXMap">   <id property="id" column=& ...

  9. 回顾Ado.Net

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Da ...

  10. mac 如何让文件隐藏

    1.首先,要确保知道目标文件或文件夹的名称,你不把这个名称正确地输入到终端中,Mac也无能为力啊... 2.打开终端,输入chflags hidden 3.在上述代码的后面加上该文件夹的路径,但是注意 ...