0


【AI知识点】词嵌入(Word Embedding)

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】


词嵌入(Word Embedding)是自然语言处理(NLP)中的一种技术,用于将词语或短语映射为具有固定维度的实数向量。这些向量(嵌入向量)能够捕捉词语之间的语义相似性,即将语义相近的词映射到向量空间中距离较近的位置,而语义相异的词会被映射到较远的位置。词嵌入是文本表示学习的核心,广泛应用于文本分类、机器翻译、文本生成、问答系统等任务中。

1. 词嵌入的基本概念

词嵌入将离散的词语转换为稠密的低维向量表示,这些向量通常在100到300维之间。相比于传统的词袋模型(Bag-of-Words,BOW)或词频-逆文档频率(TF-IDF)模型生成的高维稀疏向量,词嵌入模型生成的向量更加紧凑且具有语义信息。

例如,词袋模型会将每个词表示为一个非常高维的向量,每个维度对应一个词汇表中的词,而词嵌入则将每个词用一个低维稠密向量表示。通过这种方式,模型能够捕捉到词语之间的语义关系。


2. 词嵌入的表示

每个词语被表示为一个向量。例如,假设我们使用300维度的词嵌入,那么词“苹果”可能会被表示为如下的300维向量:

       v 
      
     
       苹果 
      
     
    
      = 
     
    
      [ 
     
    
      0.21 
     
    
      , 
     
    
      − 
     
    
      0.56 
     
    
      , 
     
    
      0.87 
     
    
      , 
     
    
      … 
     
    
      , 
     
    
      0.34 
     
    
      ] 
     
    
   
     \mathbf{v_{\text{苹果}}} = [0.21, -0.56, 0.87, \dots, 0.34] 
    
   
 v苹果​=[0.21,−0.56,0.87,…,0.34]

而词“香蕉”也会被映射到一个向量,如果“苹果”和“香蕉”在语义上相似,那么它们的嵌入向量(Embedding Vector)在向量空间(vector space)中的距离就会较近。


3. 词嵌入的原理

词嵌入模型的基本思想是:语义相似的词通常会出现在相似的上下文中。这种观点源自于“分布式语义学”(distributional semantics),即词语的语义可以通过它们的上下文来确定。基于这个思想,词嵌入模型会通过上下文中的词语共现关系来学习每个词的嵌入向量。

通过学习,模型能够将语义相似的词语映射到向量空间中相近的点。例如,在大规模文本语料中,“苹果”和“香蕉”可能频繁出现在类似的上下文中,例如“我喜欢吃___”,因此它们会具有相似的嵌入向量。


4. 常见的词嵌入模型

a. Word2Vec

Word2Vec 是一种经典的词嵌入模型,由Google的Mikolov等人提出。它通过神经网络学习词语的嵌入向量,目标是让语义相似的词语具有相似的向量表示。Word2Vec 提供了两种训练方法:

  • CBOW(Continuous Bag of Words):通过预测上下文来推测目标词。例如,给定句子“我喜欢吃苹果”,模型使用“我”、“喜欢”和“吃”预测目标词“苹果”。
  • Skip-Gram:反过来,通过目标词预测上下文。例如,使用“苹果”预测“我”、“喜欢”和“吃”。

Word2Vec 的输出是一个固定维度的词嵌入向量,它能够很好地捕捉词语之间的语义关系。例如,向量

      v 
     
    
      国王 
     
    
   
     − 
    
    
    
      v 
     
    
      男人 
     
    
   
     + 
    
    
    
      v 
     
    
      女人 
     
    
   
  
    \mathbf{v_{\text{国王}}} - \mathbf{v_{\text{男人}}} + \mathbf{v_{\text{女人}}} 
   
  
v国王​−v男人​+v女人​ 的结果向量会接近于  
 
  
   
    
    
      v 
     
    
      女王 
     
    
   
  
    \mathbf{v_{\text{女王}}} 
   
  
v女王​,表明“国王”和“女王”之间的关系与“男人”和“女人”之间的关系相似。

b. GloVe

GloVe(Global Vectors for Word Representation) 是斯坦福大学提出的一种基于全局词共现矩阵的词嵌入方法。与 Word2Vec 的局部上下文学习方式不同,GloVe 利用全局的词语共现信息来学习嵌入向量。

GloVe 的训练目标是最小化词语与上下文共现概率的差异。它的基本公式是:

      log 
     
    
      ⁡ 
     
    
      P 
     
    
      ( 
     
     
     
       w 
      
     
       i 
      
     
    
      , 
     
     
     
       w 
      
     
       j 
      
     
    
      ) 
     
    
      = 
     
     
     
       v 
      
      
      
        w 
       
      
        i 
       
      
     
    
      ⋅ 
     
     
     
       v 
      
      
      
        w 
       
      
        j 
       
      
     
    
   
     \log P(w_i, w_j) = \mathbf{v_{w_i}} \cdot \mathbf{v_{w_j}} 
    
   
 logP(wi​,wj​)=vwi​​⋅vwj​​

其中

     P 
    
   
     ( 
    
    
    
      w 
     
    
      i 
     
    
   
     , 
    
    
    
      w 
     
    
      j 
     
    
   
     ) 
    
   
  
    P(w_i, w_j) 
   
  
P(wi​,wj​) 表示词  
 
  
   
    
    
      w 
     
    
      i 
     
    
   
  
    w_i 
   
  
wi​ 和词  
 
  
   
    
    
      w 
     
    
      j 
     
    
   
  
    w_j 
   
  
wj​ 的共现概率, 
 
  
   
    
    
      v 
     
     
     
       w 
      
     
       i 
      
     
    
   
  
    \mathbf{v_{w_i}} 
   
  
vwi​​ 和  
 
  
   
    
    
      v 
     
     
     
       w 
      
     
       j 
      
     
    
   
  
    \mathbf{v_{w_j}} 
   
  
vwj​​ 是它们的嵌入向量。GloVe 通过全局语料中的词共现信息训练出词嵌入向量,因此它在大型语料库上具有良好的表现。

c. FastText

FastText 是 Facebook 提出的一种基于子词单元的词嵌入模型,它扩展了 Word2Vec 的功能。FastText 的主要优势在于它不仅将每个词表示为一个嵌入向量,还将词分解为多个子词(如词干、前缀、后缀),从而可以更好地处理未登录词(即在训练语料中未出现的词)以及词语的形态变化。

FastText 的一个典型应用是在处理类似于“running”和“run”这种形态变化时,它能够识别出两者的关系并生成相似的嵌入向量。

d. BERT

BERT(Bidirectional Encoder Representations from Transformers) 是一种基于Transformer架构的预训练语言模型。与Word2Vec和GloVe的静态词嵌入不同,BERT 生成的词嵌入是动态的,即词语的嵌入向量会根据上下文的不同而变化。

BERT通过双向上下文(即同时考虑前后文)生成词嵌入,能够更好地处理词语在不同语境中的多义性。例如,词“bank”在“金融机构”和“河岸”的不同语境下会有不同的嵌入向量表示。


5. 词嵌入模型的训练方法

词嵌入模型通过无监督学习在大规模语料库上进行训练,主要基于上下文词语的共现关系。模型的目标是通过优化一个损失函数,使得在相似上下文中出现的词语具有相似的嵌入向量。

  • 共现矩阵:词嵌入模型依赖于上下文中词与词之间的共现关系。共现矩阵统计了每对词语在相邻位置中出现的次数。基于这些统计,模型可以推导出词语之间的相似性。
  • 优化目标:模型通过最小化某个损失函数来学习词嵌入。例如,Word2Vec 使用负采样(Negative Sampling)方法,通过最大化真实上下文词对的概率,最小化随机负样本词对的概率。

6. 词嵌入的应用

a. 文本分类

词嵌入是文本分类任务中的基础表示方式。通过将文档中的词语转换为嵌入向量,模型可以将文档表示为向量或矩阵,然后用于训练分类器(如SVM、神经网络等),以预测文档的类别。

b. 文本相似性计算

词嵌入能够帮助衡量文本之间的相似性。通过将两个文本中的词转换为嵌入向量,可以计算这些向量之间的余弦相似度或其他相似度度量,从而判断文本的语义相似性。

c. 机器翻译

在机器翻译任务中,词嵌入通过捕捉不同语言中词语的相似性来帮助翻译模型生成更准确的译文。词嵌入模型能够将源语言的词语映射到目标语言中的相应词语,进而提高翻译的质量。

d. 信息检索

在搜索引擎中,词嵌入帮助改进查询和文档的表示方式。通过将查询词和文档中的词嵌入到向量空间中,信息检索系统可以更好地理解用户的意图并返回更相关的搜索结果。


7. 词嵌入的优点

  • 捕捉语义相似性:词嵌入通过上下文学习生成,能够很好地捕捉词语的语义相似性,使得相似的词在向量空间中靠近。例如,“苹果” 和 “香蕉” 可能在向量空间中距离较近,因为它们经常出现在类似的上下文中。
  • 稠密低维表示:与词袋模型(Bag-of-Words)或TF-IDF模型生成的高维稀疏向量不同,词嵌入将词语映射到低维的稠密向量,这种表示方式更加紧凑,且可以减少数据的稀疏性问题,同时提高计算效率。
  • 处理未登录词:FastText等模型通过将词语分解为子词或n-gram的方式,可以处理未在训练语料中出现过的词语。即便是新的、未见过的词语,模型也能生成合理的嵌入向量。
  • 保留语法和语义关系:词嵌入能够捕捉到词语之间的某些语法关系。比如通过词嵌入向量的运算,能够发现一些有趣的词语关系,如: v 国王 − v 男人 + v 女人 ≈ v 女王 \mathbf{v_{\text{国王}}} - \mathbf{v_{\text{男人}}} + \mathbf{v_{\text{女人}}} \approx \mathbf{v_{\text{女王}}} v国王​−v男人​+v女人​≈v女王​这种词嵌入向量的运算反映了“国王”与“男人”的关系类似于“女王”与“女人”的关系。

8. 词嵌入的局限性

虽然词嵌入模型有许多优点,但它们也存在一些局限性:

a. 上下文无关的静态嵌入

传统的词嵌入模型(如Word2Vec和GloVe)生成的是静态词嵌入,即每个词的嵌入向量在所有上下文中都是相同的。比如词语“bank”在“金融机构”和“河岸”这两种完全不同的语义下,其向量表示都是一样的,模型无法识别出多义词在不同语境下的不同含义。

b. 无法捕捉长距离依赖

词嵌入模型通常依赖于局部上下文(如Word2Vec中的窗口大小),因此它们无法有效处理长距离依赖关系。对于依赖远距离词语的信息(如复杂句法结构或长篇文本),词嵌入模型的表现可能较弱。

c. 需要大量训练数据

词嵌入模型的训练通常需要大量的文本数据,尤其是在低频词和稀有词的语义学习上,如果训练数据不足,模型可能无法很好地捕捉这些词语的语义信息。

d. 缺乏动态性

静态词嵌入模型生成的是固定的词向量,不能根据上下文变化调整词的语义。这限制了模型在处理多义词和不同语境中的表现。


9. 动态词嵌入模型的出现

为了克服传统词嵌入模型的局限性,动态词嵌入模型(如BERTGPT)应运而生。这些模型不仅能根据上下文生成不同的嵌入向量,还能捕捉长距离的依赖关系。

a. BERT(Bidirectional Encoder Representations from Transformers)

BERT 是一种基于Transformer架构的预训练语言模型,它通过双向建模(即同时考虑词语的前后文)生成动态词嵌入。这使得BERT能够根据上下文调整词语的表示方式。例如,词语“bank”在“金融机构”和“河岸”这两种上下文中会生成不同的嵌入向量,从而解决了传统词嵌入模型无法处理多义词的问题。

b. GPT(Generative Pretrained Transformer)

GPT 是一种生成式预训练模型,它通过单向语言建模生成词语的嵌入向量。GPT可以用于文本生成、对话系统等任务,其嵌入向量不仅能够捕捉词语的语义,还能根据句子结构生成合适的词嵌入。

这些动态词嵌入模型在诸如机器翻译、文本生成、问答系统等任务中表现优异,因为它们能够根据具体语境动态生成词向量,从而捕捉更加复杂的语言现象。


10. 总结

词嵌入(Word Embedding) 是自然语言处理中的核心技术之一,它通过将词语映射到低维稠密向量空间中,捕捉词语之间的语义关系。传统的词嵌入模型如 Word2VecGloVe 能够生成静态的词嵌入,并在许多NLP任务中表现出色。然而,随着自然语言处理技术的发展,动态词嵌入模型(如 BERTGPT)逐渐成为主流,它们能够根据上下文生成动态的嵌入向量,并捕捉更复杂的语义和上下文关系。


本文转载自: https://blog.csdn.net/weixin_43221845/article/details/142681878
版权归原作者 AI完全体 所有, 如有侵权,请联系我们删除。

“【AI知识点】词嵌入(Word Embedding)”的评论:

还没有评论