人工智能之大模型语言LLMs详解
人工智能是模拟人类智能的信息处理系统,其核心在于让机器具备理解、学习和执行语言任务的能力。文章系统梳理了AI发展的三个阶段:从50年代基于规则的语法处理,到统计语言模型,再到当前主流的神经网络模型。重点解析了Transformer架构及其自注意力机制的工作原理,介绍了GPT、BERT等主流大语言模型的技术特点。同时详细阐述了LLM大模型的训练流程,包括数据预处理、预训练、指令微调和对齐优化等关键环
一、人工智能的概念
人工智能是对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但它能像人那样思考,也可能超过人的智能。基于这个设想,人工智能应当能够执行通常需要人类智能的任务,如视觉感知、语音识别、决策和语言翻译等工作。就像人一样,可以看见、听见、理解和表达。这涉及了众多人工智能的分支学科,如计算机视觉(CV)、自然语言处理(NLP)、语音识别(VC)、知识图谱(KG)等。
自然语言处理技术(简称NPL)是人工智能的一个重要分支,其目的是利用计算机对自然语言进行智能化处理。让只认识0和1的计算机去理解复杂且抽象的人类语言。
自然语言处理经历了从理性主义到经验主义的发展路径。理性主义基于规则,经验主义基于统计。在传统编程下的机器语言,是最极致的“基于规则”的语言,它本质上是一个个逻辑判断,逻辑和规则被固化在代码的一个个if...else和for循环里,计算机做的只是存储数据,指令计算,它不需要有所谓的“智能”,智能在程序员的脑子里,通过代码固化下来。但到了自然语言这里,最大的难点在于语言的歧义性和动态变化,计算机要解决包括语义歧义、结构歧义、省略歧义、指代歧义等等这些在人类看起来根本不是问题的问题。
基础的自然语言处理技术主要围绕语言的不同层级展开,包括音位(语言的发音模式)、形态(字、字母如何构成单词、单词的形态变化)、词汇(单词之间的关系)、句法(单词如何形成句子)、语义(语言表述对应的意思)、语用(不同语境中的语义解释)、篇章(句子如何组合成段落)7个层级。这些基本的自然语言处理技术经常被运用到下游的多种自然语言处理任务中,如机器翻译、对话、问答、文档摘要等。
在传统计算机采用的编码方式下,数字并不代表文字背后隐藏的意义,电脑也不需要理解文字背后的意义,使用电脑的人理解这个意义即可。但是,如果一个系统的所有功能都需要预先编码好而不具有学习的能力,恐怕很难认为它具有智能。科学家研究自然语言处理技术(NLP)的目的是让机器能够理解人类语言,用自然语言的方式与人类交流,最终拥有“智能”。人工智能试图做的,就是代替人类智能的那部分。
二、发展阶段

1.基于语法的语言处理
从20世纪50-70年代,人们主要采用基于规则的自然语言处理方法,主要思想是通过词汇、形式文法等制定的规则引入语言学知识,从而完成相应的自然语言处理任务。语言学家们认为,解决语言问题的关键是语法,试图以将所有语法输入给计算机从而让机器学会说人话,于是在1950-1970近二十年间,与专家系统类似,语言学家也在用一种近乎愚公移山的方式,试图补全所有语法规则。
但是,语言的核心是语义,有限的符号和语法规则,能幻化出无限的语义可能性。自然语言的复杂性却似乎超出了他们的想像。1966年,美国科学院发表了报告《语言与机器》,全面否定机器翻译的可行性,并提出停止对机器翻译项目的资金支持的建议。但是由于机器翻译的需求场景真的很大,又没有可替代的技术,直至80年代之前,NLP的主要实现方式还是基于规则。
2.基于统计的语言处理
1948年,香农在《通信的数学原理》中指出:语言的统计特性可以被建模,同时,还可以根据这个概率模型有效地生成语言。
基于马尔可夫假设,认为一个词出现的概率仅与其前面的n-1个词有关。核心是,在给定当前知识或信息的情况下,观察对象过去的历史状态对于预测将来是无关的。也可以说,在观察一个系统变化的时候,它下一个状态(第n+1个状态)如何的概率只需要观察和统计当前状态(第n个状态)即可以正确得出。在马尔可夫链的基础上,人们进一步提出了隐马尔可夫模型,并将其应用于语音识别这个自然语言处理的子领域。最终人们将语音识别这个一直被认为几乎无法实现的技术,做到了极高的可用性。
2.1基于统计的N-gram语言模型:
N-gram模型是一种基于统计语言模型的文本分析算法,它用于预测文本中下一个词出现的概率,基于前面出现的n-1个词的序列。这里的n代表序列中元素的数量,因此称为N-gram。
N-gram模型的工作原理:N-gram模型通过统计语料库中n-gram序列的频率,估计给定前n-1个元素后下一个元素出现的概率,从而实现文本预测:
A:语料库准备:首先,需要有一个大型的文本语料库,用于训练N-gram模型。
B:计算频率:然后,计算语料库中所有可能的n-gram序列的频率。
C:概率估计:根据这些频率,可以估计出给定n-1个词后,下一个词出现的概率。
D:预测:在预测阶段,给定一个词序列的前n-1个词,模型可以输出下一个词的概率分布,从而可以选择最可能的词作为预测结果。
比如:最简单的语言模型就是把一句话拆成一个个单元,比如一个词序列被拆成了(W1、W2、W3、W4......WM),语言模型的目标就是构建它的概率分布P(W1、W2、W3、W4......WM)。但是,计算联合概率十分困难,所以会通过链式法则对概率的求解过程进行分解。在这种概率模型计算下,每个字、词条都有概率参数,由于语料库非常大,这个参数量是巨大的。本质上讲,训练N-Gram模型的过程其实是统计频率的过程。它并没有用到深度学习和神经网络,只是一些统计出来的概率值。
早期的NLP就是采用的都是这种模式,只是在技术细节上会有优化。从语言模型的角度来看,N元语言模型存在明显的缺点。首先,模型容易受到数据稀疏的影响,一般需要对模型进行平滑处理;其次,无法对长度超过N的上下文依赖关系进行建模。
3.基于神经网络的语言模型
相比于传统的N-gram的概率统计计算,神经网络通过拟合一个概率函数代替了通过统计频率对概率值的估算过程。它通过多层的特征转换,可以将原始数据转换为更抽象的表示,所以这个简单的结构理论上可包万物。
基于神经网络的模型基本遵循如下的方式:首先设定一个目标,通过大量数据反复训练,直到让其拟合出目标函数,通俗来说,训练过程就是先让机器“蒙”一个答案,然后算出距离正确答案差多远(损失函数),给机器一个反馈,再让它继续蒙,重复多次直到它蒙对。
不同的神经网络模型,其实就是所设计的目标函数不同,设计不同目标函数的目的,无非就是努力让模型的表达能力更强,更能发挥硬件优势。
3.1 前馈神经网络
前馈神经网络是一个浅层前馈神经网络。前馈神经网络由输入层、词向量层、隐含层和输出层构成。如下图,输入层传入待预测词的前N个词,可以理解为前N个词的语义影响了这个词的输出。
从原理来说,神经网络语言模型沿用了马尔可夫假设,即下一个时刻的词只与过去n-1个词相关,其目标可以表示为输入历史词W(i-n+1)...W(i-1),输出词Wi在词表上的概率分布。
前馈神经网络语言模型一个明显的问题是,对下一个词的预测需要回看多长的历史是由超参数N决定的,这个N是固定的。这样处理最大的一个问题是:现实情况下,不同的词语对历史长度N的期望往往是变化的。

3.2 循环神经网络模型(RNN)
循环神经网络模型(Recurrent Neural Network,RNN)正是为了处理这种不定长依赖而设计的一种语言模型。循环神经网络的提出就是为了处理序列数据的,正好满足自然语言这一场景。它在每一时刻都维护一个隐含状态,该状态蕴含了当前词的所有历史信息,且与当前词一起被作为下一时刻的输入。
简单来说,循环神经网络可以看作一个具有"记忆"的神经网络。RNN的基本原理是通过循环来传递隐藏状态信息,从而实现对序列数据的建模。循环神经网络语言模型不再基于马尔可夫假设,每一时刻的词都会考虑到过去所有时刻的词,词之间的依赖通过隐藏层状态来获取,这刚好解决了语言模型需要动态依赖的问题。

循环神经网络的问题:
首先,RNN需要顺序执行,也就是在上一个词处理完之前,无法进行下一个词的计算,这限制了机器的并行处理能力,从而导致计算效率缓慢。
其次,在处理长序列时,RNN无法捕捉到长距离之间的依赖关系,这是因为整个原始句被压缩成一个固定维度的隐藏状态向量,如果句子过长,这个固定维度显然无法准确表达每个词的特征。
另外在处理长序列时,训练这样的循环神经网络可能会遇到梯度消失或梯度爆炸的问题,导致无法进行有效的训练。
3.2.1神经网络模型的关键:词向量
神经网络处理语言问题的根本逻辑,就是:使用词向量,寻找相似度。
计算机的底层是二进制,传统的字符编码只考虑了存储与表示,并未考虑文字的实际语义。而人工智能则不然,它需要理解文字承载的“意义”。具体采用的技术就是“向量化”。通过这种方式,计算机不需要真正理解每个词的实际意义,而是利用相似度来建立了另一种意义:把每个词都表示为向量,然后把它们放到一个多维坐标里面,词和词之间的空间关系,就会把它们语义上的关系表示出来。语言学家约翰·R .弗斯(John R. Firth, 1957)也有一句名言佐证此假设:“要知道一个单词的含义就要看它周围是什么单词”。这在自然语言处理领域,被称为“分布式假设”。
基于分布式假设的思想,后续发展出两种实现方法:一种是基于计数的方法;另一种是基于推理的方法。基于计数的方法一次性处理全部学习数据;反之,基于推理的方法使用部分学习数据逐步学习。
基于计数的方法的思想是:根据一个单词周围的单词的出现频数来表示该单词。这类技术的代表包括采用奇异值分解的隐式语义分析。
基于推理的方法,实现方法是使用神经网络来处理单词。首先将单词用独热编码表示为向量,接下来将这些向量传递给神经网络的各个层,通过全连接层对其进行变换。2013年,谷歌团队提出了Word2Vec的词向量技术。从此,以词向量(Word Embedding)为代表的分布式表示的语言模型深刻地影响了自然语言处理领域的其他模型及其应用的变革。
这种将任意文本(或非文本符号)表示成稠密向量的方法,统称Embedding。Embedding可以说是NLP领域甚至于深度学习领域最基础的技术。
从Word2Vec(“词到向量”)这个名字上就可以看出来,他的关注点不是语言模型本身,得到词向量这个副产物成为了主要的目的,所以严格意义来说,它不是一个语言模型。词向量的学习主要利用了语料库中词与词之间的共现信息,其背后的核心思想是就是上面提到的分布式语义假设。在一个文本序列中,每个词的动态词向量实际上是对该词的上下文进行语义组合后的结果。
3.3 预训练与大模型语言
2018年,BERT和GPT的诞生,标志着开启了基于预训练的语言模型时代,将预训练语言模型应用于下游任务时,不需要了解太多的任务细节,不需要设计特定的神经网络结构,只需要“微调”预训练语言模型,即使用具体任务的标注数据在预训练语言模型上进行监督训练,就可以获得显著的性能提升。
利用丰富的训练语料、自监督的预训练任务以及Transformer等深度神经网络结构,使预训练语言模型具备了通用且强大的自然语言表示能力,能够有效地学习到词汇、语法和语义信息。
在NLP领域,注意力机制首先被引入是在2015年,被应用于Seq2Seq模型。Seq2Seq模型(序列到序列模型,即输入-输出序列映射:直接将输入序列映射到输出序列,常用于机器翻译和文本摘要任务)。具有“编码器-解码器(编码器处理输入序列,解码器生成输出序列)”架构,Seq2Seq模型最广泛的应用场景是机器翻译领域,但其实也可以被应用在序列到序列相关的所有场景。
所谓注意力机制,简单来说就是对于输入序列,计算出一组能够表达重要性程度的值向量——注意力权重,然后通过这个权重对数据项进行加权求和,此时,应用的还是循环神经网络,只是将注意力机制融入了进去,只是这一阶段,神经网络模型用的仍旧是RNN,在注意力Seq2Seq模型之后、Transformer模型诞生之前,NLP领域还涌现了许多对于注意力机制的研究,其中包括全局注意力(Global Attention)、局部注意力(Local Attention)、层级注意力(Hierarchical Attention )、结构化自注意力(Structured Self-attention)等等
三、大语言模型技术
(一)Transformer的注意力机制
Transformer架构由Google在2017年发表的论文《Attention is All You Need》首次提出,它使用自注意力(Self-Attention)机制取代了之前在 NLP 任务中常用的RNN(循环神经网络),使其成为预训练语言模型阶段的代表架构。
注意力机制最早起源于计算机视觉领域,其思想在上世纪九十年代就已经被提出。在2014年的论文《Neural Machine Translation by Jointly Learning to Align and Translate》中注意力机制首次应用于NLP领域,结合了RNN和注意力机制,提出了序列到序列(Seq2Seq)模型,来改进机器翻译的性能。Transformer的贡献在于,它提出注意力机制不一定要和RNN绑定,我们可以将注意力机制单独拿出来,形成一套全新的架构,这也就是论文标题《Attention Is All You Need》的来源。
1.注意力机制
什么是注意力机制?
在NLP领域,有三个基础概念:
分词(Tokenization):首先大模型会将输入内容进行分词,分割成一系列的词元(Token),形成一个词元序列。
词元(Token):指将输入的文本分割成的最小单位,词元可以是一个单词、一个词组、一个标点符号、一个字符等。
词嵌入(Embedding):分词后的词元将被转换为高维空间中的向量表示,向量中包含了词元的语义信息。
举个例子,当我们输入“我可以拥有一杯咖啡吗?”时,首先通过分词形成“我”、“可以”、“拥有”、“一杯”、“咖啡”、“吗?”这几个词元,然后通过词嵌入转变成高维空间中的向量。
在向量空间中,每一个点代表一个实体或者概念,我们称之为“数据点”。这些数据点可以代表着具体的单词、短语、句子,他们能够被具体地、明确地识别出来,我们称之为“实体”;也可以不直接对应于一个具体的实体,而是表达一种对事物的抽象理解,我们称之为“概念”。这些数据点在向量空间中的位置和分布反映了实体或概念之间的相似性和关系,相似的实体或概念在空间中会更接近,而不同的则相距较远。其所在空间的每一个方向(维度)都代表了数据点的某种属性或特征。这些属性和特征是通过模型训练获得的,可能包括了“情感”、“语法”、“词性”等方面,事实上由于这些属性和特征是模型通过训练进行内部学习的结果,他们的具体含义往往难以直观解释清楚。
当词元被嵌入到向量空间中,每个词元都会形成一个实体的数据点,此时这些数据点所对应的向量,就代表了词本身的语义。但是在不同的上下文语境中,相同的词也会有不同的语义。比如在“科技巨头苹果”、“美味的苹果”这两句话中,“苹果”这个词,分别代表着苹果公司和水果。因此模型需要对原始向量“苹果”,基于上下文中“科技巨头”、“美味的”等信息,来进行数据点位置的调整,丰富其语义。换句话说,词元与上下文中各个词元(包括其自己)之间具有一定程度的“依赖关系”,这种关系会影响其自身的语义。
每个词元都需要捕捉自身与序列中其他词元的依赖关系,来丰富其语义。在“我配拥有一杯咖啡吗?”中,对于“配”而言,它依赖“我”作为其主语,这是一条依赖关系。对于“咖啡”而言,“一杯”是其量词,这也是一条依赖关系。
这种关系不只会在相邻的词元之间产生,在论文中有个词叫长距离依赖关系(long-range dependencies ),它指在词元序列中,相隔较远的位置的词元之间的相互依赖或关联。在一篇议论文中,作者可能在文章开头提出一个论点,然后通过一系列的论据和分析来支持这个论点,直到文章结尾可能再次强调或总结这个论点。在这个过程中,文章开头的论点和结尾的总结之间就存在着长距离依赖关系,它们在语义上是紧密相连的。
不过虽然词元与各个词元之间都可能存在依赖关系,但是其依赖程度不同,为了体现词元之间的依赖程度,NLP选择引入“注意力机制”。“注意力机制”可以动态地捕捉序列中不同位置元素之间的依赖关系,分析其强弱程度,并根据这些依赖关系生成新的序列表示。其核心思想是模仿人类的注意力,即在处理大量信息时,能够聚焦于输入数据的特定部分,忽略掉那些不太重要的信息,从而更好地理解输入内容。
2.Transformer采用自注意力机制的原因
并行化计算:在处理序列数据时,能够同时处理序列中的所有元素,这很重要,是模型训练时使用GPU的并行计算能力的基础。
长距离依赖捕捉:在注意力机制上不依赖于序列中元素的特定顺序,可以有效处理序列中元素之间相隔较远但仍相互影响的关系。
并行处理是Transformer的核心优势之一。在预训练语言模型阶段,预训练(Pretrain)+微调(Finetune)是模型训练的主要范式。Transformer的并行化计算能力大大提高了模型训练的速度,长距离依赖捕捉能力为模型打开了上下文窗口,再结合位置编码等能力,使得Transformer相对于RNN获得了显著优势。而预训练又为Transformer带来了特征学习能力(从数据中自动学习和提取特征的能力)和迁移学习能力(将在一个任务上学习到的知识应用到另一个相关任务上的能力)的提升,显著提升了模型的性能和泛化能力。这些优势,也正是GPT选择Transformer的原因。
(二)Transformer的架构
Transformer架构分为两部分:
编码器:用于理解输入序列的内容。它读取输入数据,并将其转换成一个连续的表示,这个表示捕捉了输入数据的关键信息和上下文。
解码器:用于生成输出序列,使用编码器的输出和之前生成的输出来预测序列中的下一个元素。
以文本翻译为例,输入“我爱喝咖啡”,并要求模型将其翻译成英文。编码器首先工作,通过理解每个词元本身的含义,以及其上下文的依赖关系,形成一种向量形式的中间表示,并传递给解码器,这里面包含了整个序列的语义,即“我爱喝咖啡”这句话的完整含义。解码器结合该信息,从零开始,不断地预测下一个最可能的英文词元并生成词元,直至完成翻译。
值得注意的是,在解码器的多头注意力层(也叫交叉注意力层,或编码器-解码器自注意力层),编码器所提供的输出中,“我爱喝咖啡”这句话的含义已经明示。这对于文本翻译这种序列到序列的任务而言,可以确保生成内容的准确性,但对于预测类的任务而言,无疑是提前公布了答案,会降低预测的价值。

Transformer架构图,引自《A Survey of Large Language Models》
随着技术的演进,基于Transformer已经形成了三种常见架构
编码器-解码器架构(Encoder-Decoder Architecture),参考模型:T5
编码器架构(Encoder-Only Architecture),参考模型:BERT
解码器架构(Decoder-Only Architecture),参考模型:GPT(来自OpenAI)、Qwen(来自通义千问)、GLM(来自清华大学)
其中编码器-解码器架构,适合进行序列到序列的任务,比如文本翻译、内容摘要。编码器架构,适合需要对输入内容分析但不需要生成新序列的任务,比如情感分析、文本分类。解码器架构,适合基于已有信息生成新序列的任务,比如文本生成、对话系统。
解码器架构下,又有两个分支:
因果解码器(Causal Decoder),参考模型:GPT、Qwen
前缀解码器(Prefix Decoder),参考模型:GLM
(三)通过生成式预训练提高语言理解能力
2018年,OpenAI团队的论文《Improving Language Understanding by Generative Pre-Training》横空出世,它提出可以在大规模未标注数据集上预训练一个通用的语言模型,再在特定NLP子任务上进行微调,从而将大模型的语言表征能力迁移至特定子任务中。其创新之处在于,提出了一种新的预训练-微调框架,并且特别强调了生成式预训练在语言模型中的应用。生成式,指的是通过模拟训练数据的统计特性来创造原始数据集中不存在的新样本,这使得GPT在文本生成方面具有显著的优势。
GPT使用了Transformer的解码器部分,同时舍弃了编码器中的交叉注意力机制层,保留了其余部分。整体上模型结构分为三部分:
输入层(Input Layer):将文本转换为模型可以处理的格式,涉及分词、词嵌入、位置编码等。
隐藏层(Hidden Layer):由多个Transformer的解码器堆叠而成,是GPT的核心,负责模型的理解、思考的过程。
输出层(Output Layer):基于隐藏层的最终输出生成为模型的最终预测,在GPT中,该过程通常是生成下一个词元的概率分布。
在隐藏层中,最核心的两个结构分别是:
掩码多头自注意力层(Masked Multi Self Attention Layers,对应Transformer的Masked Multi-Head Attention Layers,简称MHA,也叫MSA)。
前置反馈网络层(Feed Forward Networks Layers,简称FFN,与MLP类似)。
MHA的功能是理解输入内容,它使模型能够在处理序列时捕捉到输入数据之间的依赖关系和上下文信息,类似于我们的大脑在接收到新的信息后进行理解的过程。FFN层会对MHA的输出进行进一步的非线性变换,以提取更高级别的特征,类似于我们的大脑在思考如何回应,进而基于通过训练获得的信息和知识,产生新的内容。
(四)大模型的整体处理流程
分词(Tokenization):首先大模型会进行分词,将文本内容分割成一系列的词元(token)。
词嵌入(Embedding):分词后的词元将被转换为高维空间中的向量表示,向量中包含了词元的语义信息。
位置编码(PE):将词元的在序列中的位置信息,添加到词嵌入中,以告知模型每个单词在序列中的位置。
掩码多头自注意力层(MHA):通过自注意力机制捕捉序列内部词元间的依赖关系,形成对输入内容的理解。
前馈反馈网络(FFN):基于MHA的输出,在更高维度的空间中,从预训练过程中学习到的特征中提取新的特征。
线性层(Linear):将FFN层的输出映射到词汇表的大小,来将特征与具体的词元关联起来,线性层的输出被称作logits。
Softmax:基于logits形成候选词元的概率分布,并基于解码策略选择具体的输出词元。
四、语言大模型介绍
大模型,也称为大型语言模型(Large Language Models,LLMs),是指那些拥有海量参数和复杂计算结构的机器学习模型。这些模型通常基于深度学习技术,尤其是Transformer架构,能够处理和生成自然语言文本。大模型的参数量可以达到数十亿甚至数千亿,这使得它们能够捕捉和学习数据中的复杂模式和关系。
(1)大模型的规模和参数量是其最显著的特点之一。这些模型通常包含数十亿甚至数千亿个参数,使得它们能够捕捉和学习数据中的复杂模式和关系。大规模参数量不仅增强了模型的表达能力,也提高了其在多种任务上的性能。
参数量与性能关系:研究表明,随着模型参数量的增加,大模型的性能在多个任务上呈现出线性提升。例如,GPT系列模型从GPT-1的1.17亿参数发展到GPT-3的1750亿参数,其在语言理解、文本生成等任务上的能力显著增强。
计算复杂性:大模型的复杂性要求强大的计算资源支持。例如,训练一个千亿参数模型可能需要数千个GPU并行工作数周至数月。这种计算需求推动了硬件技术的发展,如NVIDIA的A100 GPU和谷歌的TPU。
(2)大模型的多任务学习和泛化能力是其核心优势之一。这些模型能够在多个领域和任务上表现出色,无需针对每个任务单独训练。
多任务学习:大模型通过在大规模数据集上预训练,学习通用的语言或视觉模式,然后通过微调适应特定任务。例如,BERT模型在预训练后,通过微调在11个NLP任务上取得了当时的最佳性能。
泛化能力:大模型的泛化能力使其能够在未见过的数据上进行准确预测。这种能力来源于模型在训练过程中接触到的海量数据和复杂特征学习。例如,ImageNet上的预训练模型能够泛化到其他视觉任务,如目标检测和图像分割。
(3)涌现能力是指大模型在达到一定规模后,展现出意料之外的新能力和特性。这些能力并非在模型设计时明确规划,而是在训练过程中自然出现的。
涌现能力的例子:GPT-3展现了惊人的文本生成和理解能力,能够完成从写作辅助到代码生成等多种任务。这种能力的提升并非简单的线性扩展,而是在模型规模达到某个阈值后突然涌现。
创新特性:大模型的涌现能力还体现在其创新特性上,如自我监督学习和持续学习。这些模型能够在没有明确标签的情况下学习数据中的模式,并且能够随着新数据的加入不断更新和优化自己的知识库。
社会影响:大模型的涌现能力和社会影响也引起了广泛的关注和讨论。这些模型在提高效率和创新的同时,也带来了潜在的风险,如数据隐私、模型偏见和伦理问题。因此,大模型的研究和应用需要在技术发展和社会影响之间寻找平衡
(一)大模型的训练流程
1.训练前提:数据清洗
训练大模型需要大规模、高质量、多模态的数据集,通常需要从各个领域和多个数据源收集数据,这些数据可能是文本、图像、语音、视频等多种形式。
数据来源繁杂且内容混杂,存在诸多不规范和不一致的情况,会对模型性能提升造成障碍。同时,在这些数据中也存在如行业白皮书、学术论文等特定行业专有数据,其中包含公式、网址、图片等多种内容格式,需要进行结构化解析。
大模型数据清洗流程:数据清洗的过程包括数据格式清理及转换、数据去重和数据整合。
(1)数据格式清理及转换:网页数据格式为HTML,而电子图书分EPUB、PDF、MOBI等多种格式。PDF分为可编辑版和扫描版。论文期刊的格式有PDF、DOC等多种。多样的格式加大了数据处理的难度。因此,数据清洗第一步就是数据格式清理,将数据分成可处理格式的数据与不可处理格式的数据。数据格式不同对于数据处理影响非常大,因此,下一步需要将不同格式统一转换成相同格式。
(2)数据去重:数据格式达到统一之后,需要对数据进行简单去重,如文件名去重、数据MD5值去重清洗掉一些容易分辨的重复数据,为后一步数据处理节省工作量。
(3)数据整合:经历上述数据处理之后,数据存储结构可能不太一致,因此数据清洗的最后一步是将分散的文件合并成一个整体,为后续的分析和决策提供完整、一致的数据。
(4)质量过滤:直接收集到的文本数据往往掺杂较多低质量数据。数据堂主要采用两种过滤方法:基于启发式规则的方法和基于分类器的方法。基于启发式规则的方法主要通过精心设计的规则来针对性识别和剔除低质量的文本数据。例如在处理代码语料时,可以过滤掉非代码相关格式的数据。为了训练特定目标语言为主导的大语言模型,还可以使用基于语种的过滤。
(5)敏感内容过滤:除了去除低质量内容,收集到的数据还可能包括有毒内容或隐私信息,需要进一步更为细致的过滤和处理。
(6)数据去重:研究发现,预训练语料中的重复低质量数据可能诱导模型在生成时频繁输出类似数据,进而影响模型的性能。此外,这些数据也可能导致训练过程的不稳定(训练损失震荡),可能导致训练过程崩溃。对预训练数据进行去重处理是一个重要步骤。总体来说,去重算法基于不同的计算粒度以及匹配方法。针对数据集和文档级别进行去重,去除那些具有高度相似甚至完全一致内容的文档。如:多个 URL 可能具有相同的网页内容,或者网页数据集和新闻数据集中包含相同的新闻文档。
(7)人工检查:在程序处理之后,数据堂还会通过人工检查来确保程序处理的准确性,数据质量评估需要随机采样不少于5000个样本进行人工评估。不同类型的数据将按照不同的准确率要求进行客观评估。人工检查团队将从文本字符识别准确率、布局准确率、内容质量等方面进行综合性评估,并备有一套完善的评估质量细则。
2.预训练(Pretraining)
预训练是大模型训练流程的起始阶段,其核心目标是让模型在大规模无标签数据上学习语言的基本规律和结构。这一阶段,模型通过自监督学习任务,如掩码语言模型(Masked Language Model, MLM)和预测下一个单词的任务,来捕捉语言的内在特征。(掩码:通过预测被掩码的单词来训练模型。)
数据规模与质量:预训练阶段需要大量的文本数据,这些数据的规模和质量直接影响模型的学习效果。例如,GPT-3模型在预训练阶段使用了超过45TB的文本数据,覆盖了广泛的领域和语言,确保了模型能够学习到丰富和多样的语言特征。
自监督学习任务:在预训练阶段,模型通常执行掩码语言模型任务,即随机掩盖输入文本中的一些单词,然后让模型预测这些被掩盖的单词。这种任务能够帮助模型学习到上下文信息和词汇之间的关系。
计算资源需求:预训练阶段对计算资源的需求极高。例如,训练一个175B参数的模型可能需要数千个GPU并行工作数月。这种大规模的计算需求使得预训练成为一项昂贵的任务,但也是大模型获得强大能力的基础。
3.指令微调阶段(Instruction Tuning Stage)
指令微调是在预训练模型的基础上,通过在特定任务的有标签数据上进行微调,使模型能够更好地适应和执行特定任务。这一阶段的目的是让模型学会理解和执行自然语言指令,从而提高其在特定任务上的性能。
指令格式的数据集:在指令微调阶段,需要构建包含指令和对应输出的数据集。这些数据集通常包含自然语言格式的任务描述和输入输出对,例如,“将以下文本翻译成英文:‘你好,世界’”。
微调策略:指令微调可以通过全参数微调或参数高效微调(PEFT)来实现。全参数微调涉及调整模型的所有参数,而PEFT只调整模型的一部分参数,如前缀(Prefix)或适配器(Adapter),以减少计算资源的需求。
性能提升:指令微调能够显著提升模型在特定任务上的性能。例如,经过指令微调的模型在机器翻译、文本摘要等任务上的表现比未微调的模型更好。
4.对齐微调(Alignment Tuning)
对齐微调是大模型训练的最后阶段,其目的是进一步调整模型的行为,使其输出更符合人类的价值观和偏好。这一阶段通常涉及到使用人类反馈来指导模型的微调。
人类反馈:在对齐微调阶段,模型的输出会经过人类的评估和反馈。这些反馈被用来训练一个奖励模型,该模型能够评估模型输出的质量,并指导模型生成更符合人类期望的响应。
强化学习:对齐微调常采用强化学习技术,如PPO(Proximal Policy Optimization)。在这一过程中,模型根据奖励模型的反馈来调整其行为,以生成更好的输出。
挑战与优化:对齐微调面临的挑战包括如何有效地利用人类反馈,以及如何在保持模型性能的同时减少偏见和不公平性。研究人员正在探索新的技术和方法,如直接偏好优化(DPO),以提高对齐微调的效率和效果。
(二)Prompt工程
大模型的Prompt(提示词工程)是指在自然语言处理(NLP)领域中,通过设计、实验和优化输入提示词(Prompt)来引导预训练语言模型生成所需的响应或完成特定任务的技术。这种技术能够在不改变模型本身的情况下,通过调整输入提示词来快速调整模型的输出,从而实现快速迭代和测试。
一个有效的Prompt通常包含以下几个关键要素:
引导语或指示语:明确告诉模型需要完成什么样的任务。
上下文信息:提供必要的背景知识,帮助模型更好地理解问题。
任务描述:明确地描述期望模型执行的具体任务。
输出格式指示:如果需要特定格式的输出,需要在Prompt中指明。
角色设定:为模型定义一个角色,以缩小问题范围并减少歧义。
1.Prompt的实践技巧
上下文学习(In-context Learning):利用文本、语音、图像等数据的上下文环境以及数据之间的关系和上下文信息来提高预测和分类的准确性和有效性。
思维链(Chain-of-Thought):要求模型在输出最终答案之前,先展示一系列有逻辑关系的思考步骤或想法,这些步骤相互连接,形成了一个完整的思考过程。
角色设定与风格控制:通过设定模型在生成文本时应扮演的角色,以及期望的写作风格或语气,来更好地定义模型的行为,确保生成的文本符合用户预期。
2.不同场景下的Prompt应用
Prompt技术在不同的应用场景中展现出广泛的适用性,以下是一些具体的例子:
自然语言处理(NLP):在文本分类、情感分析、问答系统等NLP任务中,通过设计特定的Prompt,模型能够更准确地理解和处理语言信息。
教育:在个性化学习推荐系统中,Prompt可以用来引导模型根据学生的学习历史和偏好提供定制化的学习内容。
医疗:在辅助诊断系统中,医生的问题可以通过Prompt转化为模型可以理解的查询,从而快速检索和分析病例信息。
金融:在风险评估和欺诈检测中,Prompt可以帮助模型更好地理解和分析复杂的金融数据,提供决策支持。
3.Prompt设计与优化
设计有效的Prompt是实现大模型潜力的关键。以下是一些Prompt设计与优化的策略:
明确任务目标:在设计Prompt时,首先要明确任务的具体目标和需求,这有助于确保Prompt能够准确引导模型的行为。
使用示例:在Prompt中包含示例可以帮助模型更好地理解任务的预期输出,尤其是在文本生成和翻译等任务中。
结构化设计:对于需要结构化输出的任务,如信息抽取,设计结构化的Prompt可以提高输出的可用性。
迭代测试:Prompt的设计往往需要通过不断的测试和迭代来优化。通过收集反馈和评估模型的输出,可以逐步调整和改进Prompt。
跨领域适应性:在设计Prompt时,考虑其在不同领域和任务中的适用性,可以提高模型的泛化能力。
Prompt工程是大语言模型应用中的重要环节,它直接关系到模型的输出质量和效率。通过精心设计的Prompt,可以引导模型更好地理解用户的意图,并生成更准确、有用的回答。
(三)典型大模型
1.语言模型(如GPT系列)
语言模型是大模型领域的重要组成部分,其中GPT系列模型是最具代表性的。GPT系列由OpenAI开发,从GPT-1到GPT-3,参数量从1.17亿增加到1750亿,展现了显著的规模增长和性能提升。
GPT-1:作为系列的起点,GPT-1拥有1.17亿参数,主要展示了生成式预训练的可能性。尽管规模较小,但它在文本生成和理解任务上的表现已经超越了当时的其他模型。
GPT-2:参数量达到15亿,GPT-2在无监督学习的基础上,探索了多任务学习框架,通过增加模型参数规模提升性能,同时尝试减少对特定任务微调的依赖。
GPT-3:拥有1750亿参数的GPT-3是迄今为止最大规模的语言模型之一。它不仅在文本生成任务上表现出色,还在问答、翻译等多种语言任务上展现了强大的能力。GPT-3的“上下文学习”能力允许它通过少样本学习解决各种任务,消除了对新任务进行微调的需求。
2.视觉模型(如DALL-E)
视觉模型在大模型领域同样占据重要地位,DALL-E模型由OpenAI开发,是一个多模态预训练模型,能够根据文本描述生成相应的图像。
DALL-E:DALL-E模型通过在2.5亿图像-文本对上训练,展现了将文本描述转换为图像的能力。它包括两个阶段:首先使用离散变分自编码器(dVAE)生成图像的token,然后通过基于Transformer的生成模型进行图像生成。
DALL-E 2:作为DALL-E的升级版,DALL-E 2在图像生成的质量和多样性上进行了显著提升,能够生成更逼真、更多样化的图像。
DALL-E 3:最新的DALL-E 3在理解细微差别和细节方面明显优于前两个版本,能够更精确地将用户的想法转化为图像。它基于ChatGPT开发,可以与ChatGPT结合使用,通过自然语言交互生成图像。
3.多模态模型(如PaLM)
多模态模型结合了视觉、文本等多种模态的信息,PaLM模型是Google推出的大语言模型系列,以其庞大的规模和出色的性能引起了广泛关注。
PaLM:PaLM模型拥有5400亿参数,是多模态模型的代表之一。它在各种复杂任务中展现出了卓越的性能,特别是在需要多步推理的问题上。PaLM在多语言任务上也表现出色,能够处理100多种语言的翻译任务。
PaLM-540B:作为PaLM系列中的一个成员,PaLM-540B在理解和分析图像方面的能力尤为突出,能够理解和执行基于图像内容的复杂指令。
如何系统的去学习大模型LLM ?
大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。
事实上,抢你饭碗的不是AI,而是会利用AI的人。
继科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?
与其焦虑……
不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!
但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。
针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等
一、LLM大模型经典书籍
AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

二、640套LLM大模型报告合集
这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)

三、LLM大模型系列视频教程

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等
😝有需要的小伙伴,可以 下方小卡片领取🆓↓↓↓
更多推荐


所有评论(0)