【Deep Learning学习笔记】Efficient Estimation of Word Representations in Vector Space_google2013
标题: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的更多相关文章
- Efficient Estimation of Word Representations in Vector Space 论文笔记
Mikolov T , Chen K , Corrado G , et al. Efficient Estimation of Word Representations in Vector Space ...
- pytorch --- word2vec 实现 --《Efficient Estimation of Word Representations in Vector Space》
论文来自Mikolov等人的<Efficient Estimation of Word Representations in Vector Space> 论文地址: 66666 论文介绍了 ...
- 一天一经典Efficient Estimation of Word Representations in Vector Space
摘要 本文提出了两种从大规模数据集中计算连续向量表示(Continuous Vector Representation)的计算模型架构.这些表示的有效性是通过词相似度任务(Word Similarit ...
- Efficient Estimation of Word Representations in Vector Space (2013)论文要点
论文链接:https://arxiv.org/pdf/1301.3781.pdf 参考: A Neural Probabilistic Language Model (2003)论文要点 https ...
- 【deep learning学习笔记】注释yusugomori的DA代码 --- dA.h
DA就是“Denoising Autoencoders”的缩写.继续给yusugomori做注释,边注释边学习.看了一些DA的材料,基本上都在前面“转载”了.学习中间总有个疑问:DA和RBM到底啥区别 ...
- [置顶]
Deep Learning 学习笔记
一.文章来由 好久没写原创博客了,一直处于学习新知识的阶段.来新加坡也有一个星期,搞定签证.入学等杂事之后,今天上午与导师确定了接下来的研究任务,我平时基本也是把博客当作联机版的云笔记~~如果有写的不 ...
- Deep Learning 学习笔记(8):自编码器( Autoencoders )
之前的笔记,算不上是 Deep Learning, 只是为理解Deep Learning 而需要学习的基础知识, 从下面开始,我会把我学习UFDL的笔记写出来 #主要是给自己用的,所以其他人不一定看得 ...
- 【deep learning学习笔记】Recommending music on Spotify with deep learning
主要内容: Spotify是个类似酷我音乐的音乐站点.做个性化音乐推荐和音乐消费.作者利用deep learning结合协同过滤来做音乐推荐. 详细内容: 1. 协同过滤 基本原理:某两个用户听的歌曲 ...
- 【deep learning学习笔记】注释yusugomori的RBM代码 --- 头文件
百度了半天yusugomori,也不知道他是谁.不过这位老兄写了deep learning的代码,包括RBM.逻辑回归.DBN.autoencoder等,实现语言包括c.c++.java.python ...
随机推荐
- 全部省市县数据库(MySQL脚本) (转)
/*MySQL - 5.5.47 *************//*!40101 SET NAMES utf8 */; create table `base_area` ( `codeid` me ...
- 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 ...
- MAC机中安装RUBY环境
在安装CocoaPods之前要先配置好RUBY环境,本文就怎么安装RUBY的环境进行一总结.安装Ruby环境首先需要安装Xcode然后需要安装Homebrew,接下来需要安装RVM最后安装Ruby环境 ...
- [译]Java Thread join示例与详解
Java Thread join示例与详解 Java Thread join方法用来暂停当前线程直到join操作上的线程结束.java中有三个重载的join方法: public final void ...
- PHP实现中文简体字和繁体字互转
function convert($str, $action='S'){ if($action != 'S' && $action != 'T'){ return $str; } $s ...
- 关于B/S系统中文件上传的大小限制怎么做
1.前端:采用flash控件或者Html5的特性(有浏览器版本要求)来判断文件大小.纯html或js是没法判断用户上传文件大小的. 2.nginx:服务器端的第一道防线,一般会有对上传文件做大小限制. ...
- ASP.NET如何获取根目录的方法汇总
编写程序的时候,经常需要用的项目根目录,自己总结如下: 1.取得控制台应用程序的根目录方法 方法1.Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径 方法 ...
- MyBatis定义复合主键
<resultMap type="XX" id="XXMap"> <id property="id" column=& ...
- 回顾Ado.Net
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Da ...
- mac 如何让文件隐藏
1.首先,要确保知道目标文件或文件夹的名称,你不把这个名称正确地输入到终端中,Mac也无能为力啊... 2.打开终端,输入chflags hidden 3.在上述代码的后面加上该文件夹的路径,但是注意 ...