Efficient Estimation of Word Representations in Vector Space 论文笔记
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。在本文中,作者主要研究了神经网络学习的单词分布式表示。
为了比较不同模型的计算复杂度,提出了如下的模型训练复杂度:
\]
- 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表示输出节点的个数
每个样本的计算复杂度公式如下所示:
\]
- \(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表示输出节点的个数
这种模型的特点是有循环矩阵连接隐藏层,具有时间延迟连接,这允许形成长短期记忆,过去的信息可以由隐藏状态表示,隐藏状态的更新由当前输入和前一个输入的隐藏层的状态决定
每个样本的计算复杂度公式如下所示:
\]
- \(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维的向量上(加和平均)。

计算复杂度是:
\]
Continuous Skip-gram Model
输入是特定的一个词的词向量,而输出是特定词对应的上下文词向量。
使用当前的单词作为输入,输入到一个投影层,然后会预测当前单词的上下文。

计算复杂度是:
\]
- C:单词之间的最大距离
Comments
关于这两个模型的具体分析可以参考这篇论文:Rong X . word2vec Parameter Learning Explained[J]. Computer ence, 2014.
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学习笔记】Efficient Estimation of Word Representations in Vector Space_google2013
标题:Efficient Estimation of Word Representations in Vector Space 作者:Tomas Mikolov 发表于:ICLR 2013 主要内容: ...
- ES搜索排序,文档相关度评分介绍——Vector Space Model
Vector Space Model The vector space model provides a way of comparing a multiterm query against a do ...
- 论文翻译——Deep contextualized word representations
Abstract We introduce a new type of deep contextualized word representation that models both (1) com ...
- 向量空间模型(Vector Space Model)的理解
1. 问题描述 给你若干篇文档,找出这些文档中最相似的两篇文档? 相似性,可以用距离来衡量.而在数学上,可使用余弦来计算两个向量的距离. \[cos(\vec a, \vec b)=\frac {\v ...
- 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 ...
- Solr相似度名词:VSM(Vector Space Model)向量空间模型
最近想学习下Lucene ,以前运行的Demo就感觉很神奇,什么原理呢,尤其是查找相似度最高的.最优的结果.索性就直接跳到这个问题看,很多资料都提到了VSM(Vector Space Model)即向 ...
随机推荐
- Recursive sequence (矩阵快速幂)2016ACM/ICPC亚洲区沈阳站
题目 Farmer John likes to play mathematics games with his N cows. Recently, they are attracted by recu ...
- Flink深入浅出: 应用部署与原理图解(v1.11)
往期推荐: Flink深入浅出:内存模型 Flink深入浅出:JDBC Source从理论到实战 Flink深入浅出:Sql Gateway源码分析 Flink深入浅出:JDBC Connector源 ...
- spring-boot-route(十二)整合redis做为缓存
redis简介 redis作为一种非关系型数据库,读写非常快,应用十分广泛,它采用key-value的形式存储数据,value常用的五大数据类型有string(字符串),list(链表),set(集合 ...
- 跟随Javac代码来解答字节码的疑惑
前言 本文是跟随掘金小册张师傅的<JVM字节码从入门到精通>练习而写的. 问题 问题一: 有如下代码: 1 package com.sun.tools.javac; 2 3 /** 4 * ...
- 【手摸手,带你搭建前后端分离商城系统】01 搭建基本代码框架、生成一个基本API
[手摸手,带你搭建前后端分离商城系统]01 搭建基本代码框架.生成一个基本API 通过本教程的学习,将带你从零搭建一个商城系统. 当然,这个商城涵盖了很多流行的知识点和技术核心 我可以学习到什么? S ...
- Cypress系列(65)- 测试运行失败自动重试
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 重试的介绍 学习前的三问 什么是重试测试 ...
- Python中列表、元组、字典、集合与字符串,相关函数,持续更新中……
本篇博客为博主第一次学 Python 所做的笔记(希望读者能够少点浮躁,认真阅读,平心静气学习!) 补充: 列表.元组和字符串共同属性: 属于有序序列,其中的元素有严格的先后顺序 都支持双向索引,索引 ...
- <二分查找+双指针+前缀和>解决子数组和排序后的区间和
<二分查找+双指针+前缀和>解决子数组和排序后的区间和 题目重现: 给你一个数组 nums ,它包含 n 个正整数.你需要计算所有非空连续子数组的和,并将它们按升序排序,得到一个新的包含 ...
- 程序员,想被别人发掘?那你有 freestyle 吗?
程序员群体是偏内向的,整天和计算机打交道,用代码说话,接受任务,默默工作. 如果这些任务是有挑战性的还行,你的工作成果就能帮你说话,可是大部分工作都是普普通通的,甚至有点儿重复性的劳动. 这个时候表面 ...
- [leetcode] 周赛 211
比赛题目:https://leetcode-cn.com/circle/discuss/luvHfG/ 两个相同字符之间的最长子字符串 题目:5543. 两个相同字符之间的最长子字符串. 开始理解错题 ...