当前位置: 首页 > news >正文

写给非机器学习人员的 embedding 入门

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益:

  1. 了解大厂经验
  2. 拥有和大厂相匹配的技术等

希望看什么,评论或者私信告诉我!

文章目录

  • 一、背景
  • 二、什么是 embedding
  • 三、为什么需要 embedding
      • 3.1 降维处理
      • 3.2 捕捉语义关系
      • 3.3 更好的特征表示
      • 3.4 提高计算效率
      • 3.5 适应性强
  • 四、emdedding 原理
      • 4.1 向量空间模型
      • 4.2 训练方法
      • 4.3 常用算法
      • 4.4 相似性度量
      • 4.5 特征学习
      • 4.6 利用上下文
  • 五、embedding 应用场景
      • 1. **自然语言处理(NLP)**
      • 2. **推荐系统**
      • 3. **计算机视觉**
      • 4. **图结构数据**
      • 5. **生物信息学**
      • 6. **音频处理**
      • 7. **RAG**
  • 六、embedding 使用
  • 七、总结

一、背景

目前在实现 NL2SQL 就是将人的自然语言通过 LLMs 的一系列处理,在这个过程中,会把文本向量化后存储到向量数据库中,然后通过向量搜索,这个过程中发现文本 embedding 后,通过向量化搜索效果很是惊人,就跟程序能读懂人的语言一样。于是对 embedding 产生了兴趣

二、什么是 embedding

embedding 是自然语言处理 (NLP)中的一种变革性技术,它改进了机器理解和处理人类语言的方式。其将原始文本转换为数字向量,让计算机更好地理解它。

因为计算机只能用数字思考,无法独立理解人类的语言。借助文本嵌入,计算机可以更轻松地阅读、理解文本,并对查询提供更准确的响应。

下图可以更加形象的理解:
embedding 是一种将文本中的单词或短语转换为机器可以理解的数字数据的方法。可以将其视为将文本转换为数字列表,其中每个数字都表示文本的一部分含义。这种技术可以帮助机器掌握单词之间的上下文和关系。

三、为什么需要 embedding

embedding 在机器学习和自然语言处理中的重要性主要体现在以下几个方面:

3.1 降维处理

  • 高维数据问题:原始数据通常是高维的,处理高维数据会导致计算复杂性增加,且容易出现“维度灾难”。
  • 低维表示:通过 embedding,可以将高维数据映射到低维空间,减少计算负担并提高处理效率。

3.2 捕捉语义关系

  • 相似性表示:embedding 能够将语义相似的对象(如词语或图像)映射到相近的向量,使得相似性度量变得直接和有效。
  • 保留上下文信息:在自然语言处理中,embedding 可以反映词语的上下文关系,从而更好地理解词语的含义。

3.3 更好的特征表示

  • 稠密表示:与传统的独热编码(one-hot encoding)相比,embedding 提供了更稠密且具备语义信息的特征表示。
  • 泛化能力:通过将数据映射到语义空间,模型能够在新数据上具有更好的泛化能力。

3.4 提高计算效率

  • 向量运算:在低维空间中,可以快速进行向量之间的计算(如点积、余弦相似度等),提高模型的响应速度。
  • 简化算法:使用 embedding 的模型通常比传统方法更简单且易于训练。

3.5 适应性强

  • 多领域应用:embedding 可以广泛应用于文本、图像、音频等多个领域,具有很强的适应性。
  • 模型可扩展性:可以轻松地将新的数据嵌入现有的 embedding 空间。

四、emdedding 原理

embedding 的原理主要基于将高维数据映射到低维空间的技术,以下是其核心概念和原理:

4.1 向量空间模型

  • 基本思想:将每个对象(如词、句子或图像)表示为一个向量,在一个稠密的、低维的向量空间中,这些向量能够反映对象之间的相似性和关系。

4.2 训练方法

  • 无监督学习:embedding 通常通过无监督学习算法进行训练,这使得模型能够从大量数据中学习各个对象之间的隐含关系,而无需人工标注。

4.3 常用算法

  • Word2Vec
    • Skip-Gram:通过预测上下文中的词来学习词向量。
    • CBOW(Continuous Bag of Words):通过上下文词预测中心词。
  • GloVe(Global Vectors for Word Representation)
    • 基于词共现矩阵,通过优化目标函数,捕获全局统计信息。
  • FastText
    • 在词的基础上考虑了子词(n-grams),提高了对未登录词的处理能力。

4.4 相似性度量

  • 欧几里得距离余弦相似度:在 embedding 空间中,可以使用这些度量方法来计算对象之间的相似性。相似的对象在向量空间中距离较近。

4.5 特征学习

  • 隐含特征:通过 embedding,模型能够自动学习到数据的隐含特征,并将其压缩到一个低维度的表示中,提高了计算效率和模型性能。

4.6 利用上下文

  • 上下文信息:通过训练时考虑上下文,embedding 能够捕捉到词义的多义性和词与词之间的关系,从而获得更准确的表示。

五、embedding 应用场景

embedding 的应用场景非常广泛,主要包括以下几个领域:

1. 自然语言处理(NLP)

  • 词嵌入:使用像 Word2Vec、GloVe 或 FastText,将词转换为向量,捕捉词的语义关系。
  • 情感分析:通过文本的向量表示,分析文本情绪和态度。
  • 机器翻译:将源语言和目标语言的句子转化为向量,以提高翻译质量。

2. 推荐系统

  • 用户和物品嵌入:将用户和商品映射到同一向量空间,通过计算相似性进行个性化推荐。
  • 协同过滤:使用用户与物品之间的嵌入表示,挖掘潜在的推荐关系。

3. 计算机视觉

  • 图像嵌入:利用卷积神经网络(CNN)将图像转换为向量,进行相似图像检索、分类等。
  • 人脸识别:将人脸图像嵌入到向量空间,用于身份验证。

4. 图结构数据

  • 图嵌入:将节点的特征和结构信息嵌入到低维空间,处理社交网络、知识图谱等问题。
  • 社区检测和图分类:通过节点嵌入,识别社交网络中的社群结构。

5. 生物信息学

  • 基因和蛋白质嵌入:将生物序列转换为向量,进行基因功能预测、药物发现等。

6. 音频处理

  • 音频嵌入:将音频信号转换为向量表示,用于音频分类、语音识别和音乐推荐。

7. RAG

  • 向量化:基于大模型的向量化

embedding 技术能够在许多领域提供有效的数据表示,增强模型的性能,并提高计算效率。它在自然语言处理、计算机视觉、推荐系统以及生物信息学等多个领域都有重要应用。

六、embedding 使用

这里我们用 huggingface m3e-base 模型的例子

from sentence_transformers import SentenceTransformermodel = SentenceTransformer('moka-ai/m3e-base')#Our sentences we like to encode
sentences = ['* Moka 此文本嵌入模型由 MokaAI 训练并开源,训练脚本使用 uniem','* Massive 此文本嵌入模型通过**千万级**的中文句对数据集进行训练','* Mixed 此文本嵌入模型支持中英双语的同质文本相似度计算,异质文本检索等功能,未来还会支持代码检索,ALL in one'
]#Sentences are encoded by calling model.encode()
embeddings = model.encode(sentences)#Print the embeddings
for sentence, embedding in zip(sentences, embeddings):print("Sentence:", sentence)print("Embedding:", embedding)print("")

七、总结

Embedding技术显著改善了机器对自然语言的理解能力,通过将高维文本数据转换为低维向量,计算机能够更有效地处理和响应人类语言。它的多领域适应性和强大的特征表示能力,使其在现代AI应用中扮演了至关重要的角色。

相关文章:

写给非机器学习人员的 embedding 入门

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…...

Oracle【plsql编写九九乘法表】

九九乘法表 DECLAREi NUMBER : 1;j NUMBER : 1; BEGINFOR i IN 1 .. 9LOOPFOR j IN 1 .. iLOOPDBMS_OUTPUT.put (i || * || j || || i * j || );END LOOP;DBMS_OUTPUT.put_line ( );END LOOP; END;输出结果...

ansible安装K8s

部署Kubernetes (k8s) 集群使用Ansible是一个常见的自动化解决方案。下面我将提供一个基本的步骤概述和所需的命令,用于在CentOS 7.8上使用Ansible部署k8s集群,包括Master节点和Worker节点(Web和DB节点)。 步骤 1: 准备环境 确保所…...

restful传值

GetMapping 普通的get请求 后端: restfule的get请求 通过/asd/123这种方式get请求传入后端 前端 url: /system/role/deptTree/ roleId / tenantId, method: get后端PathVariable从path上取对应的值 通过 GetMapping(value "/deptTree/{roleId}/{tenan…...

Qt自定义TreeWidget,实现展开折叠按钮在右侧,且一条竖直线上对齐

效果如下&#xff1a; 图片随便找的&#xff0c;可能需要调下样式&#xff0c;代码复制可用&#xff0c;留给有需要的人。 #ifndef CustomTreeWidget_h__ #define CustomTreeWidget_h__#include <QTreeWidget> #include <QPushButton>class CCustomTreeWidget : p…...

硅步千里:如何入行?——之入行成为软件开发者

无论何时&#xff0c;你是否有遇到这样的场景&#xff08;在自己从未涉足过的行业或领域&#xff0c;现在需要自己去这个行业或领域学习探索&#xff0c;最初的目标是熟悉行业&#xff0c;快速融入进去&#xff0c;很多时候&#xff0c;我们只是了解了个大概&#xff0c;并没能…...

Sandbox: rsync.samba(80134) deny(1) file-write-create

Xcode15运行报错:Sandbox: rsync.samba(80134) deny(1) file-write-create/xxx/xxx 如下图: 解决办法: Build Settings 搜索 sandbox&#xff0c;把 Build Options 中的 User Script Sandboxing改为 NO...

lvs的dr模式综合实践

目录 ​编辑虚拟机准备工作 ​编辑​编辑​编辑 配置过程 配置client主机 配置router主机 配置lvs主机&#xff08;vip使用环回来创建&#xff09; 配置server1主机&#xff08;vip使用环回来创建&#xff09; 配置server2主机&#xff08;vip使用环回来创建&#xff0…...

什么是自然语言处理

自然语言处理&#xff08;Natural Language Processing, NLP&#xff09;是人工智能&#xff08;AI&#xff09;的一个子领域&#xff0c;涉及计算机与人类语言的交互。它的目标是让计算机能够理解、分析、生成和操作自然语言&#xff0c;从而实现与人类的有效沟通。 自然语言处…...

快速理解互联网中的常用名词

并发与并行 并发&#xff1a;任务交替执行&#xff0c;伪并行&#xff0c;涉及CPU时间片和上下文切换。并行&#xff1a;任务真正同时执行&#xff0c;需要多核处理器&#xff0c;无上下文切换。 并发量&#xff08;Concurrency&#xff09; 概念&#xff1a;服务端程序单位…...

统计接口调用耗时_黑白名单配置

黑名单配置 黑名单就是那些被禁止访问的URL创建自定义过滤器 BlackListUrlFilter&#xff0c;并配置黑名单地址列表blacklistUrl如果有其他需求&#xff0c;还可以实现自定义规则的过滤器来满足特定的过滤要求 /*** 黑名单过滤器** author canghe*/ Component public class B…...

树莓派4 AV没有视频输出

使用AV接口输出&#xff0c;没有画面 需要在config.txt文件中 增加配置 enable_tvout1config.txt 中的 dtoverlayvc4-kms-v3d 行末尾添加,composite&#xff1a; dtoverlayvc4-kms-v3d,composite默认情况下&#xff0c;输出 NTSC 复合视频。要选择不同的模式&#xff0c;请在…...

短信群发平台:解决短信验证码接收问题的5大策略

在享受数字化服务时&#xff0c;如APP注册或网站登录&#xff0c;若遇到短信验证码无法接收的困扰&#xff0c;无疑会增添不少烦恼。为了帮助您迅速解决这一问题&#xff0c;我们精心总结了以下十大原因及对应的解决方法&#xff0c;助您顺畅完成验证流程。 一、优化网络环境 …...

WebSocket 初体验:构建实时通信应用

WebSocket是一种在客户端和服务器之间建立持久连接的协议&#xff0c;它允许双方进行双向通信&#xff0c;从而实现低延迟的数据交换。WebSocket非常适合需要实时交互的应用场景&#xff0c;比如聊天应用、在线游戏、实时数据分析等。 WebSocket简介 什么是WebSocket&#xf…...

LISA: Reasoning Segmentation via Large Language Model

发表时间&#xff1a;CVPR 2024 论文链接&#xff1a;https://openaccess.thecvf.com/content/CVPR2024/papers/Lai_LISA_Reasoning_Segmentation_via_Large_Language_Model_CVPR_2024_paper.pdf 作者单位&#xff1a;CUHK Motivation&#xff1a;尽管感知系统近年来取得了显…...

企业发展与数字化转型:创新驱动未来增长的关键策略

引言 在当今全球化和信息化高度融合的时代&#xff0c;数字化转型已经成为企业寻求增长和保持竞争优势的关键战略。随着技术的飞速进步&#xff0c;数字化不仅改变了商业模式和市场格局&#xff0c;还深刻影响了企业的内部运作和外部生态系统。大数据、人工智能、物联网等新兴技…...

如何选择适合自己的编程语言,为什么R是非计算机专业数据分析的最佳选择,五大点告诉你

在如今的数据驱动世界中&#xff0c;编程语言已成为希望在行业中进行数据分析的专业人士不可或缺的技能。对于非计算机专业背景的学者和学生来说&#xff0c;选择适合自己的编程语言可能看似困难。本文将探讨为什么对于那些需要进行本科生论文、研究生论文、或者发表学术成果的…...

【经验分享】数据结构——求树的叶子结点个数计算方法

目录 一道题就可以学会 这种题做法固定&#xff0c;记住两个公式即可 解惑&#xff1a; 1、为什么n2010110x&#xff1f; 2、为什么是n-120*410*31*210*1x*0&#xff1f; &#x1f308; 嗨&#xff0c;我是命运之光&#xff01; &#x1f30c; 2024&#xff0c;每日百字&…...

第十一章:图论part04 110.字符串接龙 105.有向图的完全可达性 106.岛屿的周长(补)

任务日期&#xff1a;7.29 题目一链接&#xff1a;110. 字符串接龙 (kamacoder.com) 思路&#xff1a;将本题寻找附近的字符串等效于寻找四周的陆地&#xff0c;即寻找周围与当前字符只有一位不同的字符串&#xff0c;然后加入到队列中并标记上&#xff0c;在此基础上要将字符…...

Linux中安装MYSQL数据库

文章目录 一、MYSQL数据库介绍1.1、MySQL数据库的基本概述1.2、MySQL数据库的主要特性1.3、MySQL数据库的技术架构与组件1.4、MySQL数据库的应用与扩展性1.5、MySQL数据库的许可模式与开源生态 二、MySQL Workbench和phpMyAdmin介绍2.1、MySQL Workbench介绍2.2、phpMyAdmin介绍…...

Vue前端服务加密后端服务解密--AES算法实现

在实际项目中考虑到用户数据的安全性&#xff0c;在用户登录时&#xff0c;前端需要对用户密码加密&#xff08;防止用户密码泄露&#xff09;&#xff0c;服务端收到登录请求时先对密码进行解密&#xff0c;然后再进行用户验证登操作。本文使用 AES ECB 模式算法来实现前端机密…...

matlab实现文字识别

在MATLAB中实现文字识别通常涉及图像处理技术和机器学习算法&#xff0c;特别是使用MATLAB内置的Image Processing Toolbox和Machine Learning Toolbox。下面是一个基本的步骤指南&#xff0c;展示如何在MATLAB中设置和执行一个简单的OCR&#xff08;Optical Character Recogni…...

Leetcode - 周赛409

目录 一&#xff0c;3242. 设计相邻元素求和服务 二&#xff0c;3243. 新增道路查询后的最短距离 I 三&#xff0c;3244. 新增道路查询后的最短距离 II 四&#xff0c;3245. 交替组 III 一&#xff0c;3242. 设计相邻元素求和服务 本题纯模拟&#xff0c;代码如下&#xff…...

突破百度网盘的下载限速,两种方法教会你【超详细】

一、前言 Hello&#xff0c;大家后&#xff0c;我是博主英杰&#xff0c;前几天&#xff0c;我在使用百度网盘过程中&#xff0c;下载速度极慢&#xff0c;自己作为一个白嫖党&#xff0c;开会员也是心疼那点钱&#xff0c;所以在网上找了几个有效解决百度网盘限速问题的教程&a…...

整理 酷炫 Flutter 优质 布局、交互 开源App

xtimer-flutter-app Flutter 计时器应用 项目地址&#xff1a;https://github.com/pedromassango/xtimer-flutter-app 项目Demo&#xff1a;https://download.csdn.net/download/qq_36040764/89631382...

【PyCharm怎么同时打开多个项目】

问题描述&#xff1a; 之前点击了“dont ask again”&#xff0c;再也不能同时打开两个或多个项目了。 解决&#xff1a; file->settings->appearance->system settings->project->选择ask...

使用 ProcDump 调试 Linux

Debug Linux using ProcDump By Gaurav Kamathe July 17, 2020 译者&#xff1a;wxy 校对&#xff1a;wxy 微软越来越心仪 Linux 和开源&#xff0c;这并不是什么秘密。在过去几年中&#xff0c;该公司稳步地增加了对开源的贡献&#xff0c;包括将其部分软件和工具移植到 L…...

2023年中国城市统计年鉴(PDF+excel)

2023年中国城市统计年鉴 1、时间&#xff1a;1985-2023年 2、格式&#xff1a;PDFexcel 3、说明&#xff1a;中国城市统计年鉴收录了全国各级城市社会经济发展等方面的主要统计数据&#xff0c;数据来源于各城市的相关部门。本年鉴内容共分四个部分&#xff1a;第一部分是全…...

自用 K8S 资源对象清单 YAML 配置模板手册-1

Linux 常用资源对象清单配置速查手册-1 文章目录 1、Pod 容器集合2、Pod 的存储卷3、Pod 的容器探针4、ResourceQuota 全局资源配额管理5、PriorityClass 优先级类 管理多个资源对象清单文件常用方法&#xff1a; 使用 sed 流式编辑器批量修改脚本键值进行资源清单的创建&am…...

【数据库】事务 | 视图 | 自定义函数创建

1、事物及其特征 事物机制的应用&#xff1a;淘宝订单交易&#xff0c;微信转账等。 视图--------筛子---------过滤-------筛选想要的信息 数据库只存放了视图对应的SQL语句。 视图是一个虚拟的表&#xff0c;本质是一个虚拟的SQL命令集合。 &#xff08;1&#xff09;创建…...