更改

添加3,152字节 、 2025年5月18日 (日) 17:33
技术原理
第27行: 第27行:  
为了克服传统神经网络语言模型(NNLM)只能建模固定长度上下文的局限,递归神经网络语言模型(Recurrent Neural Network Language Model, RNNLM)被提出。RNNLM 由 Tomas Mikolov 等人在 2010 年提出,其核心思想是通过递归连接隐藏层,使得网络在处理当前输入词时,能够同时参考前一时刻的隐藏状态,从而理论上具备建模任意长度上下文依赖的能力。在 RNNLM 中,每个时间步输入当前词的嵌入表示,并结合前一时刻的隐藏层状态,通过共享的隐藏权重矩阵更新新的隐藏状态,进而预测下一个词的概率分布。与 NNLM 的静态上下文窗口不同,RNNLM 的隐藏层作为一种动态记忆,可以不断累积和更新序列信息,因此更加灵活,能够捕捉到语言中远距离的依赖关系。RNNLM 的出现显著提升了语言建模的表达能力,使得模型能够更自然地处理复杂的语言现象,例如主谓一致、跨句关系等。然而,RNNLM 也存在明显的效率问题。由于递归连接的特性,每一步的隐藏状态更新都依赖前一步的计算结果,导致训练过程必须严格顺序进行,难以并行加速。同时,RNNLM 在每一个时间步都需要进行大规模矩阵乘法运算,尤其在输出层面对大词表进行归一化时,计算量和存储需求依然非常巨大。此外,传统的基本 RNN 结构在实际应用中还容易遭遇梯度消失或梯度爆炸的问题,使得模型在处理很长序列时训练变得困难。
 
为了克服传统神经网络语言模型(NNLM)只能建模固定长度上下文的局限,递归神经网络语言模型(Recurrent Neural Network Language Model, RNNLM)被提出。RNNLM 由 Tomas Mikolov 等人在 2010 年提出,其核心思想是通过递归连接隐藏层,使得网络在处理当前输入词时,能够同时参考前一时刻的隐藏状态,从而理论上具备建模任意长度上下文依赖的能力。在 RNNLM 中,每个时间步输入当前词的嵌入表示,并结合前一时刻的隐藏层状态,通过共享的隐藏权重矩阵更新新的隐藏状态,进而预测下一个词的概率分布。与 NNLM 的静态上下文窗口不同,RNNLM 的隐藏层作为一种动态记忆,可以不断累积和更新序列信息,因此更加灵活,能够捕捉到语言中远距离的依赖关系。RNNLM 的出现显著提升了语言建模的表达能力,使得模型能够更自然地处理复杂的语言现象,例如主谓一致、跨句关系等。然而,RNNLM 也存在明显的效率问题。由于递归连接的特性,每一步的隐藏状态更新都依赖前一步的计算结果,导致训练过程必须严格顺序进行,难以并行加速。同时,RNNLM 在每一个时间步都需要进行大规模矩阵乘法运算,尤其在输出层面对大词表进行归一化时,计算量和存储需求依然非常巨大。此外,传统的基本 RNN 结构在实际应用中还容易遭遇梯度消失或梯度爆炸的问题,使得模型在处理很长序列时训练变得困难。
 
== '''技术原理''' ==
 
== '''技术原理''' ==
−
Word2vec 的目的在于为每个词汇都分配一个稠密的向量,能够做到相比传统的稀疏向量(如 one-hot 编码),更具表达能力和计算效率。形式上也就是,如果词表为\V,每个词\w\inV 被映射为向量 vw​∈Rd,其中 d≪|V|。
+
Word2vec 的目的在于为每个词汇都分配一个稠密的向量,能够做到相比传统的稀疏向量(如 one-hot 编码),更具表达能力和计算效率。形式上也就是,如果词汇表为\V,每个词w\inV 被映射为向量 v_w\inRd,其中 d≪|V|。
    
Word2vec使用两种模型架构中的任何一种来生成词汇的分布式表示:连续词袋模型(CBOW)或Skip-gram。在这两种架构中,word2vec 在遍历语料库时都会考虑单个词和滑动上下文窗口,这种设计来源于分布式假设,由语言学家 Zellig Harris 在1954年提出。它的核心思想是:“上下文相似的词具有相似的意义”(You shall know a word by the company it keeps)。即如果两个词在相似的上下文中出现,那么它们的意义可能也相似。
 
Word2vec使用两种模型架构中的任何一种来生成词汇的分布式表示:连续词袋模型(CBOW)或Skip-gram。在这两种架构中,word2vec 在遍历语料库时都会考虑单个词和滑动上下文窗口,这种设计来源于分布式假设,由语言学家 Zellig Harris 在1954年提出。它的核心思想是:“上下文相似的词具有相似的意义”(You shall know a word by the company it keeps)。即如果两个词在相似的上下文中出现,那么它们的意义可能也相似。
第40行: 第40行:     
==== CBOW ====
 
==== CBOW ====
−
给定一个长度为2L的上下文窗口,用上下文预测中心词汇,目标是最大化下式:<syntaxhighlight lang="tex">
+
CBOW(Continuous Bag of Words)模型是一种经典的'''词嵌入(Word Embedding)'''模型,由Mikolov等人在2013年提出,是Word2Vec的两种核心架构之一。CBOW通过上下文词汇预测当前词,从而学习词向量。CBOW的输入是目标词周围的上下文词汇(窗口内的相邻词),输出是对目标词V_t的预测。模型的结构分为三层,分别是输入层、嵌入层(Embedding)、输出层。
 +
 
 +
'''输入层:'''以上下文词的one-hot编码为输入向量w_t(维度为词汇表大小 V)。
 +
 
 +
'''嵌入层:'''
 +
 
 +
将每个 输入向量与一个共享的嵌入矩阵W_{V*N}相乘,N为词向量的维度:
 +
 
 +
求每个上下文词汇的向量求和(或者求平均)得到向量h:
 +
 
 +
输出层:
 +
 
 +
将嵌入层的输出向量与输出矩阵W'_{V*N}相乘得到输出向量,在通过softmax得到概率分布,来预测目标词汇,因此优化的目标就是最大化下式:<syntaxhighlight lang="tex">
 
\frac{1}{T} \sum_{t=1}^{T} \log P(w_t \mid w_{t-c}, \ldots, w_{t-1}, w_{t+1}, \ldots, w_{t+c})
 
\frac{1}{T} \sum_{t=1}^{T} \log P(w_t \mid w_{t-c}, \ldots, w_{t-1}, w_{t+1}, \ldots, w_{t+c})
   −
</syntaxhighlight>结构:输入层、隐藏层、输出层
+
</syntaxhighlight>最终所得到的词向量就包含在嵌入矩阵W或者输出矩阵W'中,也可以将两者所得到的向量进行平均得到最终的词向量。
    
==== '''Skip-gram 模型''' ====
 
==== '''Skip-gram 模型''' ====
−
原理:通过目标词预测上下文
+
Skip-gram 是 Word2Vec 的另一种核心模型,由 Mikolov 等人于 2013 年提出。与 CBOW(通过上下文预测中心词)不同,Skip-gram 是通过中心词预测上下文词,适合捕捉罕见词的语义,尤其在大规模语料上表现优异。Skip-gram的模型结构也分为三层:输入层、投影层、输出层。
 +
 
 +
'''输入层:'''一段文本中心词汇的one-hot编码作为输入向量。
 +
 
 +
'''投影层:'''
 +
 
 +
输入向量与嵌入矩阵W_{V*N}相乘,得到词向量传入输出层中:
 +
 
 +
 
 +
输出层:
 +
 
 +
与CBOW模型的输出层相同,也是一个softmax分类器,其目的是最大化中心词的上下文词汇的预测概率:
 +
 
   −
与 CBOW 的对比
+
在Skip-gram中,词向量即为嵌入层之后所得到的向量,而不同于CBOW,Skip-gram的输出矩阵W'虽然也可以用来作为获得词向量的依据,但是其含义是中心词在上下文中的角色,在学习词汇之间关系的任务中可能使用W'作为词向量会有更好的表现。
 +
 
 +
相比之下,Skip-gram的效果要优于CBOW,这是因为CBOW在平均了词向量之后丧失了词汇的位置信息,丢失了词汇之间的关联性。
    
==='''训练方法'''===
 
==='''训练方法'''===
−
负采样(Negative Sampling)
+
无论是CBOW还是Skip-gram,其总是需要遍历整个词表,因此计算代价很大,所以就有了两种近似的计算方法,负采样与层次softmax。这两个是 Word2Vec 中非常重要的训练加速策略,它们用于高效地优化输出词的概率分布。
 +
 
 +
'''负采样(Negative Sampling):'''
 +
 
 +
负采样只更新与目标词和少数“负样本”相关的参数,而不是计算整个 softmax。而“复样本”代表没有出现在上下文中、但被人为采样出来“假装”是上下文的词,一般采用词频过高或者过低的词汇。相反,“正样本”就是真实共现的词对,也就是模型要学习的正确上下文关系。而负采样的目的就是最大化正样本的出现概率:
 +
 
 +
 
 +
其中,\sigma是sigmoid函数,同时最小化负样本的出现概率:
 +
 
 +
 
 +
合并起来就是新的目标函数:
 +
 
 +
 
 +
这样一来,计算的代价下降了许多。
 +
 
 +
 
 +
'''层次 Softmax(Hierarchical Softmax):'''
   −
层次 Softmax(Hierarchical Softmax)
+
层次softmax的核心思路是构建一个霍夫曼树,每个叶节点代表一个词汇,而预测一个词汇就是沿着树走的一条路径,对应的也就是一个不断重复的二分类问题,目标函数就可以变化为:
   −
优化算法(如随机梯度下降)
      
=='''应用领域'''==
 
=='''应用领域'''==
130

个编辑