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

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

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

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

文章目录

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

python 复制代码
from sentence_transformers import SentenceTransformer

model = 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应用中扮演了至关重要的角色。

相关推荐
用余生去守护3 分钟前
python报错系列(16)--pyinstaller ????????
开发语言·python
yuanbenshidiaos6 分钟前
c++---------数据类型
java·jvm·c++
数据小爬虫@7 分钟前
利用Python爬虫快速获取商品历史价格信息
开发语言·爬虫·python
向宇it9 分钟前
【从零开始入门unity游戏开发之——C#篇25】C#面向对象动态多态——virtual、override 和 base 关键字、抽象类和抽象方法
java·开发语言·unity·c#·游戏引擎
Lojarro23 分钟前
【Spring】Spring框架之-AOP
java·mysql·spring
bastgia23 分钟前
Tokenformer: 下一代Transformer架构
人工智能·机器学习·llm
小白学大数据23 分钟前
如何使用Selenium处理JavaScript动态加载的内容?
大数据·javascript·爬虫·selenium·测试工具
莫名其妙小饼干26 分钟前
网上球鞋竞拍系统|Java|SSM|VUE| 前后端分离
java·开发语言·maven·mssql
是Dream呀26 分钟前
Python从0到100(七十八):神经网络--从0开始搭建全连接网络和CNN网络
网络·python·神经网络
菜狗woc31 分钟前
opencv-python的简单练习
人工智能·python·opencv