自然语言处理(一):词嵌入

这篇具有很好参考价值的文章主要介绍了自然语言处理(一):词嵌入。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

词嵌入

词嵌入(Word Embedding)是自然语言处理(NLP)中的一种技术,用于将文本中的单词映射到一个低维向量空间中。它是将文本中的单词表示为实数值向量的一种方式。

在传统的文本处理中,通常使用独热编码(One-Hot Encoding)来表示单词,即将每个单词表示为一个稀疏的高维向量,向量中只有一个位置为1,其余位置为0。这种表示方式无法捕捉到单词之间的语义关系和相似性。

而词嵌入通过将单词映射到一个连续的向量空间中,使得具有相似语义的单词在向量空间中的距离更近。这样的表示方式可以更好地表达单词之间的语义关系,并且可以用于计算单词的相似度、聚类、分类等任务。

词嵌入模型通常是通过无监督学习的方式从大规模的文本语料库中学习得到的。一种常用的词嵌入模型是Word2Vec,它使用了神经网络模型来训练词嵌入向量。其他常见的词嵌入模型还包括GloVe、FastText等。

使用预训练的词嵌入模型,可以将文本中的单词转换为对应的词嵌入向量,从而为文本数据提供更丰富的表示。这对于各种NLP任务,如文本分类、命名实体识别、情感分析等,都具有重要的作用,并且可以提升模型的性能和效果。

文章内容来自李沐大神的《动手学深度学习》并加以我的理解,感兴趣可以去https://zh-v2.d2l.ai/查看完整书籍



为什么独热向量是一个糟糕的选择

  1. 维度灾难
    独热向量需要为每个可能的取值创建一个维度,这样会导致数据集在高维空间中变得非常稀疏。对于具有大量类别或取值的特征,独热编码会导致高维度的输入空间,这会增加模型的复杂性和计算开销。

  2. 信息损失
    独热向量将每个取值都视为独立的特征,忽略了它们之间的相关性。这可能会导致丢失一些重要的信息。
    我们一般使用余弦相似度来描述两个向量之间的相关性:
    x T y ∣ ∣ x ∣ ∣ ∣ ∣ y ∣ ∣ ∈ [ − 1 , 1 ] \frac{x^Ty}{||x||||y||}\in [-1,1] ∣∣x∣∣∣∣y∣∣xTy[1,1]
    若我们使用独热编码,任意两个向量之间的余弦相似度为0.

  3. 统计效率低:独热向量会引入大量的零值,这对于统计建模来说可能是低效的。在数据集中存在大量零值的情况下,计算和存储这些稀疏向量的开销将会增加。

  4. 增加模型复杂性:独热向量会引入大量的特征维度,这可能导致模型的复杂性增加。对于某些机器学习算法,如决策树和神经网络,高维度的输入空间可能会导致模型过拟合的问题。

自监督的word2vec

为了解决独热编码的问题,我们引入word2vec方法。

Word2Vec 是一种用于将词汇映射到连续向量空间的技术,它是由 Google 在 2013 年开发的一种词嵌入(Word Embedding)方法。Word2Vec 通过学习大规模文本语料库中的上下文信息,将每个单词表示为一个稠密的向量,以便在计算机中更好地处理和理解自然语言。

Word2Vec 有两种主要的模型架构:连续词袋模型(Continuous Bag of Words, CBOW)和跳字模型(Skip-gram)。这两种模型都基于相同的原理:根据上下文单词的共现关系来学习词向量。

  • 连续词袋模型(CBOW):CBOW 模型的目标是根据上下文单词来预测目标单词。它将上下文中的单词作为输入,通过一个浅层神经网络模型来学习目标单词的向量表示。

  • 跳字模型(Skip-gram):Skip-gram 模型与 CBOW 模型相反,它的目标是根据目标单词来预测上下文单词。它通过训练来学习目标单词和上下文单词之间的关系,以得到每个单词的向量表示。

Word2Vec 使用的核心思想是“共现性”,即假设在语料库中,经常在相似的上下文中出现的单词也具有相似的语义含义。通过学习这种共现关系,Word2Vec 可以生成具有语义信息的词向量。这些词向量可以用于各种自然语言处理任务,如文本分类、命名实体识别、机器翻译等。

Word2Vec 的优点包括:

  1. 将离散的词汇表示为连续向量,使得单词更容易用数学方式进行处理和计算。
  2. 通过捕捉上下文关系,生成的词向量可以表达单词的语义和语法信息。
  3. 可以从大规模的未标记文本数据中自动学习词向量,无需人工标注数据。
  4. 生成的词向量可以在各种自然语言处理任务中作为特征输入,提高模型的性能。

需要注意的是,Word2Vec 也有一些限制和注意事项,例如对于罕见的单词可能无法得到很好的向量表示,以及在处理多义词时可能存在一定的歧义。此外,对于特定任务,可能需要对生成的词向量进行进一步微调或调整。

总体而言,Word2Vec 是一种非常有用且广泛应用的词嵌入技术,对于许多自然语言处理应用具有重要作用。

跳元模型(Skip-Gram)

定义

简单来说,跳元模型就是通过假设一个词可以用来在文本序列中生成其周围的单词。以文本序列“the”“man”“loves”“his”“son”为例。假设中心词选择“loves”,并将上下文窗口设置为2,如图所示,给定中心词“loves”,跳元模型考虑生成上下文词“the”“man”“him”“son”的条件概率:
P ( " t h e " , " m a n " , " h i s " , " s o n " ∣ " l o v e " ) P("the","man","his","son"|"love") P("the","man","his","son"∣"love")
若假设上下文词是在给定中心词的情况下独立生成的(即条件独立性)。在这种情况下,上述条件概率可以重写为:
P ( " t h e " ∣ " l o v e " ) ⋅ P ( " m a n " ∣ " l o v e " ) ⋅ P ( " h i s " ∣ " l o v e " ) ⋅ P ( " s o n " ∣ " l o v e " ) P("the"|"love")\cdot P("man"|"love")\cdot P("his"|"love")\cdot P("son"|"love") P("the"∣"love")P("man"∣"love")P("his"∣"love")P("son"∣"love")
自然语言处理(一):词嵌入,深度学习,自然语言处理,人工智能
在跳元模型中,每个词都有两个 d d d维向量表示,用于计算条件概率。更具体地说,对于词典中索引为 i i i的任何词,分别用 v i ∈ R d v_i\in R^d viRd u i ∈ R d u_i\in R^d uiRd表示其用作中心词和上下文词时的两个向量。给定中心词 w c w_c wc(词典中的索引 c c c),生成任何上下文词 w o w_o wo(词典中的索引 o o o)的条件概率可以通过对向量点积的softmax操作来建模:
P ( w o ∣ w c ) = e x p ( u o T v c ) ∑ i ∈ V e x p ( u i T v c ) P(w_o|w_c)=\frac{exp(u_o^Tv_c)}{\sum_{i\in V}exp(u_i^Tv_c)} P(wowc)=iVexp(uiTvc)exp(uoTvc)
其中词表索引集 V = 0 , 1 , . . . , ∣ V ∣ − 1 V={0,1,...,|V|-1} V=0,1,...,V1,给定长度为 T T T的文本序列,其中时间步 t t t处的词表示为 w t w^{t} wt。假设上下文词是在给定任何中心词的情况下独立生成的。对于上下文窗口 m m m,跳元模型的似然函数是在给定任何中心词的情况下生成所有上下文词的概率:
∏ t = 1 T ∏ − m ≤ j ≤ m , j ≠ 0 P ( w t + j ∣ w t ) \prod_{t=1}^{T} \prod_{-m\leq j \leq m,j\neq0}P(w^{t+j}|w^{t}) t=1Tmjm,j=0P(wt+jwt)
其中可以省略小于 1 1 1或大于 t t t的任何时间步。

训练

跳元模型参数是词表中每个词的中心词向量和上下文词向量。在训练中,我们通过最大化似然函数(即极大似然估计)来学习模型参数。这相当于最小化以下损失函数:
− ∑ t = 1 T ∑ − m ≤ j ≤ m , j ≠ 0 l o g P ( w ( t + j ) ∣ w ( t ) ) -\sum_{t=1}^{T}\sum_{-m\leq j \leq m,j\neq0}logP(w^{(t+j)}|w^{(t)}) t=1Tmjm,j=0logP(w(t+j)w(t))
当使用随机梯度下降来最小化损失时,在每次迭代中可以随机抽样一个较短的子序列来计算该子序列的(随机)梯度,以更新模型参数。为了计算该(随机)梯度,我们需要获得对数条件概率关于中心词向量和上下文词向量的梯度。通常,涉及中心词 w c w_c wc和上下文词 w o w_o wo的对数条件概率为:
l o g P ( w o ∣ w c ) = u o T v c − l o g ( ∑ i ∈ V e x p ( u i T v c ) ) logP(w_o|w_c)=u_o^Tv_c-log(\sum_{i\in V}exp(u_i^Tv_c)) logP(wowc)=uoTvclog(iVexp(uiTvc))
通过微分,我们可以获得其相对于中心词向量 v c v_c vc的梯度为
自然语言处理(一):词嵌入,深度学习,自然语言处理,人工智能
注意, 上式中的计算需要词典中以 w c w_c wc为中心词的所有词的条件概率。其他词向量的梯度可以以相同的方式获得。
对词典中索引为 i i i的词进行训练后,得到 v i v_i vi(作为中心词)和 u i u_i ui(作为上下文词)两个词向量。在自然语言处理应用中,跳元模型的中心词向量通常用作词表示。

对于如何具体使用和训练跳元模型,我将在后面的博客中给出

连续词袋(CBOW)模型

定义

连续词袋(CBOW)模型类似于跳元模型。与跳元模型的主要区别在于,连续词袋模型假设中心词是基于其在文本序列中的周围上下文词生成的。例如,在文本序列“the”“man”“loves”“his”“son”中,在“loves”为中心词且上下文窗口为2的情况下,连续词袋模型考虑基于上下文词“the”“man”“him”“son”(如下图所示)生成中心词“loves”的条件概率,即:
P ( " l o v e " ∣ " t h e " , " m a n " , " h i s " , " s o n " ) P("love"|"the","man","his","son") P("love"∣"the","man","his","son")
自然语言处理(一):词嵌入,深度学习,自然语言处理,人工智能
由于连续词袋模型中存在多个上下文词,因此在计算条件概率时对这些上下文词向量进行平均。具体地说,对于字典中索引 i i i的任意词,分别用 v i ∈ R d v_i\in R^d viRd u i ∈ R d u_i\in R^d uiRd表示用作上下文词和中心词的两个向量(符号与跳元模型中相反)。给定上下文词 w o 1 , . . . , w o 2 m w_{o1},...,w_{o2m} wo1,...,wo2m(在词表中索引是 o 1 , . . . , o 2 m o1,...,o2m o1,...,o2m)生成任意中心词 w c w_c wc(在词表中索引是 c c c)的条件概率可以由以下公式建模:
自然语言处理(一):词嵌入,深度学习,自然语言处理,人工智能
为了简洁起见,我们设为 W o = o 1 , . . , o 2 m W_o={o1,..,o2m} Wo=o1,..,o2m v ˉ = ( v o 1 + v o 2 + . . . + v o 2 m ) / ( 2 m ) \bar{v}=(v_o1+v_o2+...+v_{o2m})/(2m) vˉ=(vo1+vo2+...+vo2m)/(2m),那么上述式子可以化简为:
自然语言处理(一):词嵌入,深度学习,自然语言处理,人工智能
给定长度为 T T T的文本序列,其中时间步 t t t处的词表示为 w t w^{t} wt。对于上下文窗口 m m m,连续词袋模型的似然函数是在给定其上下文词的情况下生成所有中心词的概率:
自然语言处理(一):词嵌入,深度学习,自然语言处理,人工智能

训练

训练连续词袋模型与训练跳元模型几乎是一样的。连续词袋模型的最大似然估计等价于最小化以下损失函数:

自然语言处理(一):词嵌入,深度学习,自然语言处理,人工智能
请注意,
自然语言处理(一):词嵌入,深度学习,自然语言处理,人工智能
通过微分,我们可以获得其关于任意上下文词向量 v o i v_{oi} voi i = 1 , 2 , . . . , 2 m i=1,2,...,2m i=1,2,...,2m)的梯度,如下:
自然语言处理(一):词嵌入,深度学习,自然语言处理,人工智能
其他词向量的梯度可以以相同的方式获得。与跳元模型不同,连续词袋模型通常使用上下文词向量作为词表示。文章来源地址https://www.toymoban.com/news/detail-681953.html

到了这里,关于自然语言处理(一):词嵌入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习6:自然语言处理-Natural language processing | NLP

    目录 NLP 为什么重要? 什么是自然语言处理 – NLP NLP 的2大核心任务 自然语言理解 – NLU|NLI 自然语言生成 – NLG NLP(自然语言处理) 的5个难点 NLP 的4个典型应用 NLP 的 2 种途径、3 个核心步骤 总结 自然语言处理 “语言理解是人工智能领域皇冠上的明珠” 比尔·盖茨 在人工智能

    2024年02月11日
    浏览(63)
  • 【数据挖掘与人工智能自然语言处理】自然语言处理和人工智能:如何利用自然语言处理技术进行数据挖掘

    作者:禅与计算机程序设计艺术 随着互联网和大数据时代的到来,数据挖掘已成为各个行业的热门话题。数据挖掘的核心在于发现数据中的有价值信息,而自然语言处理(NLP)技术是实现这一目标的重要手段。本文旨在通过自然语言处理技术进行数据挖掘,为数据挖掘提供一

    2024年02月05日
    浏览(93)
  • 【自然语言处理】【深度学习】NLP中的N-gram理解

    N-gram是自然语言处理(NLP)中的一个概念,它描述的是文本中连续的n个项(通常是单词或字符)。这个概念主要用于语言建模和文本分析中。 具体来说: Unigram (1-gram): 包含一个单词的序列,例如句子中的单个单词。 Bigram (2-gram): 包含两个相邻单词的序列。例如,在句子 “

    2024年01月25日
    浏览(52)
  • MATLAB算法实战应用案例精讲-【深度学习】自然语言处理模型SimCSE

    目录 前言 1.介绍 2.对比学习背景 2.1定义 2.2构造正样本 2.3对齐性和均匀性

    2024年02月11日
    浏览(62)
  • 深度学习与大数据技术的进步:自然语言处理的显著突破

    引言: 随着深度学习和大数据技术的迅速发展,自然语言处理(Natural Language Processing,简称NLP)在过去几年取得了令人瞩目的进步。NLP是研究计算机如何理解和生成人类语言的领域,它在改善搜索引擎、语音助手、机器翻译等领域的应用中发挥着重要作用。本文将探讨深度学

    2024年01月23日
    浏览(61)
  • 深度学习和大数据技术的进步在自然语言处理领域的应用

    随着深度学习和大数据技术的迅猛发展,自然语言处理(Natural Language Processing,NLP)取得了显著的进步。人们正在积极研究如何使计算机更好地理解和生成人类语言,并且在搜索引擎、语音助手、机器翻译等领域广泛应用NLP技术。本文将重点探讨深度学习和大数据技术在NLP领

    2024年01月23日
    浏览(77)
  • 【自然语言处理】【深度学习】文本向量化、one-hot、word embedding编码

    因为文本不能够直接被模型计算,所以需要将其转化为向量 把文本转化为向量有两种方式: 转化为one-hot编码 转化为word embedding 在one-hot编码中,每一个token使用一个长度为N的向量表示,N表示词典的数量。 即:把待处理的文档进行分词或者是N-gram处理,然后进行去重得到词典

    2024年01月24日
    浏览(52)
  • 自然语言处理(一):词嵌入

    词嵌入(Word Embedding)是自然语言处理(NLP)中的一种技术,用于将文本中的单词映射到一个低维向量空间中。它是将文本中的单词表示为实数值向量的一种方式。 在传统的文本处理中,通常使用独热编码(One-Hot Encoding)来表示单词,即将每个单词表示为一个稀疏的高维向量

    2024年02月11日
    浏览(41)
  • 人工智能 | 自然语言处理的发展历程

    ===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 随着深度学习和大数据技术的进步,自然语言处理取得了显著的进步。人们正在研究如何使计算机更好地理解和生成人类语言,以

    2024年01月20日
    浏览(83)
  • 人工智能与自然语言处理:实现和发展

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 随着科学技术的飞速发展,人工智能作为一项新兴技术,得到了广泛的关注和应用。自然语言处理(Natural Language Processing, NLP)作为人工智能领域的重要组成部分,其主要研究目标是让计算机理解和处理自然语言。通过NLP技术

    2024年02月07日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包