写给非机器学习人员的 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…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
