大模型LLMs组件系列:向量表示与词嵌入Embedding

💡 本系列上一篇关于分词Tokenization的文章梳理了分词法的发展逻辑,本篇文章主要介绍其息息相关的下游工作,Word Embedding词嵌入。词嵌入是表示学习(Representation Learning)的一种,顾名思义,词嵌入当然嵌入的就是Word,而这个Word本质上就是前一篇文章说的word-level、character-level、subword-level分词后的token。所以大模型中的Embedding要做的就是将分词后以整数index标识的最小词元嵌入到一个语义空间中。什么是语义空间?为什么要嵌入语义空间呢?这和经典机器学习的特征工程有什么关系?有哪些词向量的表征形式?词嵌入模型和大模型的Embedding是一回事儿吗?特征和表示学习有什么关系?如果你也有类似疑问,Ok,下面进入正题。

1 概念澄清:表示、特征、特征值

主要有三对关系需要澄清:

  • 首先,在机器学习(含深度学习)中特征(Feature)和表示(Representation)本质上是一回事,可以理解为希望探究的对象的本质或主要方面,主要以矩阵/向量/张量的形式来表示,下面暂时用特征同时表示两者。
  • 其次,经典机器学习中的特征和深度学习中的特征本质上也是一回事,但形式上大不相同。前者在处理前是人类可理解的,特征工程后也有一定的可解释性;而后者则是目前人类不可解释但内含规律的。
  • 最后,线性代数中的特征Eigen和机器学习中特征Feature不是一个东西,但很相关。

1.1 线性代数特征Eigen:固有的本征

数学上特征的概念是从生产生活实践中自然衍生出的数学或机器学习概念,而那些来自生产生活实践的需求往往最终以方程的形式呈现。为了能更高效地求解方程组,数学家们开始了现今线性代数的研究,并诞生了矩阵论,具体可参见行列式与矩阵是如何被发明出来的? - Reuental的回答 - 知乎,这里只列几个重要节点。

  • 17世纪,出于求解线性方程组的需求,日本数学家关孝和与莱布尼茨几乎同时建立行列式(determinant,又译定准式)理论。人类开始用行列式计算方程组。
  • 18世纪,在对刚体转动的惯性张量(本质是三维的实对称矩阵,如下式,注意这里的维指的是维数,即是一个3*3的二维度矩阵)研究中,拉格朗日Lagrange发现主惯性矩就是惯性张量矩阵的特征值(下式对角化后的对角线值),而惯性主轴就是惯性张量矩阵的特征向量(对应的向量)。

惯性张量

  • 19世纪初,拉格朗日的学生柯西Cauchy,把关于矩阵的特征值和特征向量的研究成果用于二次型之中,并对特征方程、特征根等术语正式命名,如racine caractéristique特征根,即现在所谓的特征值。
  • 1858年,英国数学家凯莱Cayley正式创建矩阵论,第一次提出矩阵本身就是独立的研究对象。
  • 1870s,意大利数学家贝尔特拉米(Beltrami)和法国数学家若尔当(Jordan)提出奇异值分解(Singular Value Decomposition,SVD)
  • 1889年,英国数学家西尔维斯特(Sylvester)独立于贝尔特拉米和若尔当提出了对矩阵进行了奇异值分解。
  • 1901年,英国数理统计学之父卡尔·皮尔逊(Karl Pearson)提出了著名的主成分分析(principal component analysis, PCA),至今仍是数据高维特征降维的核心手段之一。而前一年,他提出了著名的皮尔逊检验(Pearson Test)。
  • 1936年,英国统计学家罗纳德·费希尔(R. A. Fisher)(就是那个提出最大似然估计的大佬)提出线性判别分析(linear discriminant analysis, LDA),经典的有监督的表示学习方法。基本思想是将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维数的效果,投影后保证模式样本在新的子空间有最大的类间距离和最小的类内距离,即模式在该空间中有最佳的可分离性。
  • 1929年,R. Von Mises发表了幂方法Power Method,第一个计算特征值和特征向量的数值算法。

不断的发展中,线性代数和矩阵理论的体系愈发完善,称为一整套抽象且技艺性极强的数学学科。矩阵理论的发展中最重要的概念之一是特征分解(eigen-decomposition)。可以看到,这里特征分解的特征是eigen,其起源于德语,意味固有的本征。特征向量的概念在20世纪中期被广泛应用于各类工程和科学问题的求解,也是机器学习的基石之一。

1.2 机器学习特征Feature:表格字段Field与基于特征值的降维

很好,现在我们知道特征这个概念源于求解方程组的需求,那么它是怎么和机器学习人工智能联系在一起的呢?很简单,还是求解方程组。

首先,机器学习最初就是在解方程组。在机器学习中有一种通用模型——对所考虑的问题建模后,首先为其构造一个目标函数,其次对这个目标函数方程进行优化,然后求得一组最优的参数,最后利用这组最优参数对应的模型来进行预测。所有样本进入目标函数后就形成一个方程组。其最终目的是根据一堆表层的经验数据获得深层的认知和规律,可以抽象为一个函数。表层经验数据就是输入和输出(可直接或间接观测),而深层的认知和规律就是函数的参数或系数。举个最常见的机器学习例子,比如一个电商平台掌握了10万份有效的客户信息(包含100个结构化字段的身份信息如性别、地区、收入、年龄等,以及历史购买数据),希望从中挖掘一点用户规律来指导后续的商品营销。最直观的做法是建立一个有100个未知系数的多元方程模型,然后每个用户就是这个方程模型的实例,那么我们就会获得一个10万个方程的方程组,解它就完事了。当然这是一个极度简化的例子,其核心是想说明现代机器学习包括神经网络本质上都是这种解方程组的需求的延伸,也因此自然而然地引入了线性代数和矩阵理论的特征概念。

其次,机器学习中的特征feature其实并不直接指向线性代数中含有固有本征意义的特征eigen,而是指向结构化表格中的描述性的字段field。还是上面那个用户的例子,在平台的视角中,他们的数据实际上就是一张10万行,100列的表格,每行代表一个用户实例,或者说样本sample;每列代表一个特征feature。平台可以用用户的编号index来表示用户,但这个编号主要起到一个唯一性索引的作用,本身不含信息;含有信息且能用于用户画像的就是每个用户在表中的那一行100个元素的数据,或者说,特征的向量feature vector(注意与线代中特征向量区别)。

最后,机器学习和线性代数的特征有关系吗?不仅有,还非常密切。继续上面的例子,平台想从10万行、100列的数据中发掘有意义的信息在算力有限的情况下还是挺困难的,不同特征的质量可能不一样,有冗余等;不同特征Feature和不同的具体任务关系密切程度也不一样。如果这些数据不加处理就直接拿来学习,难度比较大。那么自然而言就会有聪明的学者和工程师想到要对数据进行预处理,尤其是特征上的预处理,比如特征工程表示学习(实践中特征工程一般也包含自动化的表示学习方法)中的:

  • 特征选择:人为选择一批与任务相关的特征,比如从100个字段中选出30个。
  • 特征组合与特征交叉:将两个或多个特征进行组合、衍生或转换,创建新的特征,捕捉特征之间的相互影响或交互关系,从而提高模型的表达能力。
  • 特征降维:将高维特征空间中的特征表示转换为低维表示的过程,同时保留原始数据中最重要的信息。包括主成分分析(PCA)、线性判别分析(LDA)等。
  • 基于深度学习的表示学习:神经网络的低秩Low Rank特性。2013年,Bengio等人发表了关于表示学习的综述。2016年,Bengio和Goodfellow等人合著的Deep Leanring综述中,也为表示学习留了一章,感兴趣可以去了解。

其中,特征Feature选择和降维是直接与线性代数特征Eigen相关的,前者由专家根据经验直接筛选,后者主成分分析(PCA)和线性判别分析(LDA)都涉及到基于线性代数的特征值和特征向量的求解。它们的核心思想是通过线性变换找到数据在某些方向上的最佳表示,而这些方向由特征值和特征向量确定。

铺垫这么多,终于可以踏入正题了:大模型中的词嵌入Embedding就是一种用于NLP任务的基于深度学习的表示学习方法,在形式上,Embedding的功能是将单个token嵌入一个n维的语义空间,或者说,将序号表示的token表示为一个长度为n的向量。大家还记得前文提过的符号系统转数字系统那张图吗?这里再贴一下。总而言之,Embedding就是分词后将符号系统的文本数值化的最关键一步。几乎所有NLP任务都是基于Embedding,然后才后接各种分类器、回归器的。

符号系统与数值系统

2 词向量表示:离散与分布式表示与Dense词嵌入

2.1 概念厘清:词嵌入是将词映射到语义空间中的一个词向量的过程

第一部分的核心是介绍机器学习、尤其深度学习中数值化经验材料的问题,万法归一,不论是文本、图像、声音、表格数据,还是你所期望的任何对象,都可以被数值化为特征向量(Feature Vector),嵌入一个特征空间(Feature Space)。方法主要分为专家人工定义和表示学习两者,后者又有万物皆可表示学习的概念。当前基于大语言模型的多模态大模型,其实主干都是Transformer架构,唯一的区别就在不同模态数据如何单元编码(Tokenization,Encoding)数值化表示(Representation,Embedding),即如何在表示层面与文本Embedding对齐的问题。

回到NLP本身。NLP任务面对的是自然语言文本,首先要解决Text—to—Data的问题,也就是将最小样本单元表示为数值的问题,又称Embedding。形式千奇百怪,任务需求也千奇百怪。根据嵌入单位的不同可以分为词嵌入Word Embedding、句子嵌入Sentence Embedding、文档嵌入Doc Embedding。文本分类等任务可能会用到后两种,但在Seq2Seq等类型的生成式任务(注意与生成式模型的生成式进行区分)中使用词嵌入。所谓词嵌入,就是将词元token映射到一个多维的特征向量空间中称为为特征词向量。这个空间就叫语义空间,因为词向量在该空间中的位置关系隐含了语义信息,最典型例子的就是计算语义相似度。下图就是一个二维词语义空间中的词嵌入示例,其中每个词元(如校本部)都可以用一个二维向量表示(如[0.12, -0.35]),现实大模型的语义空间通常维度非常高,比如4096维。

2.2 词向量表示:离散与分布式

词向量作为将词数值化的手段,核心是服务机器计算的需求,主要有离散表示Discrete Representation和分布式表示Distributed Representation两种。

离散表示的核心是独热编码One-hot,是在20世纪50年代计算机应用中自然出现,脱胎于寄存器向量表示形式。本质上这种表示和用标量index为词元编码没有区别,这一阶段实际上也不存在表示词的作用,更多地是基于对词的独热编码处理文本块问题。

  • 表示词

    • One-hot独热编码用于NLP等同于在一个词表中对所有词Encoding编码,向量长度为词表长度,特点是向量中只有词的index位置为1,其余为0。
      • 优点:简单快速将符号表示为数值,现在还在用,比如对于用1-6数值表示的类别信息时,机器学习中往往会在预处理时将数值变为长度为6的独热向量(数值有顺序大小但向量没有)。
      • 缺点:在充当词向量时极度稀疏、维度灾难(维度等于词表大小)、语义鸿沟(向量相互正交),三个问题的核心是稀疏性。
    • 作为嵌入Embedding的输入:嵌入层是全连接神经网络的一种,使用矩阵乘法进行嵌入,输入是稀疏高维的one-hot,输出是低维稠密的词向量。
  • 表示文本块:基于对词元的One-hot独热编码

    • BoW词袋模型:Bag of Words,20世纪50年代至60年代,哈里斯分布式假说的直接产物,One-hot的简单延伸,也称为计数向量表示(Count Vectors)。先对词进行One-hot编码,然后将一个文本块中所有词的one-hot向量相加。优点是简单便于理解,且通过统计累加实现了文本块相似性的目的。但缺点和one-hot本身类似,维度爆炸,且词元无语义关系。
    • TF-IDF向量化:最早诞生于1972,Karen Spärck Jones在她的论文A Statistical Interpretation of Term Specificity and Its Application in Retrieval中详细描述了逆文档频率(IDF)的概念。她的工作为TF-IDF的理论基础奠定了重要的基础。用于衡量一个词在文档中的重要性,通过计算词频和逆文档频率的乘积,为每个词赋予一个权重,从而更好地理解文本的含义。实现上,比如有n个文档,m个词。那么就有n个TF-IDF向量,每个TF-IDF向量长度为m,每个值是该文档中该词的TF·IDF值,即 ( 词在当前文档中出现的次数 当前文档中的单词数 ) ⋅ l o g ( 总文档数量 该词出现的文档数量 ) (\frac{\text{词在当前文档中出现的次数}}{\text{当前文档中的单词数}})·log(\frac{总文档数量}{该词出现的文档数量}) (当前文档中的单词数词在当前文档中出现的次数)log(该词出现的文档数量总文档数量)
    • 最佳匹配BM25:Best Matching 25,用于信息检索的词匹配算法。在1995年左右由Stephen Robertson和他的同事在Okapi项目中提出的。BM25是TF-IDF模型的扩展和改进,被广泛应用于现代信息检索系统。其前身是Okapi BM20。核心原理是加权词频,引入词频饱和效应(词对文档的重要性会饱和)和文档长度归一化。
    • 潜在语义分析 (Latent Semantic Analysis, LSA):不仅考虑单词的频率信息来对比文章的相似度,而通过挖掘文章的主题、用主题比对相似度。首先构建一个单词-文本矩阵,单词里面的值是这个单词的TF-IDF值,然后用SVD分解把原来的一个矩阵变成三个(单词-主题、主题方阵、主题-文本)。此外,还能完成主题提取相关的任务,因为已经有了单词-话题矩阵,也可以做文本降维,文本分类等,文档检索任务要提出多少个话题可以通过控制T的值来实现。**潜在狄利克雷分布(Latent Dirichlet Allocation, LDA)**也基于主题,可以实现主题建模和文本分类的任务,但是一个概率模型。

由于One-hot的稀疏性,我们希望有一个稠密一点的向量表示法,因为一旦向量长度小于词表长度,那么维度降低了不说,最关键的是就不再可能相互正交。一旦不正交,就会有语义的相关性。基于这一想法,1954年Harris哈里斯提出了分布式假说:上下文相似的词,其语义也相似。1957年,Firth对分布式假说做出进一步的阐述和明确:词的语义由其上下文决定。分布式表示一般有两种方法:基于统计学和基于神经网络,分别与两种语言模型相关,具体内容在第3和第4部分详述。

3 基于统计学的分布式表示:统计语言模型与共现矩阵

语言模型是文本中语义信息,或者更精确,词元信息的抽象,那么文本中有哪些词元信息呢?聪明的你一定会想到,最直观的信息就是每个词元出现多少次,即频率或频数Frequency。进一步,不止有单个词出现的频率,还有两个词、多个词在某个窗口长度内共同出现的频率(共现Co-occurrence)。有了这个信息,我们就可以大力出奇迹去算一些词连续着出现的可能性了。那么恭喜你,成为第一代语言模型——统计语言模型(Statistical LM)——的创造者。

3.1 统计语言模型:马尔可夫独立性假设与n元文法模型n-gram

不同于神经网络语言模型,统计语言模型本质上是一种思想,本身不附带词向量产物。从概率统计角度出发、试图从大量文本数据中学习词汇和句子的概率分布、解决自然语言上下文相关性的数学模型,核心就是词元在文本中出现的概率。语言建模的Naive方案基于概统定理:

  • 贝叶斯Bayes定理与联合概率递推,语言建模的最终目的是获得n个词组成一句话 W W W的概率,即 P ( W ) = P ( w 1 w 2 . . . w n ) P(W)=P(w_1w_2...w_n) P(W)=P(w1w2...wn)。而根据语言序列的特性, P ( W ) = P ( w n ∣ w 1 w 2 . . . w n − 1 ) P(W)=P(w_n|w_1w_2...w_{n-1}) P(W)=P(wnw1w2...wn1)。这个链条可以一致递推到长度为1的序列,即 P ( W ) = P ( w 1 , w 2 , . . . , w n ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 1 w 2 ) . . . P ( w n ∣ w 1 w 2 . . . w n − 1 ) P(W)=P(w_1, w_2, ...,w_n)=P(w_1)P(w_2|w_1)P(w_3|w_1w_2)...P(w_n|w_1w_2...w_{n-1}) P(W)=P(w1,w2,...,wn)=P(w1)P(w2w1)P(w3w1w2)...P(wnw1w2...wn1)
  • 大数定律:当语料库足够大时,上述贝叶斯中的条件概率可以通过统计方法计算,即 P ( w n ∣ w 1 w 2 . . . w n − 1 ) ≈ C o u n t ( w 1 w 2 . . . w n ) C o u n t ( w 1 w 2 . . . w n − 1 ) P(w_n|w_1w_2...w_{n-1}) \approx \frac{Count(w_1w_2...w_n)}{Count(w_1w_2...w_{n-1})} P(wnw1w2...wn1)Count(w1w2...wn1)Count(w1w2...wn)
    来实现。

在Naive方案中,所有前置条件概率都知道后才能知道联合概率,前面的条件概率都是模型的状态和参数。存在两个问题:

  • 参数空间爆炸:例如词表大小为V,就算我们只考虑长度为N的句子,理论上有 O ( V N ) O(V^N) O(VN)个句子的组合,每个有 N N N个参数,参数量共 O ( N V N ) O(NV^N) O(NVN),几乎无法计算。
  • 数据严重稀疏:许多词的组合在语料库中没有出现,那么极大似然估计的概率就是0。

对于问题1,引入马尔可夫独立性假设Markov Independence Assumptions,一个词出现的概率只与它前面n-1个词相关,这个窗口内的词相互依赖,之外不相关,n是滑动窗口。马尔科夫独立性假设实质上是一种近似和妥协,一句话中第一个和最后一个词并不是完全不相关的;但这种极弱的相关性不值得我们将这两个词输入我们的模型。但这依然会引发存储问题,当n增加或者语料库变大,模型整体变大。解决方案是n一般取3。这就是大名鼎鼎的n元语言模型(n-gram)是统计语言模型的代名词,可以用于任何粒度的词/字母/句子(grams难以理解,默认为词)。

对于问题2,稀疏性是由 P ( A ∣ B ) P(A|B) P(AB)中任意一个不存在这个有限的文本全局中引起的:

  • A不存在:概率为0,会稀疏,解决方案是平滑,如加一个非常小的常数
  • B不存在:分母为0,除0问题,解决方案是回退,即使用B减去尾部词元代替其。

3.2 共现矩阵与奇异值分解:基于n-gram窗口的共现统计

早期分布式词向量是基于统计学算法理念的,具体操作主要是共现矩阵(Co-occurrence Matrix)以及对其的奇异值分解(SVD)优化。共现矩阵是对n元文法模型的一种实现

共现矩阵:奠基于1950s的哈里斯分布式假说,于1960s-1970s在信息检索和文本分析中得到更广泛的应用。研究者们利用共现矩阵来分析词汇之间的语义相似性,并且这些方法逐渐成为早期语义分析的基础。基本原理是指定窗口大小n统计窗口内词语共同出现的次数作为词向量。这种考虑和词的上下文以及先后顺序,但是由于这种生成此表数量巨大的稀疏矩阵,故而复杂性很高。如下,never与trouble共同出现的频次为2,与until共同出现的频次为0;这样,经过统计语料库中的所有文本单词,never的词向量可以表示为[0 2 0 0 0 0 0 0],以此类推,trouble可以表示为[2 4 2 1 0 1 0 0]。基于词频统计结果的共现矩阵没有忽视语义关系,这在一定程度上缓和了语义鸿沟的问题,但是由于共现矩阵的维数等于词表的词汇总数,因此,矩阵依然十分稀疏,维度灾难和计算量大的问题仍然存在
共现矩阵

PCA降维:共现矩阵的维度灾难数据稀疏问题可以通过降低向量维度来解决。奇异值分解是使用最为广泛的一种矩阵分解方法,将多维的复杂矩阵A分解成矩阵的乘积,如 A = U Σ V T A=U\Sigma V^T A=UΣVT。根据奇异值的大小截取矩阵U后获取U’作为降维矩阵,再经过归一化后得到词语的词向量。共现矩阵经过奇异值分解后变为低维度的稠密矩阵,使得语义相近的词在向量空间上
相近,有时甚至能够反映词与词之间的线性关系。然而,其基于简单的矩阵变换,可解释性不强;同时,截断操作可能会丢失重要信息;另外,算法的计算量随语料库与词典的增长而急剧扩展,新加入的词会导致统计结果发生变化,矩阵必须重新统计和计算

4 基于神经网络的分布式表示:神经概率语言模型NNLM

除了概率统计,在机器学习领域还有一种通用求解模型:对问题建模,构造目标函数,参数优化,预测与评估。聪明的你又想到了,最彻底地贯彻这种求解模型的方法就是神经网络。这就是第二种语言模型,即神经网络语言模型,或者说神经概率语言模型,最早是由深度学习三巨头之一的Bengio在2003年发表的一篇论文A neural probabilistic language model(一种神经概率语言模型)中提出的,神经网络模型能够通过学习单词的分布式表示,NNLM一统词嵌入的范式,目前分布式词向量通常特指基于神经网络获取的低维度词向量。

但2003年后由于训练效率的问题,神经网络语言模型一直没有发展起来。2006年Hinton用一手预训练+微调范式解决了梯度问题后并掀起了深度学习热潮,直到2012年,在看到这一范式在CV和语言识别两个领域取得巨大进步后,NLP也开始拥抱预训练+微调,开启了语言模型的预训练时代大模型时代。此外,根据词向量模型能否根据上下文处理一词多义,神经网络语言模型又分为静态词嵌入模型动态词嵌入模型,动态词嵌入模型又根据架构分为基于固定静态词嵌入+LSTM基于可学习静态词向量+Transformer两种。

4.1 静态词嵌入模型:Static Embedding

4.1.1 Word2Vec词到向量,2013,Google,局部窗口

2013年,Google的Tomas Mikolov等人开源了一个名为Word2Vec的用于获取词向量的工具包(Mikolov et al. 2013a)。Word2Vec也是一种语言模型,嵌入层数量为1,在算法理论上参考了Benjio(2003)设计的神经网络模型,从大量文本预料中以无监督方式学习语义知识。在处理大规模、超大规模的语料时,Word2Vec可以简单并且高效地获取高精度的词向量,在学术界和业界都获得了广泛的关注。Word2vec的实现主要有连续词袋模型(CBOW,Continuous Bag-of-Words)和跳跃元语法模型(Skip-Gram)两种
w2v

  • 连续词袋模型CBOW:根据上下文填空。具体实现上继承了词袋模型BoW的思路,主要考虑目标词周围出现的词,忽略其词序和语法。模型运算具体步骤为:初始化一个shape=[词表长度,嵌入维度]的Embedding模型,对每个目标生成词,输入上下文若干个词并获得对应的离散词向量,聚合所有向量并用分类器(如Softmak)输出这个聚合后的词向量表示的词表中所有词出现的概率,再通过哈夫曼树查找目标词、计算损失函数、通过BP算法更新网络参数使输出为目标词的概率最大化,最终训练得到一个能较好完成上下文填空任务的Embedding模型,或词向量模型。这种填空的方式启发了后来基于Transformer模型的自编码/掩码语言模型。
  • 跳跃元语法模型Skip-Gram:与上相反,根据一个词预测上下文。也是先初始化一个Embedding神经网络模型,并用其获得指定词的词向量,然后用其预测上下文的词向量并根据损失函数更新参数。

4.1.2 GloVe全局词向量表征,2014,Stanford,全局共现

Word2Vec是基于有限上下文窗口的局部方法,那么根据学术惯性就提出了基于全局的方法。基本原理是参考潜在语义分析LSA里的矩阵形式囊括全局,但不进行矩阵分解,而是参考Word2Vec预训练了词向量的分布,最终达到了比较好的效果。其核心是一个基于距离加权的全局共现矩阵。

4.1.3 FastText,2016,Facebook,局部+n-gram

与Word2Vec同一作者,主打训练速度快和资源受限场景,有分类和词嵌入两个模型,具体参见FastText介绍。简单来说,其作为词向量模型的原理是在Word2Vec的跳跃元语法模型Skip-Gram基础上引入n-gram解决其忽略词性(同义不同形态)的问题。训练过程也与word2vec相差不大,唯一的差别是word2vec使用的是一个单词的Embedding作为输入来预测上下文,而FastText使用的是word和gram的Embedding相加后的结果来进行上下文的预测。

4.2 动态词嵌入模型:Contextual Embedding

主要面对的是一词多义问题,需要根据上下文来决定确定的表征。需要注意的是,动态词向量完全是在预训练语言模型背景中提出的,其基本的范式已经不是为了特定任务训练一个语言模型了,而是预训练阶段针对文本理解进行学习,在微调阶段才根据具体任务进行学习。因此,可以想到所谓动态词向量,是在静态词嵌入模型基础上增加一些上下文捕捉器,例如ELMo的Bi-LSTM、BERT/GPT的Transformer Blocks。

4.2.1 CoVe,2017,Salesforce,固定静态词嵌入+Bi-LSTM注意力+迁移学习

McCann等人提出,Contextualized Word Vectors语境词向量,用于生成上下文敏感的词向量。与ELMo类似,也使用一个两层双向的LSTM模型,区别是CoVe 使用的是从机器翻译任务中提取的预训练双向 LSTM Encoder。这意味着 CoVe 的上下文建模部分来源于翻译模型的知识,是固定的,而不是在通用语料库上训练的。目标是将机器翻译任务中的上下文建模能力迁移到生成上下文敏感词向量上,可训练的是下游任务模型。

4.2.2 ELMo,2018.2,Allen AI2,固定静态词嵌入+Bi-LSTM注意力

ELMo(Embedding from Language Model)从语言模型嵌入,基于静态预训练词向量进行初步表征,而后使用两个独立LSTM考虑双向的上下文信息后合并两者输出作为生成的动态词向量,目的是训练一个上下文Bi-LSTM。具体架构信息可见图解ELMo。但双向的也有缺点,即无法真正理解全局(两个方向都无法理解各自方向的下一个词)。而这将由Transformer架构解决。

4.2.3 ULMFit,2018,Fast.ai+DeepMind,固定静态词嵌入+Bi-LSTM集大成,微调/迁移学习

Universal Language Model Fine-tuning统一语言模型微调,旨在通过迁移学习显著提高文本分类和其他自然语言处理任务的性能。ULMFiT 模型的主要贡献在于通过迁移学习和微调预训练语言模型来增强文本分类任务的效果。架构和训练思路:类似CoVe使用了静态词向量模型,基于预训练通用的语言知识和上下文表示的LSTM的语言模型作为其基础。在预训练语言模型之后,ULMFiT 采用迁移学习的策略,将预训练的语言模型迁移到具体的下游任务中(如文本分类、情感分析等)。迁移学习的关键是通过微调预训练的语言模型,使其适应具体任务的数据和需求。ULMFiT 采用逐步解冻的策略,逐渐解冻预训练语言模型的层进行微调。这种方法有助于保持低层次的通用特征,同时使高层次的特征能够适应具体任务。

4.2.4 BERT,2018,Google,可训练静态词嵌入+Transformer Encoder

BERT(Bidirectional Encoder Representation from Transformers)双向编码表示Transformer,是Encoder-only架构。首次提出了MLM掩码语言建模(自编码填空)和下一句预测任务NSP(针对分类,因为纯Encoder没有不善于生成)。主要是基于位置编码Position-encoding和自注意力Self-attention,将添加了位置信息的Embedding向量进行逐元素加或cat。

4.2.5 GPT,2018,Google,OpenAI,可训练静态词嵌入+Transformer Decoder

Generative Pre-trained Transformer生成式预训练Transformer,Decoder-only架构,Casual序列建模( Auto-Regressive自回归生成),是目前大模型的主流架构。

4.2.6 BART,2019,Facebook,可训练静态词嵌入+Transformer Encoder-Decoder

BART(Bidirectional and Auto-Regressive Transformers)双向自回归Transformer,结合了双向编码器(类似于 BERT)和自回归解码器(类似于 GPT)。这种混合结构允许模型同时利用双向上下文和自回归生成能力。一看就是缝合了BERT和GPT的学术向论文。预训练目标类似于去噪自编码器。具体来说,它通过在输入文本中引入噪声(如删除、替换、随机顺序等),然后训练模型去恢复原始的、未受损的文本。这个任务有助于模型学习如何从不完整的信息中恢复和生成文本。类似的,2019年T5(Text-To-Text Transfer Transformer)文本到文本迁移模型,采用了一个统一的 Transformer 架构,希望用于处理所有任务。所有任务都被形式化为文本到文本的转换问题,例如将输入文本转换为输出文本。其训练原理是通过填空任务和多任务学习来处理各种自然语言处理任务。

参考文献

厦门大学 陆晓蕾:词义分布的空间维度—从文本符号到词向量表征

词向量嵌入发展综述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值