人工智能概述
1 一句话介绍
人工智能指利用计算机或机器模拟实现人脑感知、认知、学习、推理等思维能力。
2 基本概念
- 机器学习(Machine Learning):实现人工智能的一种方式(就目前而言几乎是唯一的一种可行方式),即将数据输入计算机执行特定算法/模型模拟人脑功能。
- 深度学习(Deep Learning):机器学习的一个分支,即采用深层神经网络模型模拟人脑。
- 迁移学习(Transfer Learning):机器学习的一个分支,研究如何将模型在某个领域已学习到的能力通过合理转移去解决另一个新领域的问题,从而降低模型训练成本。其关键是让模型发现已学领域和新领域的相关性和差异性。例如模型能识别猫,如何快速让模型能识别狗。
- Token:模型可以理解和生成的最小意义单位。可以表示一个词语、单词,甚至只表示一个字符。
- 注意力机制(Attention):即指模型能够重点关注输入信息的一部分。
- 大模型(LLM):全称为大语言模型(Large Language Model),即参数量非常大(通常为1B以上)的深度学习模型。
3 机器学习基础
3.1 三大学派
- 符号主义:基于数理逻辑符号表达智能。白盒方式,表达过程可解释。
- 连接主义:模拟人脑神经元连接表达智能。黑盒方式,表达过程难以解释。
- 行为主义:基于感知-行为的控制论表达智能。黑盒方式,表达过程难以解释。
3.2 模型分类
机器学习模型可以简单看作一个映射xàf(x)。训练的过程即求解函数参数的过程,推理的过程即输入自变量求函数值的过程。主流机器学习算法可以分为如下两类:
- 统计机器学习:属于符号主义学派,函数参数是可解释的。例如SVM。
- 人工神经网络:属于连接主义学派,函数参数难解释。例如NLP、CNN。
- 强化学习:属于行为主义学派,函数参数难解释。
3.3 学习方式分类
- 监督学习:用带标记的数据集进行模型训练,训练过程中能够根据标记值,逐步调整误差,输出最接近的值。例如分类、回归模型都属于监督学习。
- 非监督学习:训练数据集不带标记,由模型自行学习数据潜在规律和结构。例如聚类、关联、降维、生成式AI。
- 半监督学习:训练数据集少部分有标记,大部分没有标记,充分利用仅有标记的信息。例如标签传播算法。
- 强化学习:对模型输出结果进行正向和负向评估,使模型获得最大奖励积累,以便在后续特定环境下做出最佳决策。主要包括Agent(智能体)、Environment(环境)、State(状态)、Action(动作)、Policy(策略)以及奖励(Reward)等要素。
3.4 模型学习要素
任何模型都包含如下五个逻辑要素,以抛硬币的模型为例说明:
- 学习对象:即输入的训练数据。例如硬币正反面出现的序列。
- 对象假设:即训练数据之间的关系。例如每次丢硬币互不干扰,相互独立。
- 模型假设:即函数表达式。例如出现正面概率f(x=“正面”)=P0。
- 学习算法:即求解函数参数的算法。求解的问题通常最终转化为凸优化问题,一般采用最速梯度下降算法。
- 学习策略:即判定学习算法终止条件,也即损失函数达到指定阈值。
3.5 人工智能四要素
通常将应用场景、算力、模型(算法)、数据称为人工智能四要素。
未来数据将成为关键。数据质量将决定模型性能的上限,模型的选型合适只是更加逼近上限而已。
数据质量取决于特征以及样本集质量。特征选择合适,对模型性能影响权重更大;样本集质量取决于遍历空间的程度以及采样密度。
4 大模型(LLM)
4.1 基础原理
判别式AI学习样本数据的条件概率分布,即一个样本归属于特定类别的概率;而生成式AI则学习样本数据的联合概率分布,即样本中多个变量组成向量的概率分布。模型的推理过程则是自回归预测过程,即根据训练学习到的联合概率分布,逐步根据当前Token序列,计算出下一个Token的条件概率分布,并采样。例如序列x1:L的联合概率分布计算如下:
每一步Token都是从条件概率分布中采样而得,因此大模型每次生成的结果往往不一样。
4.2 常见神经网络模型
- 全连接神经网络(FCN):层间神经元彼此全互联。特点是计算量大,隐藏层能很好地分离数据特征,但易过拟合。
每层计算由激活函数f(x)引入非线性,即Xout=f(WXin)。
- 卷积神经网络(CNN):包含卷积运算的神经网络。特点是能提取图片局部特征、卷积核能共享权重,降低计算量。
卷积操作本质是加权求和,卷积核就是共享的权重,如下所示:
- 循环神经网络(RNN):一个序列中当前输出受前面输出与当前输入的共同影响。特点是能够对前文信息进行记忆,适合处理序列数据,如自然语言文本、语音。
RNN网络参数U、V、W对于每个时间步而言都是共享的,且每步计算依赖前一步输出,因此不能进行并行计算。
4.3 Transformer
4.3.1 结构剖析
Transformer总体架构分为Encoder和Decoder两个部分。Encoder和Decoder的结构差距不大。均可分为输入区、自注意力区和前馈神经网络区。如今大部分大模型是Decoder-Only架构的,即将Decoder中连接Encoder的Multi-Head Attention层去除。
自注意力区和前馈神经网络区均为残差网络,负责透传信息,防止梯度消失,降低训练难度。
每层均进行LayerNorm归一化,用于稳定计算。LayerNorm即在单个训练样本内所有维度上进行归一化,BatchNorm即在一个batch内所有样本的某个维度上进行归一化,因此BatchNorm对BatchSize比较敏感。在NLP领域,每个样本是一串Token序列,实际上样本间相同位置上的Token关联性较小,样本内Token间关联性较大,因此样本内Token词向量做归一化更好。
- 输入区
包含Embedding和Positional Encoding两层。
Embedding层负责将Token转化成词向量。本质就是将Token映射到高维向量空间中进行表征。
Positional Encoding层负责生成位置向量。位置向量与模型解耦,取值只跟词向量维度相关。位置向量表示式如下:
位置向量与词向量同维,因而可以直接相加。
- 自注意力区(Self-Attention)
多头自注意力区(Multi-Head Attention)层负责信息汇聚,挖掘出Token之间的关联性,重新分配信息。自注意力用QKV表示,多头意味着多套相互独立的QKV计算自注意力值。自注意力Attention计算公式如下:
Q(Query)可以简单理解为需要关注的Token,K(Key)即与之关联的其他Token。Q点乘K反应Token之间的相似度,再乘以每个Token对应的信息量V(Value),即获得最终的Attention。Attention越大表示Token之间关联性越大。
自注意力的“自”体现在查询矩阵Q来自于模型输入本身,即模型读到输入信息后,自行决定输入信息中最需要关注的部分。
- 前馈神经网络区(FFN)
一般为全连接前馈神经网络,负责特征提取与信息的重构表达。
4.3.2 参数计算
Transformer模型参数量集中在Attention层和FFN层。Encoder约12 d2model,Decoder约16 d2model个参数。
注:dmodel即词向量维度,dff即前馈网络层(全连接隐藏层维度),一般4*dmodel=dff。
4.4 大模型三大定律
人们从实验中总结出大模型如下三个经验规律:
- Scaling law(尺度定律):随着模型参数量指数级增长,模型的性能近乎线性增加。
- Chinchilla(龙猫定律):大模型训练数据量达到参数量20倍以上训练效果才会饱和。
- Emergent Abilities(涌现定律):大模型训练计算量达到一定程度后(实验归纳10^22次方浮点运算),问题处理性能呈现快速增长的现象。(根据统计学采样定理,采样频率达到临界值,数字世界可以真实表现模拟世界)。
4.5 大模型训练
4.5.1 分词(Tokenizer)
输入的自然语言文本序列需要切分成Token序列,通常有两种方式:
- WordPiece:分词时直接从词表中查找Token及其对应的ID,不存在时则标记成UNK。缺点是需要根据需要扩充词表,否则容易出现OOV(Out of Vocabulary)。
- BPE:将文本序列直接按照unicode编码作为最小粒度进行切分。缺点是切分粒度过细,可能将固定的词汇切分开来,造成不必要的模型学习成本。
4.5.2 预训练(Pre-training)
预训练阶段旨在获得语言内部基本规律。此阶段为无监督学习,即无需人工标记数据label。但是,此阶段训练方式是自回归,即label来自于输入token序列的某个token,需要根据前面所有token预测下一个token。因此,Transformer Decoder有一个Masked Multi-Head Attention层,即将需要预测的token遮住。Transformer输出的仍然是下一个Token的概率,因此其损失函数采用交叉熵。
Transformer在预训练阶段之所以能够并行化,主要基于如下两点:
- teacher force:每一次训练时,不依赖上一次预测的输出,而是强制使用样本的Token。这样就将每次训练解耦,实现并行处理。
- multi-head attention:每头注意力中的QKV计算是独立的,互不依赖,可并行计算。
4.5.3 微调(Fine-tuning)
微调旨在让大模型适应特定下游任务。此阶段是有监督学习,训练样本是经过人工标注的精细语料,数据具备一致性,相比预训练阶段非常样本量少。此外微调阶段容易使模型丧失通用能力,因此需要补充更多通用数据用于抗遗忘。
模型参数调整
一般而言,微调阶段不会调整预训练模型全部参数,全参微调资源消耗太大。可通过增加模型参数来进行微调。
- Adapter-Tuning:即在预训练模型的Transformer中加入Adapter层(如MLP)。微调阶段,仅训练Adapter层参数(约占总参数量5%),其他参数冻结。
- Prefix-Tuning:即在预训练模型的输入层(embedding层)前面加上可训练的向量,相当于输入Token序列前加了虚拟的Token。
- LoRA:基于大模型的内在低秩特性,增加旁路矩阵来模拟全参数微调。冻结预训练模型参数,旁路增加可训练的降维矩阵A和升维矩阵B。 BA与预训练模型同维度。
Adapter-Tuning、Prefix-Tuning、LoRA三种微调方法本质都是在冻结预训练模型基础上,新增部分参数可调的网络结构,以模拟全参数调整。UNIPELT将三种方式汇总在一起:
训练样本调整
微调阶段需要精细的标注预料,然而人工标注的成本较高。零样本学习(ZSL,zero-shot learning)和小样本学习(FSL,few-shot learning)旨在解决该问题,二者可以看作是迁移学习的范畴。ZSL指在新的下游任务中没有样本可供训练,FSL则指新的下游任务中只有少量的训练样本。 微调阶段的少量训练样本通常需要按照(指令、输出)的数据模板精心组织而成。
- 指令微调(IFT,instruction tuning):旨在使模型能够理解人类的指令,按照人类的方式回答问题。训练样本被组织成(指令、输入[非必需]、输出),如下所示:
- 思维链(CoT,chain of thought):旨在教会模型对复杂问题进行逐步推理,分而治之,获得最终结果。CoT训练是指令微调的一种特殊形式,主要差别在于样本中输出内容详细地说明了问题处理步骤。例如:
4.5.4 人类反馈强化学习(Reinforcement Learning from Human Feedback)
人类反馈强化学习旨在使大模型能更好地给出符合人类偏好的答案。
人类专家对大模型的评价(通常为文本序列)会输入给奖励模型,由奖励模型转化为标量奖励信号(Award),这是因为让所有人类对统一标量奖励含义达成一致比较困难。大模型(Agent)在面对训练环境(Environment)中的文本输入时,会根据奖励信号逐步调整策略,并采用PPO(Proximal Policy Optimization)算法控制策略调整的幅度,保证训练稳定。
4.6 提示工程
4.6.1 提示工程定义
提示工程(Prompt Engineering)是帮助用户了解大模型的优势以及局限性,设计合理的提示词,使得模型产出更高质量的答复。
提示工程又称上下文学习(ICL,In-Context Learning),在输入文本中嵌入用户指定的范式,可以引导模型按照范式回答问题。实际ICL并未进行参数调整,而是模型隐式地学习了范式。
单独输入“远:?”:
4.6.2 提示词四要素
- 上下文:包含外部、额外的信息,引导模型更好地响应。例如假设模型的角色背景。
- 指令:明确告诉模型需要执行的任务。
- 输入:输入的内容。
- 输出:指定输出的类型或格式。
如上要素并非都是必须的。
4.6.3 通用提示技巧
- 从简单开始:如果任务比较复杂,那么拆分成几个子任务让模型逐步执行。
- 明确指令:输入中的指令要明确,例如:分类、总结、排序、翻译、提取等。
- 具体量化:四要素的描述要清晰具体。例如要求输出一句话而非几句话。
- 肯定要求:输入内容尽量明确要求模型“做什么”而非“不做什么”。
- 链式思考:即思维链CoT,即教模型一步一步推理出结果。
4.7 大模型趋势
- 多模态模型:即大模型能同时处理多种形态的数据,如文本、语音、图像、视频等。包括输入、输出属于不同模态,输入为多模态,输出为多模态三种场景。
- 混合专家模型(MoE):即将模型中原Transformer的FFN层替换成MoE层(包含稀疏 MoE 和门控网络两个部分,稀疏MoE由多个专家子网络构成,可以是FFN或者更复杂的网络),相当于整个模型分裂成了多个专家模型(实际上只有MoE层中子网络的参数是独立的,其他参数都是共享的)。
之所以采用这种方式,主要是因为神经元稀疏性激活。FFN层参数量非常大(参见4.3.2章节),但是实际推理过程中被激活的神经元是少数的,因此将FFN层分解成几个专家,每个专家相当于原FFN的子集,这样通过门控网络将特定任务分配给少数专家进行激活预测,计算量大大减小。
5 参考
- https://xie.infoq.cn/article/d9823345c64cbff0fffd350df
- https://github.com/datawhalechina/so-large-lm/wiki/%E7%AC%AC%E4%B8%80%E7%AB%A0%EF%BC%9A%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%9F%BA%E7%A1%80
- https://zhuanlan.zhihu.com/p/106644634
- https://zhuanlan.zhihu.com/p/612036724
- https://zhuanlan.zhihu.com/p/621438653
- https://mp.weixin.qq.com/s?__biz=MzI4MDYzNzg4Mw==&mid=2247556386&idx=3&sn=19c0a83fcebe3502734d4745981b065c&chksm=ebb725f6dcc0ace0e52a187c148215704a12513579e5beeba517a34139e420e4a313cb136949&scene=27
- https://zhuanlan.zhihu.com/p/636270877
- https://www.zhihu.com/tardis/zm/art/629087587?source_id=1003
- https://www.zhihu.com/tardis/zm/art/623543497?source_id=1003
- https://arxiv.org/pdf/1902.00751.pdf
- https://aclanthology.org/2022.acl-long.433.pdf
- https://huggingface.co/datasets/c-s-ale/alpaca-gpt4-data-zh(指令微调训练数据集)
- https://huggingface.co/datasets/QingyiSi/Alpaca-CoT/blob/main/Auto-CoT/Auto-CoT.json(思维链训练数据集)
- https://www.promptingguide.ai/zh/introduction
- https://zhuanlan.zhihu.com/p/255111887
- https://www.ibm.com/cn-zh/topics/rlhf
- https://xie.infoq.cn/article/3d1edc1049f34d0f797231c2c
- https://zhuanlan.zhihu.com/p/687776238 (grok)
- https://huggingface.co/blog/zh/moe
- https://m.huxiu.com/article/2962514.html
- 点赞
- 收藏
- 关注作者
评论(0)