从NLP的角度看Embedding

前言

大模型已经逐渐开始渗透到生活中的不同领域,辅助人类完成现实世界中的任务。

要能辅助人完成任务,就需要将现实世界的信息输入给模型。
模型是如何感知现实世界的?

模型是如何感知世界?

人通过五官来感知世界。
眼睛-视觉、鼻子-嗅觉、耳朵-听觉、嘴-味觉、触觉

那么模型呢?

模型通过数据归纳和演绎世界。
数据:
01010101011101
白色 - #FFFFFF
黑色 - #000000

在深度学习模型中,输入给模型的数据是一连串的数字。
[0.259, 1.391, -0.448, … , 0.681]

从现实世界到数据的映射

模型的输入是一连串的数字,即向量。
文字“我爱上班” -> ?-> 向量
花 -> 图片 -> ?-> 向量

现实世界转化到数据的过程:
特征化、向量化、Embedding、特征提取、…

简单理解这个过程,就是编码。
对现实世界的信息做编码,然后转换成计算机可以理解的数据。

假设对语言词汇进行编码,
我 -> 0001
爱 -> 0010
学习 -> 0100
(很类似 RGB 不同颜色的定义)
再将内容输入给模型,模型是不是也能实现对应的任务呢?

答案当然是能。
会有什么问题?

  • 离散高维数据,计算量大。
    汉字有8.5W个,一个汉字需要85000维,
    一次点积运算需要85000次乘法。
    如果含词汇,将会更大。

  • 语义丢失
    两个有关系的词,无法描述其相似性或关联性。
    苹果 -> 0001
    梨子 -> 1000
    但两者同属于水果,且大小相近。

  • 上下文中的多义字/词
    上下文不同,词含义不同。
    苹果 -> 0001
    水果中的苹果
    手机中的苹果

如何将现实世界的事物,更真实(关系、特征…)的转化成数据?

Embedding

定义

将高维离散数据(如文本、图像等)映射到低维连续向量空间

高维数据 -> 低维数据
bge-m3,568M
100+语言 -> 1024维向量

离散数据 -> 连续向量
商品,
离散数据型商品类目,手表、watch(传统自然语言处理中)
连续数据型商品类目,[0.5, -1.3, 2.2, 1,7, -0.2]

为什么要做Embedding

从特征化的角度

不仅是对物体进行编号或者标识,更是对其特征的抽象和编码。
举个例子,相亲
1 号男嘉宾,[1, 0, 0, 0]
VS
男嘉宾,[1.78, 33, xx, xxx]

卷积神经网络,上卷提取图片局部特征

从量化的角度

具备了数据可操作性,能进行向量加减、点积等运算,线性计算描述关系。
举个经典案例,
国王(King): [0.7,0.9,0.3]
男性(Man): [0.8,0.1,0.3]
女性(Woman): [−0.8,0.1,0.3]
王后(Queen): [−0.7,0.9,0.3]
-> 国王 - 男性 + 女性 ≈ 王后
-> 国王与王后、男性与女性在部分维度上相似,但又有不同

其他角度

隐含更多信息,关系、属性、环境…

NLP Embedding 模型

MTEB(Massive Text Embedding Benchmark),评估文本嵌入模型性能的权威基准
涵盖8类任务(如检索、分类、聚类等)的56个数据集,支持112种语言

以上狂拽炫酷的模型,

我们一一都不介绍。
来看一些更简单的 NLP Embedding 算法/模型,简单入门。

One-Hot

Word2Vec

Skip-gram 单个词预测上下文

CBOW 上下文预测中心词

增加了局部上下文

BERT Embedding

Bidirectional Encoder Representations from Transformers
词向量+位置向量+段落向量

BERT 模型详解

小白也能听懂的 bert模型原理解读 预训练语言模型_哔哩哔哩_bilibili

Transformers Input Embedding Layer

词向量矩阵 + 位置信息

NLP Embedding 中要解决的问题

文本寓意偏见 Bias

医生、保姆、男生、女生、他、她

如何理解训练集中没有的词

王刚是一位菜农。
{张三}是一位果农。

NLP Embedding 模型实战

以 bge-m3 为例

土豆、马铃薯、洋芋的embedding 相似度如何?

相关性高的词,Embedding 相似度如何?

如何对 Embedding 模型进行评测?

MTEB

MTEB - Massive Text Embedding Benchmark
衡量文本嵌入模型的评估指标合集,它涵盖了112种语言的58个数据集,并针对8种任务进行了综合评测。

不同的任务类型,

  • 文本语义相似度(STS)
  • 检索(Retrieval,Reranking)
  • 聚类(Clustering)
  • 分类(Classification,语言检测、句子对分类)
  • 双语文本挖掘(翻译句子对)
  • 摘要(Summarization)

中文 Embedding 评测基准,C-MTEB。
针对中文文本向量的基准测试,包括35个数据集和6种任务的评测。

基准测试,初步判断模型性能。

不同类型的任务,如何进行评测?

文本语义相似度(STS)

如何判断 STS 是否准确?

使用 Spearman 系数及 Pearson 系数。
r = 协方差/标准差

检索(Retrieval)

如何判断检索结果是否准确?
内容对不对?排序对不对?

nDCG@10 (Normalized Discounted Cumulative Gain at 10)