【CS224N 论文精读】Efficient Estimation of Word Representations in Vector Space(2013)

第一遍(游览文章)

标题以及作者

在这里插入图片描述

  • **文章类型:**经典NLP文章
  • **paper地址:**http://arxiv.org/pdf/1301.3781.pdf
  • **源码地址:**https://code.google.com/p/word2vec

摘要

我们提出两种可以从非常大的数据集训练连续向量表示的模型架构。在词相似任务上来衡量这些表示的质量,并将结果与之前基于不同类型的神经网络的表现最好的技术进行比较。我们观察到以更低的计算成本在准确性上有了很大的提高,从16亿单词数据集中学习词向量只要不到一天时间。本文还测试了词向量在语法和语义词的相似性

结论

本文研究了一系列句法和语义语言任务中,不同模型衍生的词向量表示的质量。我们观察到,与流行的神经网络模型(前馈神经网络和循环神经网络)相比,使用非常简单的模型架构可以训练高质量的但词向量。由于计算复杂度大大降低,因此可以从更大的数据集计算非常精确的高纬词向量。

我们正在进行的工作表明,词向量可以成功地应用于知识库中事实的自动拓展,也可以用于验证现有事实的正确性。

1 介绍

  1. 之前的N-gram模型具有简单性、鲁棒性(在大量数据上的简单模型比在少量数据上的复杂模型表现更好),但是简单的技术在很多任务中受限(很多场景缺乏数据)。
  2. 随着近年来机器学习技术的进步,在更大的数据上训练更复杂的模型已经成为可能,它们通常由于简单模型。可能最成功的概念是使用单词的分布式表示。例如:基于神经网络的语言模型显著优于N-gram模型

1.1 Goals of the Paper

在本文中,我们尝试通过开发新的模型架构来最大化这些向量运算的准确性(词向量的简单线性运算,例如:king-man+woman = queen),以保持单词之间的线性规律。本文设计了一个新的综合测试集来测量语法和语义规则;此外,我们还讨论了训练时间和准确性如何取决于词向量的维数和训练数据的数量。

1.2 Previous Work

  1. NNLM,该模型使用线性投影层和非线性隐藏层的前馈神经网络来联合学习单词向量和统计语言模型
  2. 词向量首先使用带有单个隐藏层的神经网络学习,然后用词向量来训练NNLM。因此,不构造完整的NNLM,词汇向量也可以被学习。本文中,我们直接拓展了这个架构,并专注于第一步,使用一个简单的模型学习词向量。
  3. 后来的研究表明,词向量可以显著改善和简化很多NLP应用。

第二遍(精读主要部分)

2 Model Architectures

2.1 Feedforward Neural Net Language Model(NNLM)

代码可见:

NNLM每个训练样例的计算复杂度是: Q = N × D + N × D × H + H × V Q = N×D+N×D×H+H×V Q=N×D+N×D×H+H×V(N表示输入个数,D表示投影维度,H表示隐藏层维度),计算瓶颈在H×V。经过层次softmax后,瓶颈变成N×D×H

2.2 Recurrent Neural Net Language Model(RNNLM)

RNNLM每个训练样例的计算复杂度是: Q = H × H + H × V Q = H×H+H×V Q=H×H+H×V

2.3 Parallel Training of Neural Networks

我们在一个名为DistBelief的大规模分布式框架上实现了多个模型

3. New Log-linear Models

在本节中,我们提出了两种新的模型架构,用于学习单词的分布式表示,它们试图降低计算复杂度至最低。从上一节观察到,大部分的复杂度是由模型中的非线性隐藏层造成的。

在这里插入图片描述

3.1 Continuous Bag-of-Words Model (CBOW)

第一个提出的结构类似于前馈NNLM,其中非线性隐藏层被去除,投影层为所有单词共享(而不仅仅是投影矩阵,NNLM是通过索引从投影矩阵获取词嵌入,而CBOW使用投影层生成词向量);因此,所有单词都被投影到相同的位置。我们称这种架构为词汇袋模型,因为词汇在历史中的顺序不影响投影。

此外,我们也使用了来自未来的词,采用完形填空的方式去预测中间的词。

训练复杂度为: Q = N × D + D × l o g 2 ( V ) Q = N × D + D × log_2(V) Q=N×D+D×log2(V)

3.2 Continuous Skip-gram Model

第二种架构类似于CBOW,但它不是根据上下文预测当前的单词,而是试图根据同一个句子中的另一个单词最大限度地分类一个单词。

更准确地说,我们将每个当前词作为一个输入到一个带连续投影层的对数线性分类器中(linear+softmax),预测当前词前后一定范围内的词。我们发现,增加范围可以提高结果词向量的质量,但也增加了计算的复杂性。由于距离较远的单词与当前单词之间的联系通常比距离较近的单词更小,因此我们通过在训练示例中对这些单词进行更少的抽样,从而对距离较远的单词给予更少的权重。

训练复杂度: Q = C × ( D + D × l o g 2 ( V ) ) Q = C×(D+D×log_2(V)) Q=C×(D+D×log2(V)),C表示预测的最大距离

4 结果

在这里插入图片描述

4.1 Task Description

为了衡量词向量的质量,我们定义了一个包含5类语义题和9类句法题的综合测试集。每个类别中的两个示例如上图所示。总共有8869道语义题和10675道句法题。每个类别中的问题都是通过两个步骤创建的:首先,手动创建一个相似的词对列表;然后,通过连接两个词对形成一个大的问题列表。例如,我们列出了68个美国大城市和它们所属的州,并通过随机选择两组词组成大约2.5万个问题。我们在测试集中只包含单个标记词,因此不存在多词实体(例如New York)。

我们评估所有问题类型的整体准确性,并分别评估每个问题类型(语义、句法)。只有当使用上述方法计算出的最接近向量的单词与问题中的正确单词完全相同时,才认为问题是正确的;同义词被算作错误。这也意味着达到100%的准确率是不可能的,因为目前的模型没有任何关于词法的输入信息。

4.2 Maximization of Accuracy

在这里插入图片描述

我们使用Google News语料库来训练单词向量。这个语料库包含大约6B个tokens。我们已经将vocabulary限制在100万个最常用的单词。显然,我们面临的是时间约束优化问题,因为可以预期,使用更多的数据和更高维度的词向量都将提高精度。为了估计模型架构的最佳选择,以尽可能快地获得最好的结果,我们首先评估了在训练数据子集上训练的模型,vocabulary限制在最频繁的30k个单词。在单词向量维数选择不同、训练数据量增加的情况下,使用CBOW架构的结果如表2所示。

可以看出,在某个点之后,增加更多的维度或增加更多的训练数据所带来的改善是递减的。因此,我们必须同时增加向量维数和训练数据的数量。

4.3 Comparison of Model Architectures

在这里插入图片描述

首先,我们使用相同的训练数据和640个相同维数的词向量,比较不同的模型架构来导出词向量。在进一步的实验中,我们使用新的语义-句法词关系测试集中的全套问题,即不受30k词汇量限制。我们还包括[20]中引入的一个测试集的结果,该测试集关注单词之间的语法相似性。

从表3可以看出,来自RNN的词向量在句法问题上表现较好。NNLM向量的表现明显优于RNN——这并不奇怪,因为RNNLM中的词向量直接连接到非线性隐藏层。CBOW体系结构在句法任务上比NNLM更好,在语义任务上与NNLM基本相同。最后,Skip-gram架构在语法任务上的表现比CBOW模型略差(但仍然比NNLM好),在测试的语义部分的表现比所有其他模型好得多。

在这里插入图片描述

在这里插入图片描述

对于进一步报告的实验,我们只使用了一个训练周期(同样,我们线性降低学习率,以便在训练结束时它接近于零)。使用一个epoch在两倍的数据上训练模型,比使用三个epoch在相同的数据上迭代,可以得到类似或更好的结果,如表5所示,并提供了额外的小速度。

5 Example of the Learned Relationships

表8显示了遵循各种关系的单词。我们遵循上面描述的方法:通过减去两个单词向量定义关系,然后将结果添加到另一个单词。例如,巴黎-法国+意大利=罗马。可以看出,准确率是相当不错的,虽然很明显还有很大的提升空间

在这里插入图片描述

我们相信,在具有更大维度的更大数据集上训练的词向量将会表现得更好,并将使新的创新应用程序的开发成为可能。另一种提高准确性的方法是提供不止一个关系的例子。通过使用10个而不是1个例子来形成关系向量(我们将每个向量平均起来),我们观察到在语义-语法测试中,我们最好的模型的准确性提高了约10%。

也可以应用向量运算来解决不同的任务。例如,我们观察到,通过计算单词列表的平均向量并找到最远的单词向量,可以很好地选择列表外的单词。在某些人类智力测试中,这是一种常见的问题。显然,使用这些技术仍有许多发现有待发现。

第三遍(回忆与思考)

  1. 本文提出的背景:当时NLP还处于统计语言模型和神经语言模型阶段,作者发现更加简单的模型可以在更大的数据上进行训练从而得到更好地效果(数据更为重要),或者说当时的复杂模型不易训练而且也没有好的计算工具(很多都在CPU上进行训练)。
  2. 作者本文的模型起源于NNLM,但是不同于NNLM的是,不使用非线性层,单词映射矩阵换成投影层,让词向量投影在一个空间中。(NNLM每次更新N-1个词向量,但是Word2vec更新整个映射空间)
  3. 作者仅使用了两层线性层,然后两种训练模式(CBOW、Skip-gram)在大量数据上进行训练,得到了具有较好语义和语法关系的词向量。(神经网络的副产物,线性层权重)
  4. 作者实现过程中为了降低softmax分类的计算复杂度,还加入层次softmax以及负采样的方法来减少计算量。

小结:(优点、使用场景、缺点)

优点:

训练出来的词向量具有更好的语义和语法关系;模型较为轻量;使用模型训练出来的词向量,进行语义和语法相关的实验。

使用场景:

可以提取出词向量,用于下游NLP任务

缺点:

目前是预训练模型的世界,通过微调应用于NLP下游任务,不会直接使用词向量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在全轮驱动(AWD)车辆中进行车速估计是一项重要的任务。估计车速可以帮助驾驶员更好地了解车辆的动态状况,确保驾驶的安全性。 首先,车辆的车速可以通过使用车辆自带的速度传感器来估计。这些传感器可以测量车轮旋转的速度,然后通过车辆的车轮直径等参数进行计算,从而得出车速的估计值。 其次,车速的估计还可以通过使用车辆上安装的惯性测量单元(IMU)进行。IMU可以测量车辆的加速度和旋转速度,通过对这些数据进行积分和滤波处理,可以得到车辆的位移和旋转角度。然后,通过这些数据计算出车辆的车速。 另外,车辆上的其他传感器也可以辅助车速的估计。例如,使用GPS可以测量车辆在地球表面上的位置变化,可以通过这些位置数据的变化来计算车速。另外,使用雷达或相机等传感器可以监测周围环境中的物体移动情况,通过分析这些移动的物体的速度和方向,可以得到车辆的车速估计值。 总之,在AWD车辆中进行车速估计是一项复杂的任务,需要结合多种传感器和数据进行计算和分析。准确的车速估计对于驾驶员的安全和行车控制至关重要。 ### 回答2: 在AWD车辆中估计车速可以通过多种方式来完成。其中一种方法是使用车辆的制动系统来估计车速。制动系统通过监测车辆的轮胎旋转速度来估计车速。当车辆行驶时,每个轮胎的旋转速度会根据车辆的速度而有所变化。通过比较不同轮胎的旋转速度,可以获得一个接近实际车速的估计。 另一种常见的方法是使用车辆的动力系统来估计车速。AWD车辆通常配备有多个驱动轴,每个驱动轴都有一个独立的动力输出装置。通过监测不同驱动轴的动力输出和转速,可以计算出车辆的速度。 除了以上两种方法外,还可以使用车辆的惯性传感器来估计车速。惯性传感器可以检测车辆加速度的变化,并根据这些变化来估计车速。这种方法相对于其他方法更加灵活,可以适用于各种道路和驾驶条件。 需要注意的是,这些方法都是基于估计和计算而来的,可能存在一定的误差。车辆的负载、行驶条件、轮胎磨损等因素都会对估计结果产生影响。因此,在估计车速时需要考虑这些因素,并进行适当的校正和调整,以提高估计精度。 ### 回答3: 在全轮驱动车辆中,估计车辆速度的主要方法有多种。其中一种常用的方法是使用车辆的转速和轮胎直径来进行估算。当车辆在行驶过程中,发动机的转速会通过传动装置传递给车轮,从而推动车辆前进。因此,通过测量发动机转速可以推断车辆的速度。同时,了解车辆所使用的轮胎直径也能提供一定的参考,因为车轮每转一圈所走过的距离与其直径有关。 另外一种估算车辆速度的方法是使用车辆的里程表和所用时间。里程表记录了车辆行驶的总距离,而所用时间可以通过计时器或车载导航系统等设备来获得。通过计算车辆在一段时间内行驶的距离,再与所用的时间进行比较,就可以估算出车辆的速度。 除了以上两种方法,现代车辆中也经常使用车载传感器来测量车辆的速度。这些传感器可以测量车轮的转速,然后通过电子控制单元(ECU)计算出车辆的速度。这种方法通常比较精确,可以准确地估算车辆的实际速度。 综上所述,在全轮驱动车辆中,估算车辆速度可以使用车辆转速和轮胎直径的关系、里程表和时间的关系以及车载传感器等方法。这些方法各有其优势和适用场景,在实际应用中可以根据需要选择合适的方法进行估算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值