Datawhale干货
作者:杜晓东,Datawhale成员
Datawhale干货
作者:杜晓东,Datawhale成员
在大模型时代,Embedding(向量表示)的重要性愈发凸显。
不论是在 RAG 系统,还是在跨模态任务中都扮演着关键角色。
本文带你详细了解文本向量的前世今生,让你能够更好地了解向量,使用向量。
1. 文本表示模型简介
“love” 的独热表示为[0, 1, 0, 0]
“machine” 的独热表示为[0, 0, 1, 0]
“learning” 的独热表示为[0, 0, 0, 1]
-
高维稀疏性:对于大词汇表,独热向量的维度非常高且稀疏,导致计算和存储效率低。 -
无法捕捉词语之间的关系:独热表示无法捕捉词语之间的语义关系,所有词被认为是独立且等距的。
1.2 词袋模型与N-gram模型
-
构建词汇表:[“I”, “love”, “machine”, “learning”, “is”, “great”] -
文档1的词袋向量:[1, 1, 1, 1, 0, 0] -
文档2的词袋向量:[1, 1, 2, 2, 1, 1]
-
生成 bigram(2-gram):[“I love”, “love machine”, “machine learning”] -
构建词汇表:[“I love”, “love machine”, “machine learning”] -
文档的 bigram 向量:[1, 1, 1]
1.3 主题模型
-
从文本库中发现有代表性的主题(主题数作为超参数需要自己定义)->词分布,表示主题和词的对应关系 -
每篇文章对应着哪些主题->主题分布,表示文档和主题的对应关系
-
全局主题建模,能够发现长距离词依赖信息; -
将文档表示为主题的概率分布,通常维度较低(等于主题数),可以有效地降低数据的稀疏性。贝叶斯学派和频率学派“正统”之争(https://www.zhihu.com/question/20587681/answer/23060072)
1.4 词向量
-
余弦相似度:衡量两个向量之间的角度,相似度越高,角度越小。 -
欧氏距离:衡量两个向量之间的直线距离,距离越小,词语之间越相似。
-
上下文无关: 词向量为静态向量,即同一个词在不同的上下文中有相同的向量表示,这导致词向量无法解决“一词多义”问题。 -
OOV问题: 未登录词问题(Out-Of-Vocabulary),词嵌入模型在训练时建立一个固定的词汇表,任何不在词汇表中的词都被视为 OOV。 -
语法和语义信息的捕捉不足: 词嵌入模型主要捕捉词语的共现信息,可能无法充分捕捉词语之间的复杂语法和语义关系。
1.5 句向量
1.5.1 词向量+sif或者usif
1.5.2 Doc2vec
-
PV-DM (Distributed Memory Model of paragraph vectors)模型
-
给定一个文档D和一个窗口大小w,选择一个目标词w_t和它的上下文词w_{t-1}, …, w_{t+w} -
将文档D的向量和上下文词的向量一起输入模型,进行相加求平均或者累加构成一个新的向量X,基于该向量预测目标词w_t
-
PV-DBOW(Distributed Bag of Words of paragraph vector)模型
-
给定一个文档D,随机选择一个目标词w_t -
使用文档D的向量预测目标词w_t
2. 基于Bert的文本向量
2.1 Bert向量的各向异性
简单解释就是,词向量在向量空间中占据了一个狭窄的圆锥形体。Bert的词向量在空间中的分布呈现锥形,研究者发现高频的词都靠近原点(所有词的均值),而低频词远离原点,这会导致即使一个高频词与一个低频词的语义等价,但是词频的差异也会带来巨大的差异,从而词向量的距离不能很好的表达词间的语义相关性。另外,还存在高频词分布紧凑,低频词的分布稀疏的问题。分布稀疏会导致区间的语义不完整(poorly defined),低频词向量训练的不充分,从而导致进行向量相似度计算时出现问题。
-
有监督学习优化: 通过标注语料构建双塔Bert或者单塔Bert来进行模型微调,使靠近下游任务的Bert层向量更加靠近句子相似embedding的表达,从而使向量空间平滑。有监督学习优化的代表是SBERT。 -
无监督学习优化: -
通过对Bert的向量空间进行线性变换,缓解各向异性的问题。无监督学习优化的代表是Bert-flow和Bert-whitening。 -
基于对比学习的思想,通过对文本本身进行增广(转译、删除、插入、调换顺序、Dropout等),扩展出的句子作为正样本,其他句子的增广作为负样本,通过拉近正样本对的向量距离,同时增加与负样本的向量距离,实现模型优化,又叫自监督学习优化,代表就是SimCSE。
2.2 有监督学习优化-Sentence-BERT(SBERT)
-
Classification Objective Function:孪生(Siamese)网络训练,针对分类问题。上左图,u,v分别表示输入的2个句子的向量表示,*|u-v|*表示取两个向量element-wise的绝对值。模型训练时使用交叉熵损失函数计算loss。
-
Regression Objective Function:孪生(Siamese)网络训练,针对回归问题。上右图,直接计算u,v向量的余弦相似度,训练时使用均方误差(Mean Squared Error, MSE)进行loss计算。3.Triplet Objective Function:三级(triplet)网络训练,模型有变成三个句子输入。给定一个锚定句𝑎,一个肯定句𝑝和一个否定句𝑛,模型通过使𝑎与𝑝的距离小于与𝑎与𝑛的距离,来优化模型,即
关于自然推理任务?自然语言推理(Natural Language Inference, NLI)是自然语言处理(NLP)中的一个重要任务,旨在判断两个给定句子之间的逻辑关系。具体来说,NLI任务通常涉及三个主要的逻辑关系:
蕴含(Entailment):前提(Premise)蕴含假设(Hypothesis),即如果前提为真,则假设也为真。 矛盾(Contradiction):前提与假设相矛盾,即如果前提为真,则假设为假。 中立(Neutral):前提与假设既不蕴含也不矛盾,即前提为真时,假设可能为真也可能为假。 使用NLI的标注数据集(SNLI,MNLI等)训练出的语义向量模型,展现出了较好的语义扩展性和鲁棒性,适合进行zero-shot或者few-shot。
2.3 无监督学习优化
2.3.1 Bert-flow
-
ICLR 2015 NICE-Non-linear Independent Components Estimation -
ICLR 2017 Density estimation using Real NVP -
NIPS 2018 Glow: Generative Flow with Invertible 1×1 Convolutions
2.3.2 Bert-whitening
2.3.3 SimCSE
-
利用模型中的Dropout mask,对每一个样例进行两次前向传播,得到两个不同的embeddings向量,将同一个样例得到的向量对作为正样本对,对于每一个向量,选取同一个batch中所有样例产生的embeddings向量作为负样本,以此来训练模型。训练损失函数为:
-
SimCSE也提供了有监督学习的训练范式,利用NLI标注数据集进行训练,将每一个样例和与其相对的entailment作为正样本对,同一个batch中其他样例的entailment作为负样本,该样本相对应的contradiction作为hard negative进行训练。训练损失函数为:
3. 大模型时代的展望
随着LLM模型时代的到来,什么才是LLM时代向量模型训练的范式?自动编码or对比学习?我们会持续关注。
参考文献:
1.https://zhuanlan.zhihu.com/p/374230720
2.https://www.yeahchen.cn/2022/05/14/%25E4%25BB%2580%25E4%25B9%2588%25E6%2598%25AF%25E5%2590%2584%25E5%2590%2591%25E5%25BC%2582%25E6%2580%25A7/
3.https://www.zhihu.com/question/354129879/answer/2471212210
4.https://blog.csdn.net/qq_48314528/article/details/122760494
一起“点赞”三连↓
(文:Datawhale)