阅读论文笔记《Efficient Estimation of Word Representations in Vector Space》

这篇文章写于2013年,对理解 word2vec 的发展历程挺有帮助。

本文仅适用于 Word2Vect 的复盘

引言

这篇论文致力于探索从海量数据中学习高质量单词向量的技术。当时已发现词向量能保留语义特征,例如 "国王 - 男人 + 女人≈女王"。论文打算借助该特性,提出新的词向量表示方法,进一步提高词向量质量,并探究训练时间、准确性与向量维度、数据量之间的关联。

此前,已有不少利用神经网络语言模型 NNLM 生成词向量的研究,其中部分研究发现,简单模型展现出了学习词向量的能力。本文从中获得启发,决定探索简单神经网络结构,期望在降低计算复杂度的同时,高效地从大规模数据中学习高质量词向量。

模型架构

首先将模型的计算复杂度定义为需要训练的参数的数量。

有两个目的:1、最大化准确度;2、最小化计算复杂度

论文基于前馈神经网络语言模型(NNLM)进行了改善。

NNLM 包含输入层、映射层、隐藏层和输出层,每轮训练的计算复杂度为:

这里主要是 H × V H\times V H×V 这一项占主导,也就是 V V V 这个值。论文使用了已有方法分层 softmax 对这部分进行了优化。这样一来,变成了 N × D × H N\times D\times H N×D×H 进行主导,为了优化这部分,论文去掉了隐藏层,这样模型的复杂度就很大程度上取决于softmax归一化的效率了。

作为 NNLM 的改进,RNNLM 考虑了可变上下文长度,利用 RNN 来处理。RNNLM 由输入层、隐藏层和输出层这三层构成,相应每次训练的计算复杂度为:

其中词向量的维度与隐藏层维度相同。 H × V H\times V H×V 仍然可以使用分层 softmax 来优化。这样一来,复杂度的优化集中于 H × H H\times H H×H。

在本论文中,采用了并行训练的方法,使用多个部署了模型副本的 GPU 同时训练。论文使用小批量异步梯度下降方法,即将训练数据划分为多个 batch 部署到不同的 GPU 上,这些 GPU 异步地各自进行训练。另外,论文使用了名为 Adagrad 的自适应学习率过程。

新的对数线性模型

从前面对 NNLM 和 RNNLM 的介绍中,我们看到计算复杂度主要来自非线性隐藏层。为此论文考虑探索更简单的架构(想去掉隐藏层),尽管这样的结果不如神经网络模型那样精确,但对于大规模训练数据来说可能更加有效。

论文提出了 CBOW 和 Skip-gram 这两个简单的架构。

连续词袋模型(CBOW)

CBOW 的计算复杂度为:

连续跳元模型(Skip-gram)

Skip-gram 的计算复杂度:

相关推荐
沪漂阿龙4 天前
面试题:文本表示方法详解——One-hot、Word2Vec、上下文表示、BERT词向量全解析(NLP基础高频考点)
人工智能·神经网络·自然语言处理·bert·word2vec
沪漂阿龙13 天前
深度硬核!2026年NLP面试最全指南:从Word2Vec到Transformer,大模型时代算法工程师通关秘籍
自然语言处理·面试·word2vec
大龄程序员狗哥24 天前
第17篇:词向量(Word2Vec)解析——让文字拥有数学灵魂(原理解析)
人工智能·自然语言处理·word2vec
輕華1 个月前
Word2Vec与CBOW算法实战:从词向量到上下文感知
人工智能·算法·word2vec
Daydream.V1 个月前
语言转换方法——CBOW
人工智能·语言模型·word2vec·词向量·cbow·神经语言模型
F_D_Z1 个月前
NNLM、Word2Vec(CBOW、Skip-gram) 与 BERT:神经网络语言模型的演进与对比
神经网络·bert·word2vec
我材不敲代码1 个月前
NLP 入门——PyTorch 从零实现 Word2Vec 之 CBOW 模型
pytorch·自然语言处理·word2vec
甄心爱学习2 个月前
【word2vec】为什么要维护两套词向量矩阵?
机器学习·矩阵·word2vec
Westward-sun.2 个月前
NLP 词向量实战:PyTorch 从零实现 CBOW(Word2Vec)全流程拆解
人工智能·pytorch·python·深度学习·自然语言处理·word2vec
Fleshy数模2 个月前
从零实现Word2Vec之CBOW模型:理解词向量的核心原理
人工智能·自然语言处理·word2vec