主页 topics 词嵌入 什么是词嵌入?
深入了解我们的 AI 平台 订阅 AI 最新消息
包含云朵、饼图、图形的组合拼贴插图

发布日期:2024 年 1 月 23 日
撰稿人: Joel Barnard

什么是词嵌入?

词嵌入是在多维空间中将单词表示为向量的一种方法,其中向量之间的距离和方向反映了对应单词之间的相似性和关系。

嵌入表示文本的发展在推进自然语言处理 (NLP)机器学习 (ML) 应用方面发挥了至关重要的作用。词嵌入已成为文本分类、情感分析、机器翻译等任务不可或缺的一部分。

以机器能够理解的方式表示单词的传统方法(如独热编码),将每个单词表示为维度等于词汇表大小的稀疏向量。在这里,向量只有一个元素是“热的”(设置为 1),用来指示该单词的存在。这种方法虽然简单,但存在维度的诅咒,缺乏语义信息,也无法捕捉单词之间的关系。

另一方面,词嵌入是具有连续值的密集向量,而这些值使用机器学习技术(通常基于神经网络)进行训练。这个想法是为了学习编码语义意义和单词之间关系的表示。词嵌入可通过将模型暴露给大量文本数据并根据单词出现的上下文调整向量表示来进行训练。

一种流行的训练词嵌入方法是 Word2Vec,它使用神经网络来预测给定上下文中目标词的周围单词。另一种广泛使用的方法是 GloVe(Global Vectors for Word Representation,单词表示的全局向量),它利用全局统计数据来创建嵌入。

事实证明,词嵌入对于 NLP 任务至关重要,因为与传统方法相比,词嵌入支持机器学习算法以更细致的方式理解和处理单词之间的语义关系。

为什么 AI 治理是扩展企业 AI 的当务之急

了解采用 AI 的障碍,特别是缺乏 AI 治理和风险管理解决方案。

相关内容

注册以获取有关基础模型的指南

词嵌入的使用方法

词嵌入被用于各种 NLP 任务中,以增强词的表示和捕捉语义关系,包括:

文本分类

词嵌入通常用作情感分析、垃圾邮件检测和主题分类等文本分类任务中的特征。

命名实体识别 (NER)

为了准确识别和分类文本中的实体(例如人员、组织、地点的名称),词嵌入可帮助模型理解单次之间的上下文和关系。

机器翻译

在机器翻译系统中,词嵌入有助于通过与语言无关的方式表示单词,让模型能够更好地理解源语言和目标语言中单词之间的语义关系。

信息检索

在信息检索系统中,词嵌入可以让用户查询与相关文档更精准匹配,从而提高搜索引擎和推荐系统的有效性。

问题解答

词嵌入通过加强对问题提出和答案查找的语境的理解,来帮助问题解答系统取得成功。

语义相似性和聚类

词嵌入可以衡量单词或文档之间的语义相似度,以执行诸如聚类相关文章、查找相似文档或根据文本内容推荐相似项目之类的任务。

文本生成

在语言建模和自动编码器等文本生成任务中,词嵌入通常用于表示输入文本,并生成连贯且上下文相关的输出序列。

相似性和类比

词嵌入可用于执行单词相似性任务(例如,查找与给定单词相似的词汇)和单词类比任务(例如,“国王”之于“王后”,“男人”之于“女人”)。

预训练模型

预训练词嵌入是预训练更高级语言表示模型的基础,例如 BERT双向编码器表示转换器和 GPT 生成式预训练转换器。

词嵌入简史

21 世纪初,研究人员开始探索神经语言模型 (NLM),这种模型使用神经网络来模拟连续空间中单词之间的关系。此类早期模型为后来的词嵌入发展奠定了基础。

Bengio 等人(2003 年)提出了用于语言建模的前馈神经网络。此类模型能够捕获单词的分布式表示,但处理大型词汇表的能力有限。

包括 Mnih 和 Hinton (2009) 在内的研究人员探索了学习单词分布式表示的概率模型。这些模型专注于捕获单词之间的语义关系,是迈向单词嵌入的重要一步。

2013 年,谷歌的 Tomas Mikolov 及其同事提出了 Word2Vec 模型,这是一个重大突破。Word2Vec 利用连续词袋 (CBOW) 和连续跳字这两种模型,可以有效地从大型语料库中学习词嵌入,并由于其简单性和有效性而受到广泛采用。

Pennington 等人于 2014 年推出的 GloVe(Global Vectors for Word Representation,单词表示的全局向量)是基于使用全局统计(单词共现频率)来学习单词的向量表示的想法。它已用于各种 NLP 应用程序并以其捕获语义关系的能力而闻名。

如今,随着深度学习的兴起,嵌入层已成为 NLP 任务的神经网络架构的标准组件。嵌入现在不仅用于单词,还用于实体、短语和其他语言单位。在很大程度上,词嵌入使递归神经网络 (RNN)、长短期记忆 (LSTM) 网络、语言模型嵌入 (ELMo)、BERT、ALBERT(轻度 BERT)和 GPT 等语言模型得以飞快发展。

词嵌入的创建方法

词嵌入的主要目标是以捕获语义关系和上下文信息的方式表示单词。这些向量是连续向量空间中的数值表示,其中向量的相对位置反映了语义相似性和单词之间的关系。

使用向量来表示单词是因为是大多数机器学习算法(包括神经网络)都无法处理原始形式的纯文本。它们需要数字作为输入来执行任何任务。

创建词嵌入的流程涉及在大型文本语料库(如维基百科或谷歌新闻)上训练模型。语料库通过将文本标记为单词、删除停用词和标点符号以及执行其他文本清理任务来进行预处理。

滑动上下文窗口应用于文本,对于每个目标单词,窗口内的周围单词被视为上下文单词。单词嵌入模型经过训练,可根据上下文单词预测目标单词,反之亦然。

这使模型能够捕捉不同的语言模式,并为每个单词分配一个唯一的向量,该向量代表单词在连续向量空间中的位置。含义相似的单词彼此靠近,向量之间的距离和方向编码为相似程度。

训练过程包括调整嵌入模型的参数,以便最大限度地减少上下文中预测单词和实际单词之间的差异。

下方是一个非常小的语料库(6 个单词)的词嵌入简版示例,其中每个单词都表示为一个 3 维向量:

猫 [0.2, -0.4, 0.7]
狗 [0.6, 0.1, 0.5]
苹果 [0.8, -0.2, -0.3]
橙子 [0.7, -0.1, -0.6]
快乐 [-0.5, 0.9, 0.2]
悲伤 [0.4, -0.7, -0.5]

在此示例中,每个单词(例如,“cat”、“dog”、“apple”)都与一个唯一的向量相关联。向量中的值表示单词在连续的三维向量空间中的位置。具有相似含义或上下文的单词应具有相似的向量表示。例如“cat”和“dog”的向量靠得很近,反映了它们的语义关系。同样,“快乐”和“悲伤”的向量具有相反的方向,表明它们的含义截然不同。

为便于说明,上述示例已经过高度简化。实际的词嵌入通常具有数百个维度,以捕获更复杂的关系和含义中的细微差别。

词嵌入的基础方面

词嵌入已成为 NLP 的基本工具,为以与单词和短语的底层语义一致的方式理解和表示语言奠定了基础。

以下是一些关键概念和发展,使得词嵌入的使用成为帮助推进 NLP 的强大技术。

分布假说

分布假说认为具有相似含义的词语往往出现在相似的上下文中。这个概念构成了许多词嵌入模型的基础,因为它们旨在通过分析词共现模式来捕获语义关系。

减小维度

与传统的独热编码不同,词嵌入是低维度的密集向量。这会降低计算复杂性和内存需求,使其适用于大规模 NLP 应用程序。

语义表示

词嵌入可捕获单词之间的语义关系,支持模型在连续向量空间中理解和表示单词,其中相似的单词彼此靠近。这种语义表示可支持更细致的语言理解。

背景信息

单词嵌入通过考虑在给定上下文中同时出现的单词来捕获上下文信息。这有助于模型根据周围的单词理解单词的含义,从而更好地表示短语和句子。

泛化

单词嵌入能很好地推广至未见过的单词或罕见单词,因为它们学会了根据上下文来表示单词。在处理多样化和不断发展的词汇时,这一点尤为有利。

两种词嵌入方法

基于频率和基于预测的嵌入方法代表了词嵌入上下文中的两大类方法。这些方法的主要区别在于如何为单词生成向量表示。

基于频率的嵌入

基于频率的嵌入是指从语料库中单词的频率派生的单词表示。这些嵌入方法基于这样一种理念,即一个词的重要性或意义可以通过它在文本中出现的频率来推断。

词频-逆文档频率 (TF-IDF) 就是基于频率嵌入的一个例子。TF-IDF 旨在突出特定文档中常见而在整个语料库中相对罕见的单词,从而帮助识别对特定文档重要的术语。

文档中术语(单词)的 TF-IDF 评分使用以下公式进行计算:

    TF-IDF (t,d,D) = TF(t,d) x IDF(t, D)

TF-IDF 的应用包括信息检索、文档排名、文本摘要和文本挖掘。

尽管基于频率的嵌入简单易懂,但它们缺乏更高级的基于预测的嵌入所提供的语义信息和上下文感知的深度。

基于预测的嵌入

基于预测的嵌入是通过对模型进行训练,以预测单词上下文或邻近单词的某些方面而得出的单词表示。与专注于单词出现统计的基于频率的嵌入不同,基于预测的嵌入捕获语义关系和上下文信息,提供更丰富的单词含义表示。

基于预测的嵌入可以区分同义词并更有效地处理多义词(一词多义)。基于预测的嵌入的向量空间属性支持衡量单词相似度和解读比喻等任务。基于预测的嵌入还可以很好地推广到未见过的单词或上下文,使其在处理词汇表外术语时具有稳健性。

基于预测的方法,尤其是像 Word2Vec 和 GloVe(后续讨论)这样的方法,由于能够捕获丰富的语义含义,并很好地适用于各种 NLP 任务,因此在词嵌入领域占据主导地位。

Word2Vec

Word2Vec(Word to Vector,单词转向量)由包括 Tomas Mikolov 在内的 Google 研究员团队于 2013 年开发,已成为在自然语言处理 (NLP) 和机器学习模型中学习词嵌入的基础技术。

Word2Vec 包含面向生成向量表示的两个主要模型:连续词袋 (CBOW) 和连续跳字。

在 Word2Vec 的上下文中,连续词袋 (CBOW) 模型旨在根据给定窗口内目标单词周围的上下文单词预测目标单词。该模型使用上下文单词来预测目标单词,而学习到的嵌入则会捕捉单词之间的语义关系。

另一方面,连续跳字模型将目标单词作为输入,旨在预测周围的上下文单词。

如何训练模型

考虑到句子中的单词序列,CBOW 模型将固定数量的上下文单词(目标单词周围的单词)作为输入。每个上下文单词都通过共享嵌入层表示为一个嵌入(向量)。此类嵌入通过训练过程习得。

通常通过求和或求平均值的方式对单个上下文词嵌入进行合计。该合计表示作为下一层的输入。

然后,借助聚合表示来使用 softmax 激活函数预测目标单词。该模型经过训练,以便最小限度地缩小其在词汇表上的预测概率分布与目标单词的实际分布(独热编码表示)之间的差异。

CBOW 模型根据自身准确预测目标单词的能力,并通过调整嵌入层的权重,来进行训练。

连续跳字模型使用训练数据,根据目标单词的嵌入来预测上下文单词。具体来说,它会输出词汇表的概率分布,并指示每个单词在给定目标单词的上下文中的可能性。

训练目标是最大化给定目标词时,实际上下文词出现的可能性。这涉及调整嵌入层的权重,以最小化预测概率与上下文词的实际分布之间的差异。该模型还允许使用灵活的上下文窗口大小。它可以根据任务的具体要求进行调整,允许用户捕获局部和全局上下文关系。

Skip-gram 模型本质上是从目标单词“跳”到上下文预测,这使得它在捕获单词之间的语义关系和相似性方面特别有效。

优势和局限性

Word2Vec 使用的两种模型都有各自的优点和局限性。Skip-gram 可以很好地处理大量文本数据,并且被发现可以很好地表示生僻单词。另一方面 CBOW 速度更快,并且对更频繁的单词有更好的表示。

就局限性而言,Word2Vec 可能无法有效处理多义词(一词多义)。该模型可以平均或混合多义词的不同含义的表示。Word2Vec 还将单词视为原子单元,并且不捕获子单词信息。

解决其中一些限制一直是开发更高级模型的动机,例如 FastText、GloVe 和基于转换器的模型(如下所述),这些模型旨在克服 Word2Vec 的一些缺点。

GloVe

GloVe(Global Vectors for Word Representation,单词表示的全局向量)是一种词嵌入模型,旨在捕获有关语料库中词共现模式的全局统计信息。

由 Jeffrey Pennington、Richard Socher 和 Christopher D. Manning 于 2014 年提出的 GloVe 模型与 Word2Vec 的不同之处在于强调使用全局信息,而不是仅关注局部上下文。

GloVe 基于的理念,是整个语料库中单词共现的全局统计对于捕捉单词语义至关重要。它会考虑单词在整个数据集中相互共同出现的频率,而不仅仅是在单个单词的本地上下文中的出现频率。

该模型旨在尽量减少预测的共现概率与从语料库统计数据得出的实际概率之间的差异。

与其他一些方法相比,GloVe 的计算效率很高,因为它依赖于全局统计,并采用矩阵分解技术来学习单词向量。该模型可在大型语料库中进行训练,而无需大量计算资源。

GloVe 为单词对引入了标量权重,以控制不同单词对对训练过程的影响。此类权重有助于减轻非常频繁或罕见的单词对对学习嵌入的影响。

训练机制

与专注于根据目标单词预测上下文单词或反之亦然的 Word2Vec 模型(CBOW 和 Skip-gram)不同,GloVe 采用了另一种方法,即根据单词的共现概率来优化单词向量。训练过程旨在学习可有效捕捉单词之间语义关系的嵌入。

第一步是构建一个共现矩阵,该矩阵表示单词在语料库中一起出现的频率。

接下来是制定一个目标函数,描述单词向量与其共现概率之间的关系。

使用梯度下降或其他优化算法对目标函数进行优化。目标是调整词向量和偏差,以最小化预测的和实际的对数共现概率之间的平方差。

应用和用例

用户可以下载预先训练的 GloVe 嵌入并针对特定应用进行微调或直接使用它们。

GloVe 嵌入已广泛应用于文本分类、情感分析、机器翻译等 NLP 任务。

GloVe 擅长捕捉全局语义关系、理解单词的整体上下文并利用共现统计数据,这些对于自然语言处理任务的成功至关重要。

超越 Word2Vec 和 GloVe

Word2Vec 和 GloVe 的成功激发了对更复杂的语言表示模型(例如 FastText、BERT 和 GPT)的进一步研究。这些模型利用子词嵌入、注意力机制和转换器来有效处理更高维度的嵌入。

子词嵌入

子词嵌入(如 FastText)将单词表示为子词单元的组合,可提供更大的灵活性,并可处理罕见或词汇表之外的单词。子词嵌入提高了词嵌入的稳健性和覆盖率。

与 GloVe 不同,FastText 通过将每个单词视为由字符 n-gram(而不是整个单词)组成来嵌入单词。此功能使它不仅可以学习生僻单词,还可以学习词汇表外的单词。

注意力机制和转换器

注意力机制和转换器模型会考虑上下文信息和单词之间的双向关系,从而产生更高级的语言表示。

引入注意力机制是为了提高神经网络在进行预测时关注输入序列特定部分的能力。注意力机制并非平等地对待输入的所有部分,而是允许模型有选择地关注输入的相关部分。

转换器已成为 NLP 领域各种先进模型的支柱,包括 BERT、GPT 和 T5(文本到文本转录转换器)等。它们在语言建模、机器翻译、文本生成和问题回答等任务方面表现出色。

转换器利用自我注意机制来捕捉序列中不同单词之间的关系。这种机制可支持每个单词关注序列中的所有其他单词,从而捕获长程依赖关系。

与 RNN 相比,转换器在训练期间允许更多并行化并且计算效率高。

相关解决方案
IBM Natural Language Understanding

IBM® Watson Natural Language Understanding 使用深度学习,从非结构化文本数据中提取有意义的信息和元数据。使用文本分析提取类别、分类、实体、关键字、情感、情绪、关系和语法,深入了解数据。

深入了解 NLU

IBM watsonx

借助我们的下一代 AI 和数据平台,将 AI 功用提升数倍。IBM watsonx 集业务工具、应用程序和解决方案于一体,旨在降低 AI 使用成本和障碍,同时优化 AI 结果和使用可靠性。

深入了解 watsonx

IBM AI 解决方案

在整个企业有效运行 AI,以合乎道德标准的方式快速获益。我们的商业级 AI 产品和分析解决方案组合丰富多样,旨在减少采用 AI 过程中的障碍,构建合适的数据基础,并以结果和使用可靠性为导向进行优化。

深入了解 AI 解决方案
资源 什么是机器学习?

深入了解机器学习如何利用数据和算法、其用例和相关问题,以负责任和创新的方式使用该技术。

AI、机器学习、深度学习、神经网络:有什么区别?

AI、ML、深度学习和神经网络是相关技术,这些术语间经常可以互换使用。这篇博客文章将澄清一些模糊之处。

Python 初学者指南

Python 是一种通常用于嵌入的编程语言。 本指南将向您介绍这种简单的编程语言初学者所需了解的几个基本概念。

采取后续步骤

使用面向 AI 构建器的新一代企业级开发平台 IBM watsonx.ai,可以训练、验证、调整和部署生成式 AI、基础模型和机器学习功能。使用一小部分数据,即可在很短的时间内构建 AI 应用程序。

深入了解 watsonx.ai 预约实时演示