大模型概述
大模型属于Foundation Model(基础模型)[插图],是一种神经网络模型,具有参数量大、训练数据量大、计算能力要求高、泛化能力强、应用广泛等特点。与传统人工智能模型相比,大模型在参数规模上涵盖十亿级、百亿级、千亿级等,远远超过传统模型百万级、千万级的参数规模。不同于传统人工智能模型通过一定量的标注数据进行训练,一个性能良好的大模型通过海量数据及设计良好、内容多样的高质量标注语料库进行训练。
生成原理
大模型基于Transformer架构进行构建,由多层神经网络架构叠加而成,能够根据输入内容预测输出内容。
大模型的核心生成原理是将输入的语句以词向量的表征形式传递给神经网络,通过编码器/解码器(Encoder/Decoder)、位置编码和自注意力机制建立单词(或字)之间的联系。
关键技术
迁移学习
迁移学习是指利用在源领域中训练好的模型,将其知识和能力迁移到新的目标领域,以解决该领域的问题。通常,我们会首先在数据量大的领域训练模型,然后将其应用于数据量较小的领域。
零样本学习
使模型能够识别那些从未在训练集中出现过的数据类别,从而扩展模型的应用范围并增强其泛化能力。
模型输入:
你现在需要从这句话中抽取出城市名称和目的地信息。我想去上海的外滩,那里有壮观的夜景。
模型输出:上海,外滩
零样本学习存在使用限制,只有当用户的目标任务与模型已具备的能力相匹配时才能获得最优的零样本学习效果。
小样本学习
大模型通过使用很少的样本来进行学习。与零样本学习相似,小样本学习也经常与提示词配合使用。如果大模型无法理解用户提出的问题,或者用户需要大模型按照特定的格式进行输出时,用户可以使用小样本学习方法,在提示词中加入引导信息并给出一定的样例,指导大模型生成满足业务要求的输出结果。
持续学习
模型保留在旧任务上学习的知识并继续在新任务上进行训练。
多任务学习
对于复杂的任务,首先将其分解为多个独立的单任务并进行处理,然后对学习的结果进行组合。多任务学习(Multi-Task Learning)是一种联合学习方法[插图]。在这种方法中,模型通过对多个任务进行并行学习,共享表征信息,可以取得比训练单任务更好的表现。此时模型具有更好的泛化能力。
RLHF
强化学习(Reinforcement Learning,RL)是指通过不断与环境交互、试错,最终完成特定目的或者使得整体行动收益最大化的技术。强化学习不需要标注数据集,但是需要在每一步行动后得到环境给予的反馈,基于反馈不断调整训练对象的行为。
上下文学习
基于上下文学习,模型不根据下游任务来调整参数,而是连接下游任务的输入输出,以此作为提示词引导模型根据测试集的输入生成预测结果。该方法的实际效果大幅超越无监督学习。
思维链
思维链是一种离散式的提示学习方法,可以提高模型在复杂任务上的性能[插图]。为了指导大模型进行数学运算,研究人员给出少量人工编写的推理示例,并将步骤解释清晰,引导大模型对相似问题进行推理。此处将包含人工编写的详细推理过程的提示词称为思维链提示。思维链可以激发大模型的多步推理能力。这个过程类似于人类通过学习他人的思维方式来进行深度思考以解决复杂任务。
提示工程
提示词对于模型的生成结果和质量具有重要影响。一个好的提示词可以帮助模型更好地理解用户的意图和需求,并生成更加准确、有针对性的回复。所以,也可以将提示工程看作一种优化和改进人工智能模型性能的方法。前面提到的零样本提示和小样本提示都属于提示工程的范畴。这类方法并不涉及对模型参数的修改或重新训练,而是通过特殊设计的提示词引导模型生成更好的结果。
关键术语
Token
在大模型中,Token(词元)是文本中的最小单位,可以代表一个单词、一个标点符号、一个数字等。
Prompt
Prompt的形式不拘泥于自然语言,也可以是向量,不同于用户与模型沟通交互时传递的提示词。此处的Prompt将会给模型提供输入的上下文信息。在有监督或无监督训练过程中,Prompt可以帮助模型更好地理解输入内容并响应。
针对情感分类任务,可以在输入“I love this song”句子后增加提示词“This song is ___”,将情感分类任务转变为完形填空任务。模型将输出“Wonderful”“Moving”等具有情感偏好的形容词。这种方式可以引导模型输出更加正确的分类标签。
在研究过程中,一般会留下空位置以便模型填充答案。如果空位置在句子中间,一般称此类提示词为Cloze Prompt;如果空位置在句末,则称为Prefix Prompt。总之,通过设计合理的Prompt,经过无监督预训练的模型也可以处理多种下游任务。
Embedding
Embedding(词嵌入,也称词向量)是一种将高维度离散数据(如单词、短语或整个句子等文本数据)映射到低维度连续向量空间的技术。这种映射的目的是捕捉和表征数据的语义与句法特征,使得原本在高维度空间中表示的数据在低维度空间中能够更加有效地进行处理和分析。
大模型分类
模型结构划分
Decoder-Only、Encoder-Only和Decoder-Encoder
按模态划分
单模态、多模态(或称为跨模态)两类
单模态模型只能处理单一模态的任务,如纯语言、纯视觉或纯音频任务。
多模态/跨模态大模型是指能够执行一种或多种跨模态/多模态任务(如文本、图像、视频、语音等),具有很强大的跨模态理解和生成能力的模型。
按模态转化方式,可以将大模型分为文生图类(如CogView、Consistency Models)、图文互生类(如UniDiffuser)、图文匹配类(如BriVL)、文生音类(如Massively Multilingual Speech)、音生文类(如Whisper)和文音互生类(如AudioGPT)等。
按微调方式划分
未经过微调的Transformer大模型(如LLaMA)、经过指令微调的大模型(如WizardLM、Dolly2.0、Chinese-LLaMA-Alpaca)和基于人类反馈的强化学习训练的大模型(如StableVicuna、ChatYuan-large-v2、OpenAssistant)等。
大模型的开发流程
- 确定项目目标
不仅是整个开发流程的起点,而且为后续的数据准备、模型设计、模型训练等提供了明确的方向。在开发大模型前,应先明确模型需要解决的具体问题,只有这样,才能选择合适的模型和训练数据,进而设计出高效且符合需求的系统框架。
- 数据准备
大模型常用的数据类型包括监督数据、指令数据、对话数据、人类反馈数据等。
- 监督数据是指通过人工标注、众包(通过将数据分配给大量人员来完成标注的外包模式)标注等方式获得的数据。这类数据包含输入和对应的标签或监督信号,用于指导模型学习正确的输出。
- 指令数据包含指令与对应的回答。这类数据可指导模型学习相关知识,主要用于训练模型并调整其参数。
- 对话数据一般用于训练模型与人类交流沟通的能力,可分为单轮对话数据与多轮对话数据。
- 人类反馈数据是指在模型开发和训练过程中加入的人类标注、审查、验证或修正的数据。
- 模型设计
需要结合项目目标、数据特征以选择合适的模型。
小型开发团队或个人开发者在完成大多数的人工智能业务时已经无须从头构建模型,可以根据任务所需选择开源大模型如LLaMA、ChatGLM、Alpaca等。这种方式可以节省大量的模型设计时间,提升开发效率。
- 大模型的训练过程一般包含分词器训练、预训练和微调3个基本步骤。如果需要使模型的输出更加无害,可以借助RLHF、RLAIF等技术使模型与人类的价值观对齐。
- 模型部署
在模型部署中,一般需要进行模型量化、知识蒸馏、模型剪枝等操作,以实现模型压缩,最大限度地减少模型依赖的硬件资源。
- 模型应用
选择合适的开发框架和前端工具,使人工智能应用具有良好的易用性、美观性十分重要。