【机器学习300问】126、词嵌入(Word Embedding)是什么意思?

2024-06-20 01:28

本文主要是介绍【机器学习300问】126、词嵌入(Word Embedding)是什么意思?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        人类的文字,作为一种高度抽象化的符号系统,承载着丰富而复杂的信息。为了让电脑也能像人类一样理解并处理这些文字,科学家们不断探索各种方法,以期将人类的语言转化为计算机能够理解的格式。

一、One-Hot编码的不足

        在自然语言处理发展的早期,给文字进行编码是处理文本数据的主要手段。其中,One-Hot编码是一种简单直观的方法,它将每个单词或字符映射为一个独特的二进制向量,该向量的长度等于词汇表的大小,并且只有一个位置是1(表示该单词或字符),其余位置都是0。像是下面这样:

        假设我有一个四个单词的字典,分别存放了“man”、“woman”、“king”、“queen”这四个单词。我们可以为每个词分配一个唯一的索引(假设“man”为0,“woman”为1,“king”为2,“queen”为3),然后基于这个索引来创建一个向量,其中对应索引的位置为1,其余位置为0。

  • man[1, 0, 0, 0]
  • woman[0, 1, 0, 0]
  • king[0, 0, 1, 0]
  • queen[0, 0, 0, 1]

        但这样做电脑就真的理解了文字所蕴含的意义了吗?文字与文字之间的关系电脑能读懂吗?真实的世界中字词数量浩如烟海,计算机能处理过来吗?One-Hot编码存在着明显的不足:

  1. 高维稀疏性:每个词被编码为一个长向量,除了代表该词的那个位置为1,其余均为0,导致向量极其稀疏。对于词汇量大的语言而言,这种编码方式需要极高的维度,造成存储和计算资源的大量浪费。

  2. 缺乏语义信息:One-hot编码完全忽略了词与词之间的语义关系。每个词被视为独立的实体,即使含义相近的词(如“快乐”与“愉快”)在向量空间中也表现为正交,无法通过向量的距离或相似度来衡量它们的语义相似性。

  3. 无法捕捉上下文信息:在实际语言使用中,词的意义往往依赖于其上下文环境。One-hot编码无法体现这种上下文的变化,同一词语在不同句子中的语境差异无法通过编码反映出来。

  4. 模型复杂度增加:由于向量的高维性,基于One-hot编码的模型往往需要处理大量的参数,这不仅增加了计算复杂度,也可能导致过拟合问题。

二、自然语言处理中的词嵌入是什么意思?

(1)词嵌入的定义

        词嵌入(Word Embedding)是自然语言处理(NLP)中一种表示文本中单词的方法。词嵌入的核心思想是将单词或短语映射为固定长度的连续向量。这些向量能够捕捉词之间的语义和句法关系。

词嵌入方法的关键思想是将单词表示为高维空间中的点,这些点的位置由单词的意义决定。

高维向量空间画不出来,这里用3D的示意一下

上图直观的感受到,词汇表中的每个词映射到一个高维向量空间中的一个点。

(2)词嵌入的作用

        高维的连续向量空间中的每个点(向量)代表一个词。词嵌入的作用主要包括以下几个方面:

① 降低模型维度

        作为深度学习模型的输入,词嵌入相比传统的独热编码(One-hot Encoding)能大幅度减少模型的维度,降低计算复杂度,同时提供更多的语义信息,从而提升诸如文本分类、情感分析、机器翻译等任务的性能。

② 捕获语义信息

        词嵌入能够捕捉词语的语义特征,使得具有相似意义的词语在向量空间中距离较近。例如,“猫cat”和“小猫kitten”的词嵌入向量会比“猫cat”和“房子houses”的向量更接近。

        可以通过t-SNE算法将高维空间中的词映射到低纬空间中,便于可视化和探索词汇关系。 t-SNE(t-Distributed Stochastic Neighbor Embedding)是一种非线性降维技术,尤其擅长于将高维空间中的数据点映射到二维或三维的空间中,同时尽可能保持原数据点之间的局部邻近关系。

③ 支持向量运算

        词嵌入允许对词语进行数学运算,比如向量加减可以表达某种语义上的关系。例如“King - Man + Woman = Queen”,这样的运算在某些词嵌入模型中能得出有意义的结果。

 计算两个向量的相似度,通常使用余弦相似度来表示:

        余弦相似度的值域在-1到1之间。值为1表示两个向量完全相同(方向一致),值为0表示两者正交(无相关性),值为-1则意味着两个向量方向完全相反。在实际应用中,正值表示某种程度的相似性,值越接近1相似度越高;负值虽然理论上可能出现,但在大多数自然语言处理任务中,由于向量通常是正向量,所以很少遇到。

④ 支持迁移学习

        预训练的词嵌入模型(如Word2Vec、GloVe、FastText等)可以被用作其他NLP任务的起点,使得模型能够在没有大量标注数据的情况下也能学到高质量的文本表示,实现迁移学习的效果。

(3)词嵌入中“嵌”字怎么理解?

        词嵌入中的“嵌”字,是指在一个高维向量空间中,一个词就好像嵌入其中一样。它形象地描述了将词语从高维的离散表示(如one-hot独热编码)转换并“嵌入”到一个低维的连续向量空间的过程。在这个过程中,每个词语不再是一个孤立的符号,而是变成了一个在多维空间中有具体位置的向量,这个向量蕴含了词语的语义信息和上下文关联。

这篇关于【机器学习300问】126、词嵌入(Word Embedding)是什么意思?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1076712

相关文章

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图

Java高效实现Word转PDF的完整指南

《Java高效实现Word转PDF的完整指南》这篇文章主要为大家详细介绍了如何用Spire.DocforJava库实现Word到PDF文档的快速转换,并解析其转换选项的灵活配置技巧,希望对大家有所帮助... 目录方法一:三步实现核心功能方法二:高级选项配置性能优化建议方法补充ASPose 实现方案Libre

Python批量替换多个Word文档的多个关键字的方法

《Python批量替换多个Word文档的多个关键字的方法》有时,我们手头上有多个Excel或者Word文件,但是领导突然要求对某几个术语进行批量的修改,你是不是有要崩溃的感觉,所以本文给大家介绍了Py... 目录工具准备先梳理一下思路神奇代码来啦!代码详解激动人心的测试结语嘿,各位小伙伴们,大家好!有没有想

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.