更改

删除5,412字节 、 2025年6月10日 (二) 10:50
第3行: 第3行:  
Word2Vec 的底层是一个浅层神经网络,采用 Skip-gram 或 Continuous Bag-of-Words(CBOW)两种架构进行训练。训练后得到的词向量(Word Embedding)被广泛应用于自然语言处理(NLP)任务中,包括机器翻译(Machine Translation)、信息检索(Information Retrieval)、文本分类(Text Classification)和情感分析(Sentiment Analysis)等,成为当前 NLP 领域的重要基础方法之一。
 
Word2Vec 的底层是一个浅层神经网络,采用 Skip-gram 或 Continuous Bag-of-Words(CBOW)两种架构进行训练。训练后得到的词向量(Word Embedding)被广泛应用于自然语言处理(NLP)任务中,包括机器翻译(Machine Translation)、信息检索(Information Retrieval)、文本分类(Text Classification)和情感分析(Sentiment Analysis)等,成为当前 NLP 领域的重要基础方法之一。
 
=='''历史背景'''==
 
=='''历史背景'''==
−
Word2Vec 由 Tomas Mikolov 及其团队于 2013 年在 Google Research 提出。Tomas Mikolov 在布尔诺理工大学(Brno University of Technology)完成了神经网络语言建模的博士研究后,加入 Google后,与 Kai Chen、Greg Corrado 和 Jeffrey Dean 等人合作,致力于大规模数据下的词表示学习问题。面对传统方法在大规模语料处理上的局限,Mikolov 团队提出了两种简洁高效的浅层神经网络架构,即 Continuous Bag-of-Words(CBOW)和 Continuous Skip-gram,统称为 Word2Vec。Word2Vec 实现了在数十亿词级别的数据上快速训练高质量词向量的目标,一经发布便在NLP领域引起了广泛关注和应用。
+
20 世纪 80 年代,人们开始尝试使用神经网络将单词和概念表示为向量<ref>Hinton G E. Learning distributed representations of concepts[C]//Proceedings of the Annual Meeting of the Cognitive Science Society. 1986, 8.</ref><ref>Elman J L. Finding structure in time[J]. Cognitive science, 1990, 14(2): 179-211.</ref>。2010 年,Tomáš Mikolov(当时就读于布尔诺理工大学)与合著者一起将单隐层的简单递归神经网络应用于语言建模<ref>Mikolov T, Karafiát M, Burget L, et al. Recurrent neural network based language model[C]//Interspeech. 2010, 2(3): 1045-1048.</ref>。Word2vec 由 Tomas Mikolov 及其团队于 2013 年在 Google Research 提出。Tomas Mikolov 在布尔诺理工大学(Brno University of Technology)完成了神经网络语言建模的博士研究后,加入 Google后,与 Kai Chen、Greg Corrado 和 Jeffrey Dean 等人合作,致力于大规模数据下的词表示学习问题。面对传统方法在大规模语料处理上的局限,Mikolov 团队提出了两种简洁高效的浅层神经网络架构,即 Continuous Bag-of-Words(CBOW)和 Skip-gram,统称为 Word2Vec。Word2Vec 实现了在数十亿词级别的数据上快速训练高质量词向量的目标,一经发布便在NLP领域引起了广泛关注和应用。
   −
'''N-gram 模型'''
+
使用 Word2vec 算法创建的嵌入向量与早期的算法(如使用 n-grams 和潜在语义分析的算法)相比具有一些优势。GloVe 是斯坦福大学的一个团队专门作为竞争对手开发的,原始论文指出 GloVe 比 word2vec 有多处改进。Mikolov 认为,这种比较是不公平的,因为 GloVe 是在更多数据上训练出来的,而 fastText 项目表明,在相同数据上训练出来的 word2vec 更胜一筹。不过截至到现在,'''直接的 Word2vec 方法被认为是 "过时的"'''。基于transformer的模型,如 ELMo 和 BERT,在类似 Word2vec 的词嵌入模型之上添加了多个神经网络关注层,已被视为 NLP 领域的最新技术。
−
 
  −
N-gram模型基于一种简化的假设,即一个词的出现概率只依赖于它前面有限数量的词,而不是整个句子的全部历史。通过这种方式,语言建模问题被大大简化,可以通过局部上下文来近似建模词与词之间的关系。在N-gram模型中,"N"指的是窗口的大小。例如,当N为2时,称为二元模型(bigram),意味着每个词的出现只依赖于它前面的一个词;当N为3时,称为三元模型(trigram),每个词的出现依赖于前面两个词。为了建立这样的模型,通常需要在大量文本数据中统计各类词序列的出现频率,根据频率来估计词与上下文之间的关联强度。N-gram模型的基本思想非常直接:频繁一起出现的词组会被赋予较高的联合出现概率,从而在生成或理解语言时优先考虑。
  −
 
  −
由于自然语言极其丰富和多样,哪怕拥有大规模的训练语料,许多合理的词序列也未必在数据中出现过。因此,N-gram模型面临数据稀疏的问题。为了缓解这一问题,研究者们提出了各种平滑技术,为未出现过的词组分配合理的小概率。此外,N-gram模型还有其他局限,比如它只能建模固定长度的上下文,难以捕捉长距离的依赖关系;并且当N值增大时,模型的参数数量也会迅速膨胀,导致存储和计算成本变得很高。因此,在实际应用中通常只采用二元或三元模型,以在建模效果和计算资源之间取得平衡。
  −
 
  −
N-gram模型在统计语言建模、语音识别、机器翻译、信息检索等多个领域中长期发挥着基础性作用。它不仅为自然语言处理技术的发展奠定了重要的理论和实践基础,还启发了后续更加复杂、表达能力更强的语言建模方法。作为自然语言处理演进过程中不可或缺的一步,N-gram模型至今仍在许多简单任务中发挥着实际价值,并以其简洁有效的方法论为后续研究提供了重要借鉴。
  −
 
  −
'''潜在语义分析(Latent Semantic Analysis, LSA)'''
  −
 
  −
1990 年提出的 LSA 是最早试图从统计信息中抽取语义结构的方法。旨在从大规模文本数据中自动抽取潜在的语义结构。LSA 的核心思想是:词语的含义可以通过它们在不同文档中的共现模式来推断。具体来说,LSA 首先构建一个词-文档共现矩阵,矩阵中的每一行对应一个词,每一列对应一篇文档,矩阵元素表示词在文档中出现的频率或加权频率。为了从这种高维稀疏矩阵中提取有用的语义信息,LSA 采用了奇异值分解(Singular Value Decomposition, SVD)技术,将原始矩阵分解为三个矩阵的乘积,并截断只保留最大的若干个奇异值。这一降维过程使得词语和文档可以被映射到一个低维连续空间,在这个空间中,语义上相似的词和文档会被映射到彼此接近的位置。
  −
 
  −
LSA 的优势在于它能在一定程度上缓解词义多样性(polysemy)和同义性(synonymy)问题,揭示出词语之间的隐含关联关系。特别是在小到中等规模的语料库上,LSA 能够有效提取出有意义的语义结构,并在文档检索、文本分类等早期应用中取得了良好的效果。然而,LSA 也存在显著的局限性。首先,LSA 是一种无监督统计方法,它不区分不同类型的语义关系,容易混合不相关的信息。其次,由于 SVD 分解需要对整个共现矩阵进行全局运算,当词表规模和文档数量巨大时(如百万级、十亿级词量),计算成本极高且内存占用极大,在大规模语料上难以实际应用。
  −
 
  −
'''神经网络语言模型(Neural Network Language Model, NNLM)'''
  −
 
  −
进入 2000 年代,随着神经网络方法的发展,Yoshua Bengio 等人在 2003 年提出了神经网络语言模型(Neural Network Language Model, NNLM),这是第一个显式将词语表示为连续向量并联合训练语言建模任务的框架。在传统的 N-gram 语言模型中,词语被作为离散的符号处理,缺乏内部结构,无法体现词语之间的语义联系。而 NNLM 首次提出将每个词映射为一个低维稠密向量,并通过神经网络在端到端训练中自动优化这些词向量,能够有效捕捉词序和上下文信息。其基本结构包括一个输入层,将上下文词以 one-hot 向量形式编码;一个嵌入层,将稀疏编码映射到连续空间形成词向量;一个非线性隐藏层,建模上下文特征;以及一个输出层,生成词表中下一个词的概率分布。通过这种方式,NNLM 不仅提升了语言模型的预测性能,还首次引入了“词嵌入”(Word Embedding)这一重要概念,为后续自然语言处理方法的发展奠定了基础。但NNLM 由于模型包含复杂的非线性变换,同时输出层需计算整个词表大小的概率分布,使得训练过程在大规模语料上极为缓慢,计算开销和内存需求极高。此外,NNLM通常只能处理固定长度的上下文,限制了对长程依赖的建模能力。
  −
 
  −
为了克服传统神经网络语言模型(NNLM)只能建模固定长度上下文的局限,递归神经网络语言模型(Recurrent Neural Network Language Model, RNNLM)被提出。RNNLM 由 Tomas Mikolov 等人在 2010 年提出,其核心思想是通过递归连接隐藏层,使得网络在处理当前输入词时,能够同时参考前一时刻的隐藏状态,从而理论上具备建模任意长度上下文依赖的能力。在 RNNLM 中,每个时间步输入当前词的嵌入表示,并结合前一时刻的隐藏层状态,通过共享的隐藏权重矩阵更新新的隐藏状态,进而预测下一个词的概率分布。与 NNLM 的静态上下文窗口不同,RNNLM 的隐藏层作为一种动态记忆,可以不断累积和更新序列信息,因此更加灵活,能够捕捉到语言中远距离的依赖关系。RNNLM 的出现显著提升了语言建模的表达能力,使得模型能够更自然地处理复杂的语言现象,例如主谓一致、跨句关系等。然而,RNNLM 也存在明显的效率问题。由于递归连接的特性,每一步的隐藏状态更新都依赖前一步的计算结果,导致训练过程必须严格顺序进行,难以并行加速。同时,RNNLM 在每一个时间步都需要进行大规模矩阵乘法运算,尤其在输出层面对大词表进行归一化时,计算量和存储需求依然非常巨大。此外,传统的基本 RNN 结构在实际应用中还容易遭遇梯度消失或梯度爆炸的问题,使得模型在处理很长序列时训练变得困难。
   
== '''技术原理''' ==
 
== '''技术原理''' ==
 
Word2vec 的目的在于为每个词汇都分配一个稠密的向量,能够做到相比传统的稀疏向量(如 one-hot 编码),更具表达能力和计算效率。形式上也就是,如果词汇表为 <math>V</math>,每个词 <math>w\inV</math> 被映射为向量 <math>\mathbf{v}_w \in \mathbb{R}^d</math>,其中 <math>d \ll |V|</math>。
 
Word2vec 的目的在于为每个词汇都分配一个稠密的向量,能够做到相比传统的稀疏向量(如 one-hot 编码),更具表达能力和计算效率。形式上也就是,如果词汇表为 <math>V</math>,每个词 <math>w\inV</math> 被映射为向量 <math>\mathbf{v}_w \in \mathbb{R}^d</math>,其中 <math>d \ll |V|</math>。
130

个编辑