写给非机器学习人员的 embedding 入门
你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益:
- 了解大厂经验
- 拥有和大厂相匹配的技术等
希望看什么,评论或者私信告诉我!
文章目录
- 一、背景
- 二、什么是 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,实现展开折叠按钮在右侧,且一条竖直线上对齐
效果如下: 图片随便找的,可能需要调下样式,代码复制可用,留给有需要的人。 #ifndef CustomTreeWidget_h__ #define CustomTreeWidget_h__#include <QTreeWidget> #include <QPushButton>class CCustomTreeWidget : p…...
硅步千里:如何入行?——之入行成为软件开发者
无论何时,你是否有遇到这样的场景(在自己从未涉足过的行业或领域,现在需要自己去这个行业或领域学习探索,最初的目标是熟悉行业,快速融入进去,很多时候,我们只是了解了个大概,并没能…...
Sandbox: rsync.samba(80134) deny(1) file-write-create
Xcode15运行报错:Sandbox: rsync.samba(80134) deny(1) file-write-create/xxx/xxx 如下图: 解决办法: Build Settings 搜索 sandbox,把 Build Options 中的 User Script Sandboxing改为 NO...
lvs的dr模式综合实践
目录 编辑虚拟机准备工作 编辑编辑编辑 配置过程 配置client主机 配置router主机 配置lvs主机(vip使用环回来创建) 配置server1主机(vip使用环回来创建) 配置server2主机(vip使用环回来创建࿰…...
什么是自然语言处理
自然语言处理(Natural Language Processing, NLP)是人工智能(AI)的一个子领域,涉及计算机与人类语言的交互。它的目标是让计算机能够理解、分析、生成和操作自然语言,从而实现与人类的有效沟通。 自然语言处…...
快速理解互联网中的常用名词
并发与并行 并发:任务交替执行,伪并行,涉及CPU时间片和上下文切换。并行:任务真正同时执行,需要多核处理器,无上下文切换。 并发量(Concurrency) 概念:服务端程序单位…...
统计接口调用耗时_黑白名单配置
黑名单配置 黑名单就是那些被禁止访问的URL创建自定义过滤器 BlackListUrlFilter,并配置黑名单地址列表blacklistUrl如果有其他需求,还可以实现自定义规则的过滤器来满足特定的过滤要求 /*** 黑名单过滤器** author canghe*/ Component public class B…...
树莓派4 AV没有视频输出
使用AV接口输出,没有画面 需要在config.txt文件中 增加配置 enable_tvout1config.txt 中的 dtoverlayvc4-kms-v3d 行末尾添加,composite: dtoverlayvc4-kms-v3d,composite默认情况下,输出 NTSC 复合视频。要选择不同的模式,请在…...
短信群发平台:解决短信验证码接收问题的5大策略
在享受数字化服务时,如APP注册或网站登录,若遇到短信验证码无法接收的困扰,无疑会增添不少烦恼。为了帮助您迅速解决这一问题,我们精心总结了以下十大原因及对应的解决方法,助您顺畅完成验证流程。 一、优化网络环境 …...
WebSocket 初体验:构建实时通信应用
WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许双方进行双向通信,从而实现低延迟的数据交换。WebSocket非常适合需要实时交互的应用场景,比如聊天应用、在线游戏、实时数据分析等。 WebSocket简介 什么是WebSocket…...
LISA: Reasoning Segmentation via Large Language Model
发表时间:CVPR 2024 论文链接:https://openaccess.thecvf.com/content/CVPR2024/papers/Lai_LISA_Reasoning_Segmentation_via_Large_Language_Model_CVPR_2024_paper.pdf 作者单位:CUHK Motivation:尽管感知系统近年来取得了显…...
企业发展与数字化转型:创新驱动未来增长的关键策略
引言 在当今全球化和信息化高度融合的时代,数字化转型已经成为企业寻求增长和保持竞争优势的关键战略。随着技术的飞速进步,数字化不仅改变了商业模式和市场格局,还深刻影响了企业的内部运作和外部生态系统。大数据、人工智能、物联网等新兴技…...
如何选择适合自己的编程语言,为什么R是非计算机专业数据分析的最佳选择,五大点告诉你
在如今的数据驱动世界中,编程语言已成为希望在行业中进行数据分析的专业人士不可或缺的技能。对于非计算机专业背景的学者和学生来说,选择适合自己的编程语言可能看似困难。本文将探讨为什么对于那些需要进行本科生论文、研究生论文、或者发表学术成果的…...
【经验分享】数据结构——求树的叶子结点个数计算方法
目录 一道题就可以学会 这种题做法固定,记住两个公式即可 解惑: 1、为什么n2010110x? 2、为什么是n-120*410*31*210*1x*0? 🌈 嗨,我是命运之光! 🌌 2024,每日百字&…...
第十一章:图论part04 110.字符串接龙 105.有向图的完全可达性 106.岛屿的周长(补)
任务日期:7.29 题目一链接:110. 字符串接龙 (kamacoder.com) 思路:将本题寻找附近的字符串等效于寻找四周的陆地,即寻找周围与当前字符只有一位不同的字符串,然后加入到队列中并标记上,在此基础上要将字符…...
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介绍…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...
32单片机——基本定时器
STM32F103有众多的定时器,其中包括2个基本定时器(TIM6和TIM7)、4个通用定时器(TIM2~TIM5)、2个高级控制定时器(TIM1和TIM8),这些定时器彼此完全独立,不共享任何资源 1、定…...
aardio 自动识别验证码输入
技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...
轻量级Docker管理工具Docker Switchboard
简介 什么是 Docker Switchboard ? Docker Switchboard 是一个轻量级的 Web 应用程序,用于管理 Docker 容器。它提供了一个干净、用户友好的界面来启动、停止和监控主机上运行的容器,使其成为本地开发、家庭实验室或小型服务器设置的理想选择…...
拟合问题处理
在机器学习中,核心任务通常围绕模型训练和性能提升展开,但你提到的 “优化训练数据解决过拟合” 和 “提升泛化性能解决欠拟合” 需要结合更准确的概念进行梳理。以下是对机器学习核心任务的系统复习和修正: 一、机器学习的核心任务框架 机…...
