






















语言模型(Language Model,LM) 目标就是建模自然语言的概率分布。
假设词汇表 \(\Bbb{V}\) 上的语言模型,由函数 \(P(w_1, w_2…w_m)\) 表示,可以构建为词序列\(w_1,w_2…w_m\) 的概率分布,表示词序列做作为一个句子出现的可能性大小,即\(P(w_1,w_2…w_m)=P(w_1)P(w_2|w_1)…P(w_m|w_1w_2…w_m-1) =\prod^m_{i=1}P(w_1|w_1w_2w_i-1)\)。
上面的公式我们可以得知,第 \(i\) 个单词出现的概率与前面 \(i-1\) 个单词相关;如果按照《现代汉语辞掉 (第七版)》包含7万个单词,句子长度20个词(\(m=20\))计算,模型参数量达到\(7.9792 \times 10^{96}\)的天文数字。
为了简化简化模型,提出了n元语法 或 n元文法 (n-gram):在上述建模的基础上,进一步假设任一单词 \(w_i\) 出现的概率只与过去 \(n-1\) 个词相关。即:
$$ P(w_i|w_1w_2…w_{i-1}) = P(w_i|w_{i-(n-1)}w_{i-(n-2)}…w_{i-1})=P(w_i|w^{i-1}_{i-n+1}) $$
n-gram 将第 \(i\) 个单词的相关性从\(i-1\) 个单词减少到了\(n-1\) 个单词,同时也能缓解句子概率为0的问题但无法解决。为了从根本上解决出现零概率的问题,提出了平滑技术 (Smoothing),对所有可能出现的字符串都分配一个非零的概率值。平滑处理最终会提高低概率、降低高概率,以此使整体的概率分布趋于均匀。这种使用n-gram+smoothing的方法被称为统计语言模型 (Statistical Language models,SLM)。
除了统计语言模型SLM这种方式外,基于 分布式表示和神经网络的语言模型 逐渐成为了主流。
首先会将一段文本通过 独热编码(one-hot) 映射为一个低维稠密的实数想来那个,称为词向量(Word Embedding)。基于词向量,再集合循环神经网络、卷积神经网络、端到端记忆网络等神经网络方法构建语言模型,这类方法通常称为神经语言模型 (Neural Language Models,NLM)。
直到以ELMo为代表的动态词向量模型的出现,才开启了语言模型预训练的大门。将预训练模型应用于下游任务时,不需要太多的任务细节,不需要设定特定的神经网络结构,只需要”微调”预训练模型,使用具体的标注数据在预训练模型上进行监督训练即可显著提升性能。这种方法被称为预训练语言模型(Pre-trained Language Models,PLM)。
在预训练语言模型的基础上,又提出了提示词(Prompt)、模型即服务范式(Maas)、指令微调(Instruction Tuning)等方法。
关于模型的定量分析,Kaplan 等人在文献中提出了缩放法则(Scaling Laws),指出模型的性能依赖于模型的规模,包括:参数数量、数据集大小 和 计算量,模型的效果会随着三者的指数增加而线性提高。
对大模型的发展历程大体可以分为三个阶段:

大规模语言模型的构造分为预训练、有监督微调、奖励建模和强化学习4个流程

Transformer 模型是谷歌在2017年提出的应用于机器翻译的神经网络模型结构,目标是从源语言转换到目标语言,通过注意力机制完成对源语言序列和目标语言序列全局依赖的建模。
当前几乎全部大于要模型都是基于Transformer结构。
Transformer的完成结构由若干Transformer块 (Block) 组成,每个块的输入对应一个向量序列\({x_i}^t_{i=1}\),输出对应一个等长的向量序列\({y_i}^t_{i=1}\),即文本序列中的一个单词的向量表示。
每个Block块的内部包含了编码器(Encoder)和解码器(Decoder),编码器和解码器中均包含了以下4个部分

下面按流程依次简单介绍各个模块的作用
首先进入的是 嵌入表示层,对于输入的文本序列,嵌入层(Input Embedding) 将每个单词转换为其相对应的向量表示。Transformer模型会在词嵌入中加入位置编码(Positional Encoding),用于表示模型单词之间的位置关系。为了得到不同位置的编码,Transformer 模型使用不同频率的正余弦函数,其中 \(pos\) 表示单词所在的位置,\(2i\) 和 \(2i+1\) 表示位置编码向量中的对应维度,\(d\) 表示对应位置编码的总维度:
$$ PE(pos, 2i) = sin(\frac{pos}{1000^{2i/d}}) \space\space\space\space\space\space PE(pos,2i+1)=cos(\frac{pos}{1000^{2i/d}}) $$
得到了词嵌入和位置编码后,我们会进入**自注意力(Self Attention)**模块。他是Transformer模型中的基本操作,在源语言的编码和目标语言的生成中频繁地被使用以建模源语言、目标语言中任意两个单词之间的依赖关系。例如:定义一个由 单词语义嵌入和位置编码叠加 得到的输入表示\({x_i \in \R^d}^t_{i=1}\),通过三个三个线性变换 \(W^Q \in \R^{d\times d_q}\)、\(W^K \in \R^{d\times d_k}\)、\(W^V \in \R^{d\times d_v}\),可以得到多注意力机制中需要的三个元素:查询 \(q_i\) (Query)、键 \(k_i\) (Key)、值 \(v_i\) (Value),这三个权重反映了在编码当前单词的表示时,针对上下文不通部分所需要的关注程度。序列中不同单词的\(q、k、v\) 向量又可以拼接成对应矩阵\(Q \in \R^{L\times d_q}、K \in \R^{L^D_K}、V \in \R^{d\times d_v}\),L表示序列程度。通过这三个矩阵我们最终可以得到\(Z \in \R^{L*d_v}\) ,它就是自注意力操作的输出。具体的公式如下,其中\(\sqrt{d}\) 是缩放因子:
$$ Z = Attention(Q,K,V)=Softmax(\frac{QK^T}{\sqrt{d}})V $$
为了进一步增强自注意力机制聚合上下文信息的能力,提出了 多头注意力(Multi-head Attention) 机制,换言之,上下文中的每一个单词表示,经过多组线性\({W^Q_jW^K_jW^V_j}^N_{j=1}\) 映射到不同的表示子空间,并在不同的子空间中分别计算并得到不同的上下文相关的单词序列表示\({Z_j}^N_{j=1}\),最终可以综合得到不同子空间中的上下文表示。
再之后我们会来到残差连接(Add)和层归一化(Norm),这一步主要是为了提升训练的稳定性、缓解不稳定和收敛速度慢等问题。具体来说,残差连接主要是使用一条直连通道将对应子层的输入连接到输出上去,从而避免由于网络过深导致的梯度消失问题;层归一化用于将数据平移缩放到均值为0、方差为1的标准分布。
前馈层(Position-wise FFN) 接受了来自自注意力子层的输出,并通过一个带有 \(Relu\) 激活函数的两层全连接网络对输入进行更加复杂的非线性变换。公式如下,其中\(W_1、b_1、W_2、b_2\) 均是表示前馈子层的参数。前馈子层隐状态的维度一般比自主力层要大。
$$ FFN(x) = Relu(xW_1+b_1)W_2 + b_2 $$
编码器主要是由上面这几部分构成的,解码器端会更复杂一些。解码器的每个 Transformer 快的第一个自注意力子层额外增加了掩码多头注意力(Masked Multi-Head Attention)部分。主要原因是,编码器的源语言序列信息是已知的,可以处理上下文语义,但是目的语言序列信息是未知的,对于每一个单词的生成,仅能当前单词之前的语言序列是已知的,即只有上文没有下文。所以额外增加的掩码是用来掩盖后续的文本信息,以防模型在训练阶段看到后续文本序列。
和编码器多头注意力不同的是,解码器的多头注意力(Multi-Head Attention)模块使用的是交叉注意力(Cross-attention)方法:同时接受编码器的输出和掩码注意力层的输出,即在每个时间\(t\),根据编码器端输出的源语言文本表示,以及前\(t-1\)个时刻生成的目标语言文本,以 自回归 的方式生成当前时刻的目标语言单词。
OpenAI 在2018年提出了生成式的预训练语言模型(Generative Pre-Training, GPT) 是典型的生成式预训练语言模型之一。模型结构是由多层 Transformer 组成的单向语言模型,主要分为输入层、编码层和输出层三部分。
预训练语言模型利用丰富的训练语料、自监督的预训练任务和Transformer等深度神经网络结构,使模型具备了通用且强大的自然语言表示能力;应用于下游任务时,只需要微调预训练模型,用具体任务的标注数据进行监督训练,就可以取得显著的性能提升

单向意味着模型只能从左到右或从右到左对文本序列建模,采用的Transformer 结构和解码策略保证了输入文本每个位置只能依赖于过去时刻的信息。
给定文本序列\(w = w_1w_2…w_n\),GPT先在输入层将其映射为稠密向量,其中\(v_i^t\)是词\(w_i\)的词向量,\(v_i^p\)是词\(w_i\)的位置向量
$$ v_i = v_i^t + v_i^p $$
将\(v=v_1v_2…v_n\)送变模型编码层,经过L个Transformer模块后,每一层的每个表示向量都会包含之前位置表示向量的信息,使得每个表示向量都具备丰富的上下文信息,最终得到每个单词层次化的组合式表示。GPT模型的输出层只基于最后一层的表示 \(h^{(L)}\) ,预测每个位置上的条件概率,计算过程可以表示为,其中\(W^e\)是词向量矩阵
$$ P(w_i|w_1,w_2,…,w_{i-1})=Softmax(W^eh_i^{(L)} + b^{out}) $$
单向语言模型是按照阅读顺序输入文本序列\(w\),用常规语言模型目标优化\(w\)的最大似然估计,使它能根据输入历史序列对当前词做出准确预测,公式如下,其中\(\theta\)代表模型参数
$$ L^{pt}(w) = -\sum_{i=1}^nlogP(w_i|w_1w_2…w_{i-1};\theta) $$
通过上面的无监督预训练,GPT模型具备了一定的通用语义表示能力,下游任务微调(Downstream Task Fine-tuning) 是在这个基础上,根据下游任务的特性进行适配。下游任务通常需要有标注数据集进行训练,数据集合使用 \(\mathbb{D}\) 表示,每个样例由输入长度为\(n\)的文本序列\(x=x_1x_2…x_n\)和对应的标签 \(y\) 构成,对整个数据集精调后得到:
$$ L^{FT}(\mathbb{D})=-\sum_{(x, u)}logP(y|x_1x_2…x_n) $$
需要注意的一点事,下游任务微调很容易使得模型遗忘预训练阶段所学习到的通用语义知识表示,从而损失模型的通用性和泛化能力,造成灾难性遗忘(Catastrophic Forgetting)。实际使用中,通常采取如下公式进行微调,其中\(\lambda\)的取值是\([0,1]\),用于调节预训练任务损失占比:
$$ L =L^{FT}(\mathbb{D}) + \lambda L^{PT}(\mathbb{D}) $$
目前大多数的大语言模型都采用了类似GPT的架构,基于Transformer架构构建的仅由解码器组成的网络结构,采用自回归的方式构建语言模型。但是在位置编码、层归一化位置以及激活函数等细节上各有不同。
以 LLaMA模型为例,与GPT架构不同的是采用了前置层归一化(Pre-normaliztion)并使用RMSNorm归一化函数(Normalizing Function)、激活函数更换为SwiGLU,并使用了旋转位置嵌入 (RoP),架构类似于GPT-2。

前置层归一化:为了使模型训练过程更加稳定,引入了前置归一化,即将归一化移动到多头自注意力层和全连接层之前,同时残差链接的位置仍在自注意力层和全连接层之后。
RMSNorm归一化函数:除了归一化的位置提前外, 层归一化中也采用了RMSNorm归一化函数,归一化函数可以提供更稳定的梯度。计算公式如下,其中 \(g_i\) 是缩放因子,\(b_i\) 是偏移参数
$$ RMS(a) = \sqrt{\frac{1}{n}\textstyle\sum^n_{i=1}a^2_i} \ \overset{-}{a}_i = \frac{a_i}{RMS(a)}g_i + b_i $$
SwiGLU 激活函数:在全连接层使用 SwiGLU激活函数替换ReLU函数,相较于 ReLU 函数在大部分评测中都有不少提升。在LLaMA中全连接层使用带有 SwiGLU 激活函数的FFN (Position-wise Feed-Forward Network) 的计算公式如下,其中 \(\sigma(x)\) 是 \(Sigmoid\) 函数:
$$ FNN_{SwiGLU}(x, W, V, W_2) = SwiGLU(x, W,V)W_2 $$ $$ SwiGLU(x,W,V)=Swish_{\beta}(xW) \otimes xV $$ $$ Switsh_\beta(x)=x\sigma (\beta x) $$
RoPE 旋转位置嵌入:在位置编码上,使用旋转位置嵌入 (Rotary Positional Embeddings,RoPE) 代替原有的绝对位置编码。RoPE 借助了 复数 的思想,通过绝对位置编码的方式实现相对位置编码,目标是 给\(q\),\(k\) 添加绝对位置信息,经过如下操作后 \(\overset{-}{q}_m\) 和 \(\overset{-}{k}_n\) 就带有位置 m 和 n 的绝对位置信息:
$$ \overset{-}{q}_m = f(q, m) \space\space\space\space\space\space \overset{-}{k}_n=f(k, n) $$
Transformer 结构中,自注意力机制的事件和存储复杂度与序列的长度呈平方的关系。因此占用了大两算力。一些研究从近似注意力触发,减少计算和内存需求,提出了稀疏今夕、低秩近似等方法;另一方面从计算加速设备本身出发,研究如何更好地利用硬件特性。
稀疏注意力机制
通过对训练好的 Transformer 模型中的注意力矩阵分析发现,很多通常是稀疏的,所以可以通过限制 Query-Key 对儿的数量来减少计算复杂度。这类方法称之为稀疏注意力 (Sparse Attention) 机制,稀疏化方法进一步可以分成两类:基于 位置信息 和 基于内容。
基于内容的稀疏注意力机制的基本类型主要有以下5种:

FlashAttention
GPU的显存分为全局内存(Global Memory)、本地内存(Local Memory)、共享内存(Shared Memory)、寄存器内存(Register Memory)、常量内存(Constant Memory)、纹理内存(Texture Memory)等六大类。全局内存、本地内存、共享内存和寄存器内存具有读写能力,具体区别如下:

基于GPU的内存结构,FlashAttention通过利用GPU硬件中的特殊设计,针对全局内存和共享存储的I/O速度不同,尽可能地避免从 HBM 中读取或写入注意力矩阵,尽可能高效地使用 SRAM 来加快计算速度,避免从全局内存中读取和写入矩阵。具体的实现方式是:在不访问整个输入的情况下计算 \(Softmax\) 函数,并向后传播中不能存储中间过程的注意力矩阵。
这里使用到了 多查询注意力 (Multi Query Attention)—— 在多查询注意力中不同的注意力头共享一个键值集合,每个头只单独保留一份查询参数。因此键值矩阵仅有一份,大幅较少了显存占用,同时将这份键值矩阵在SRAM上进行读写,如下图:

关于数据来源这里只做简单的描述,大数据模型训练所需的数据来源大体可以分为通用数据和专业数据两类。通用数据包括网页、图书、新闻、对话文本等,数据规模大且多样,提供语言建模和泛化能力;专业数据包括多语言、科学、代码等等,提供大模型的任务解决能力。下图给出一些典型大模型使用的数据分布:

典型的数据处理过程包含质量过滤、荣誉去除、隐私消除、词元切分等几个步骤

这里我们直接贴结论:
分布式训练 (Distributed Training) 是指将机器学习或深度学习模型训练任务分解成多个子任务,并在多个计算设备上并行地进行训练。
随着CPU的算力增加已经远低于摩尔定律 (Moore’s Law),虽说计算加速设备GPU、TPU等为机器学习模型提供了大量算力,但是其增长速度仍然没有突破每18个月翻倍的摩尔定律,为了满足机器学习模型的发展,只有通过分布式训练系统才可以匹配模型不断增长的算力需求。

总训练速度可以用如下公式简略估计:
$$ \footnotesize 总训练速度\propto 单设备计算速度 \times 计算设备总量 \times 多设备加速比 $$
并行策略大体可以分为三类
数据并行:对数据进行切片,并同一个模型复制到多个设备上,并行执行不同分片

模型并行:对模型进行划分,将模型中的算子分发到多个设备分别完成,Transformer结构主要有三种算子——嵌入式表示 (Embedding)、矩阵乘 (MatMul) 和交叉熵损失(Cross Entropy Loss)。针对这三种算子,又有两种划分方式:


分布式集群的瓶颈主要集中在两点:网络带宽和设备带宽。
针对网络带宽,通常采用胖树(Flat-Tree)的拖布结构,试图实现网络带宽的无收敛。此外,采用 InfiniBand (IB) 技术搭建高速网络,单个 IB 链路可提供 200Gb/s 或 400Gb/s 的带宽。NVIDIA的DGX服务器提供单机 1.6Tb (200Gb\(\times\)8) 网络带宽,HGN 服务器网络带宽可以达到3.2Tb (400Gb\(\times\)8) 带宽、
针对计算加速设备之间的通信带宽,PCIe 5.0 总线只能提供 128GB/s 的带宽,而NVIDIA H100 采用高带宽内存 (High-Bandwidth Memory, HBM) 可以提供 3350GB/s 的带宽。多个 H100 GPU 之间采用了NVLink 和 NVSwitch (NVLink交换机),使得任何 H100 GPU 之间可以达到 900GB/s 的双向通信速度。
在解决了带宽问题后,在由高速网络组成的高性能计算上构建分布式训练系统,常见的主要有两种常见架构:
参数服务器架构 (Parameter Server, PS):参数服务器提供充足内存和通信资源,训练服务器提供大量的计算资源。每个训练服务器都拥有完整模型,并根据分配到此服务的训练数据集切片进行计算,将得到的梯度推送到相应的参数服务器。参数服务器会等待多个训练服务器都完成梯度推送,然后开始计算平均梯度,并更新参数,之后通知训练服务器拉取最新参数,并开始下一轮训练迭代。

去中心化架构 (Decentralized Network):采用集合通信实现分布式训练系统,节点之间需要周期性地交换参数更新和梯度信息,可以减少通信瓶颈,提供系统的可拓展性。常用的通信原语包括 Broadcast、Scatter、Reduce、All-Reduce、Gather、All-Gather、Reduce-Scatter、All-to-All等。

有监督微调(Supervised Finetuning, SFT) 又称 指令微调 (Instruction Tuning),是指在已经训练好的语言模型的基础上,通过使用有标注的特定任务数据进行进一步微调,从而使得模型具备遵循指令的能力。
提示学习(Prompt-based Learning) 是直接利用在大量原始文本上进行预训练的语言模型,并通过定义一个新的提示函数,使得模型能够执行小样本甚至零样本学习,以适应仅有少量标注或没有标注数据的新场景。提示学习完成预测的过程可以分为三个阶段:
语境学习 (Incontext Learning, ICL) 也称上下文学习,指模型可以从上下文中的几个例子中学习:向模型输入特定任务的一些具体例子 (Demonstration) 以及要测试的样例,模型可以根据给定的示例续写出测试样例的答案。
由于大模型参数量十分庞大,当将其应用到下游任务时,微调全部参数需要想到高的算力。为了节省成本,研究人员提出了多种参数高效的微调方法,旨在仅训练少量参数使得模型适应到下游任务。具体的微调方法有Lora、P-tuning、Adapter等等。本节具体以 LoRA (Low-Rank Adaptation of Large Language Models) 为例。
研究认为参数更新量即使投影到较小的子空间中,也不会影响学习的有效性。因此,提出固定预训练模型参数不变,在原本权重矩阵旁路添加低秩矩阵的乘积作为可训练参数,用以模拟参数的变化量。
假设预训练权重位 \(W_0 \in \R^{d \times k}\),可训练参数为 \(\Delta W = BA\),其中\(B \in \R^{d\times r}\),\(A \in \R^{r*d}\)。初始化时,矩阵\(A\) 通过高斯函数初始化,矩阵 \(B\) 为零初始化,使得训练开始之前旁路对元模型不造成影响。对于权重的输入\(x\) ,LoRA 方式的计算流程如下
$$ h =W_0x + \Delta Wx = W_0x + BA_x $$

以 LLaMA 模型为例,其规定输入的文本的词元数量不得超过 2048 个,但这会限制模型对于长文本的理解和表达能力。为了更好地满足长文本需求,需要扩展语言模型的长文本建模能力,具体的方法有:
增加上下文窗口的微调:使用一个更长的上下文窗口来微调现有的预训练 Transformer,以适应长文本建模需求
位置编码:改进的位置编码,如 ALiBi、LeX等实现一定程度上的长度外推,使它们可以在短的上下文窗口进行训练,在长的上下文窗口进行推理。例如 ALiBi 算法,在 Softmax 的结果后添加一个静态的不可学习配置项
$$ Softmax(q_iK^T + m[-(i-1),…,-2,-1,0]) $$

插值法:将超出上下文窗口的位置编码通过插值法压缩到预训练的上下文窗口中。相比于前两种方法, 插值法可以在不改变原有的预训练模型情况下,直接扩展上下文窗口。关键思想是:直接缩小位置索引,使最大位置索引与预训练阶段的上下文窗口限制相匹配

强化学习 (Reinforcement Learning, RL) 研究的问题是智能体(Agent)与环境 (Environment)交互,目标是使智能体在复杂且不确定的环境中最大化奖励 (Reward)。
总的来说,强化学习的目标就是让智能体通过与环境的交互,学习到使其获得奖励最大化的策略。其中的重点是策略函数和价值函数。

假定在交互过程中,会获得很多观测\(o_i\);针对每一个观测,Agent会采取动作\(a_i\),也会得到一个奖励\(r_i\);定义 \(H_t\) 是观测、动作、奖励的序列: $$ H_t = o_1,a_1,r_1,…,o_t,a_t,r_t $$
Agent在采取当前行动的时候会依赖于之前得到的历史,因此可以把环境整体状态 \(S_t\) 看做历史函数,即 $$ S_t = f(H_t) $$
策略函数是决定了Agent的动作。策略函数会根据历史 \(S_t\) 来确定,可以分为以下两种函数表示:
价值函数是对未来奖励的预测,价值函数可以根据当前的状态和动作来判断,其中 \(\gamma\) 是折扣因子,公式如下:
$$ V_\pi(s) = \mathbb{E}_\pi\lbrack\sum^\infty_{k=1} \gamma^kr_{t+k+1}|s_t=s\rbrack $$
$$ Q_\pi(s,a)=\mathbb{E}_\pi\lbrack\sum^\infty_{k=0}\gamma^kr_{t+k+1}|s_t=s,a_t=a\rbrack $$
根据智能体Agent所学习的组件不同,可以归类为:
最后说说强化学习的重要作用,可以概括为以下几个方面:
研究者追求将人工智能与人类价值观对齐,提出了大语言模型输出的结果应该满足帮助性(Helpfulness)、真实性(Honesty)、*无害性(Harmless)*的3H原则,基于此提出了基于人类反馈的强化学习(Reinforcement Learning from Human Feedback,RLHF)。
RLHF 主要分为奖励模型训练和近端策略优化两个步骤。
受限于工作量和时间的限制,针对每次优化迭代,人类很难提供足够的反馈。更为有效的方法就是构建奖励模型 (Reward Model),模拟人类的评估过程。奖励模型主要分为以下2个步骤:
数据收集:以HH-RLHF数据集为例,是一种将强化学习与人类反馈结合的数据集,旨在提供复杂情境下符合人类只觉得有效表达。

模型训练:奖励模型通常也采用基于 Transformer 架构的预训练语言模型,移除最后一个非嵌入层,并在最终的 Transformer 层上叠加一个额外的线性层。无论何种文本,奖励模型都能为文本序列中的最后一个标记分配一个标量奖励值,样本质量越高奖励值越大。
近端策略优化(Proximal Policy Optimization, PPO) 是对强化学习中策略梯度方法的改进,提高了强化学习算法的可靠性和适用性。
近端策略优化主要涉及4个模型
近端策略优化的的实施流程如下:

为了增加大模型的推理能力,提出了两种方法:
思维链提示 (Chain-of-Thought Prompting,CoT):除了将问题输入给模型外,还将类似题目的解题思路和步骤输入模型,使得模型不仅输出最终结果,还输出中间步骤,从而提供模型的推理能力。
上交和Amazon的研究员提出了 Auto-Cot 方法,通过采样具有多样性的问题和生成推理链来构成范例,具体包括两个阶段:

由少至多提示 (Least-to-Most Prompting):试图利用大语言模型的规划能力,将复杂问题分解为一系列子问题并以此解决它们。

智能代理可以被视为独立个体,接收并处理外部信息,进而给出响应。智能代理主要由以下3个模块组成:
智能代理具体的工作流程如下

多模态主要是为了促进大语言模型和其他模态基础模型的交互融合。多模态的任务类型主要有以下几种
| 任务类型 | Task Type | 任务描述 |
|---|---|---|
| 图文检索 | Image-Text Retrieval | 包括图像到文本、文本到图像的检索 |
| 图像描述 | Image Captioning | 根据给定图像生成描述性文本 |
| 视觉回答 | Visual Question Answering | 回答与给定图像相关的问题 |
| 视觉推理 | Visual Reasoning | 根据给定图像进行逻辑推理 |
| 图像生成 | Image Generating | 根据本文描述生成图像 |
线面以 MiniGPT-4 介绍大语言模型的架构。具体主要有三个部分组成:

最后这部分是模型评估(Model Evaluation),也称为模型评价,目标是评估模型在魏建国的数据上的泛化能力和预测准确性。目前针对单一任务的自然语言处理算法,通常需要构造独立与训练数据的评估数据集。
评估标准和体系主要分为三类:
知识与能力的评估方法主要有两类:
HELM评测:以任务为核心的评估体系。
HELM基于是哪个基本设计原则:① 覆盖率 ② 最小化所选场景集合 ③优先选择与用户任务相应的场景
构造了42类评测场景,基于任务、领域、语言或语言变体,并进一步将领域细分为What(内容体裁)、Who(用户/人口群体)、When(时间段)。

AGIEval 评估:以人为核心的评估体系,选择与人类认知和问题解决密切相关的任务。
AGIEval基于两个基本设计原则:① 强调人类水平的认知任务 ② 与现实世界场景相关
基于此,AGIEval 融合了各种官方、公开和高标准的入学和资格考试,包括高等教育入学考试、法院数学考试、数学考试、律师资格考试和国家公务员考试等等
伦理与安全主要有:
安全伦理评测集合:包含8种常见的伦理与安全评估场景(侮辱性内容、不公平和歧视性问题、犯罪和非法活动、敏感话题、身体伤害、心理健康、隐私和财产、伦理和道德)和6种指令攻击方法 (目标劫持、提示泄露、角色扮演、不安全的指令主题、注入不易察觉的不安全内容、逆向暴露)。
针对偏见的评测集合,如CrowSPairs:涵盖9种类型偏见 (种族、性别、性取向、宗教、年龄、国际、残疾、外貌、社会经济地位)
安全伦理“红队”测试:训练可以产生大量安全伦理相关测试样本的大语言模型 (简称”红队”),通过“红队” (Red Teaming)大语言模型产生的测试样例,让目标大语言模型进行回答,最后利用分类器进行有害性判断。

垂直领域领域的评估主要包括三个方面:
分别针对分类任务、回归任务、语言模型、文本生成有不同的大模型评估指标,下面我们逐一介绍
分类任务是指将输入样本分为不同类别或标签的机器学习任务,包括分词、词性标注、情感分析等。分类任务的评估指标有 :

$$ Accuracy = \frac{TP + TN}{TP+FN+FP+TN} $$
$$ Precision = \frac{TP}{TP+FP} $$
$$ Recall = \frac{TP}{TP+FN} $$
$$ F1=\frac{2\times P\times R}{P + R} $$
回归任务 (Regression) 是根据输入样本预测一个连续的数值的机器学习任务。例如情感强度判断、作为评分、垃圾邮件识别等。
回归任务的评估指标有:
$$ MAE(y,\hat{y})=\frac{1}{n}\sum^n_{i=1}|y_i-\hat{y_i}| $$
$$ MAPE(y,\hat{y})=\frac{1}{n}\sum^n_{i=1}\frac{|y_i-\hat{y_i}|}{|y_i|} $$
$$ MSE(y, \hat{y})=\frac{1}{n}\sum^n_{i=1}||y_i-\hat{y_i}||^2_2 $$
$$ RMSE(y, \hat{y})=\sqrt{\frac{1}{n}\sum^n_{i=1}||y_i-\hat{y_i}||^2_2} $$
$$ MSLE(y,\hat{y})=\frac{1}{n}\sum^n_{i=1}(log(1+y_i)-log(1+\hat{y_i}))^2 $$
$$ MedAE(y,\hat{y})=median(|y_1-\hat{y_1}|,…,|y_i-\hat{y_i}|) $$
语言模型最直接的测评方法就是使用模型计算测试集的概率,或者利用交叉熵和困惑度等派生测度。对于一个平滑过的 \(P(w_i|w^{i-1}_{i-n+1})\) n元语言模型,可以用下列公式计算句子 \(P(s)\)的概率:
$$ P(s) = \prod^n_{i=1}P(w_i|w^{i-1}_{i-n+1}) $$
对于由句子\((s_1,s_2,…,s_n)\) 组成的测试集\(T\),基于 \(P(s)\) 我们可以计算一下三个指标:
$$ P(T) = \prod^n_{i=1}P(s_i) $$
$$ H_p(s)=-\frac{1}{W}log_2P(s) $$
$$ PP_s(s)=2^{H_p(s)} $$
交叉熵和困惑度越小,模型性能就越好。
文本生成任务包括机器翻译、摘要生成等。
在机器翻译任务中,通常使用 BLEU (Bilingual Evaluation Understudy) 用于评估生成的翻译句子和参考翻译句子之间的差异指标。BLEU的核心思想是衡量机器翻译所产生的译文和参考翻译之间的匹配度,原理是统计机器所产生的译文中的词汇有多少个出现在参考译文中,从某种意义上是一种精准度的衡量。
摘要生成任务中主要采取 ROUGE (Recall-Oriented Understudy for Gisting Evaluation) 评估方法,也称为面向召回率的要点评估。
有了评估体系和评估指标后,评估方法的目标是解决如何对大语言模型生成结果进行评估,具体的方法有:
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。