【课程笔记】华为 HCIA-AI Solution 人工智能04:人工智能业务流程概述
目录人工智能业务流程概述一、人工智能业务流程介绍1. 业务需求2. 数据准备3. 模型选择与设计4. 模型训练5. 模型评估6. 模型部署二、大模型业务流程介绍1. 预训练2. 有监督微调SFT3. RLHF4. 模型评估三、大模型使用与提示工程1. 如何使用大模型2. 提示工程及基础方法3. 高阶提示方法4. 提示框架目的是什么?要解决什么问题?(1) 数据集:互联网公开数据(开发者可以通过爬取
人工智能业务流程概述
目录
一、人工智能业务流程介绍
1. 业务需求
目的是什么?
要解决什么问题?
2. 数据准备
(1) 数据收集
(2) 数据清洗:清除一些错误和无用的信息,例如图像中重复的图片,与任务不相关的图片等;除去文本中的重复项、拼写错误项等;用户的重复记录或异常值等
(3) 特征工程(非必须):根据推荐系统的需求,可能需要从原始数据中提取有用的特征,例如用户的个人信息、物品的属性或者用户的行为模式等。特征工程的目的是创建出能够帮助模型更好理解数据的特征,从而提高推荐的准确性(计算机视觉和自然语言处理目前已不需要该操作)
(4) 数据标注:对于监督学习任务,需要为每个数据项标注正确的标签。这可以是手动标注,也可以使用自动化工具辅助标注。标注的质量和准确性对模型的训练效果至关重要
(5) 划分数据集:将清洗和标注后的数据划分为训练集、验证集和测试集。训练集用于训练模型,验证集用于调整模型参数和选择最佳模型,测试集用于评估模型的性能
(6) 预处理:对数据进行预处理,如归一化、编码等,以便于模型更好地处理
(7) 数据分析与评估:在建立数据集之后,要进行详细的数据分析,以确保数据集的质量、多样性和平衡性。此外,还需要评估数据集是否符合预期目标,并准备好为模型训练提供支持
3. 模型选择与设计
(1) 根据任务类型和数据特性选择合适的深度学习模型架构
①图像识别任务:卷积神经网络(CNN)如VGG、ResNet、YOLO等
②文本处理任务:循环神经网络(RNN)、长短时记忆网络(LSTM)、门控循环单元(GRU)、Transformer(BERT、GPT等)
③基于深度神经网络的推荐算法、基于注意力机制的推荐算法等
(2) 设计模型层次结构,包括输入层、隐藏层(卷积层、循环层、自注意力层等)、输出层及潜在的池化层、归一化层等辅助层
(3) 超参数选择:确定模型的超参数,如学习率、批量大小、正则化强度、层数、节点数、dropout比率等
4. 模型训练
(1) 前向传播:计算损失函数,即计算本次预测与真实标签的差异
(2) 反向传播:根据损失函数优化模型中的参数,使得下次预测尽可能接近真实值
5. 模型评估
(1) 分类任务指标
①准确率:衡量的是模型正确预测的样本数占总样本数的比例
②精确率:在分类任务中,模型预测正例的结果中,确实是正例的比例 -> 比如你筛选出100封“重要邮件”,其中只有80封是真的重要,精确率就是80%
③召回率:针对二分类或多分类问题,精确率是指模型预测为正例中真正为真例的比例,反映了模型预测为正例的能力 -> 比如只标10封为重要,精确率100%(没误杀),但召回率超低(漏了90封重要邮件)
④F1分数:是精确率和召回率的调和平均数,综合了精确率和召回率,当F1值越高,表明模型在这两者之间取得了较好的平衡
(2) 回归任务指标
①MSE:均方误差,它是预测值与真实值之差平方的平均值,用于衡量预测误差的大小
②RMSE:均分根误差,它是MSE的平方根,单位与原始观测值相同,更直观反映预测值与真实值之间的差距
③MAE:平均绝对误差,是预测值与真实值绝对差的平均值,相比MSE对异常值更鲁棒
6. 模型部署
(1) 模型转换为中间件格式
(2) 量化:FP32转换为FP16、INT8等
(3) 模型封装:将模型封装为API上线
二、大模型业务流程介绍
1. 预训练
(1) 数据集:互联网公开数据(开发者可以通过爬取互联网上的这些数据来构建其数据集)、专业数据库与机构发布的数据(这些数据集通常具有较高的质量和可靠性)、企业内部数据(可能包括企业的业务数据、用户行为数据、产品数据等)、用户生成内容(这些数据反映了用户的真实需求和偏好,有助于模型更好地理解和满足用户需求)
(2) 并行:
①数据并行:由于训练数据集太大,需要将数据集划分为N份,每一份分别装载到N个计算节点中,同时,每个计算节点持有一个完整的模型副本,分别基于每个计算节点中的数据去进行梯度求导。然后,在计算节点0上对每个节点中的梯度进行累加,最后,再将节点0聚合后的结果广播到其他节点 -> 把大数据集切成N份,分给N个设备同时训练,最后汇总梯度更新模型
②张量并行(按行切分权重、按列切分权重):张量并行训练是将一个张量沿特定维度分为N块,每个设备只持有整个张量的1/N,同时不影响计算图的正确性。这需要额外的通信来确保结果的正确性 -> 将超大模型的参数张量(如权重矩阵)按行或列切分到多个设备上,各设备算自己那部分,再拼回完整结果
③流水线并行:将神经网络的不同层分配到多个设备上,数据像“流水线”依次流过各层设备,实现超大模型训练
| 维度 | 数据并行 | 张量并行 | 流水线并行 |
|---|---|---|---|
| 切分对象 | 数据样本 | 单层权重张量 | 模型不同层 |
| 通信开销 | 梯度聚合(高) | 张量同步(中) | 层间数据传输(低) |
| 适用场景 | 数据量大,模型小 | 单层参数过大 | 模型深度极深 |
2. 有监督微调SFT
SFT有监督微调是指在源数据集上预训练一个神经网络模型,即源模型。然后创建一个新的神经网络模型,即目标模型。目标模型复制了源模型上除了输出层外的所有模型设计及其参数。这些模型参数包含了源数据集上学习到的知识,且这些知识适用于目标数据集。源模型的输出层与源数据集的标签紧密相关,因此在目标模型中不予采用
微调时,为目标模型添加一个输出大小为目标数据集类别个数的输出层,并随机初始化该层的模型参数。在目标数据集上训练目标模型时,将从头训练到输出层,其余层的参数都基于源模型的参数微调得到
总结:用现成的预训练模型(如BERT、GPT)作为起点,只调整少量参数(如输出层)来适应新任务,省时省力又高效
(1) Adapter Tuning:在预训练模型每层中插入用于下游任务的参数,在微调时将模型主体冻结,仅训练特定于任务的参数,减少训练时算力开销
总结:不碰原模型参数,插入轻量级Adapter层专门学习新任务,省时省力还省内存
(2) Prefix Tuning:在输入token之前构造一段任务相关的虚拟tokens作为Prefix,然后训练的时候只更新Prefix部分的参数,其他部分参数固定
总结:在输入前插入一串可学习的虚拟token(Prefix),冻结原模型参数,仅优化Prefix来适配不同任务
(3) Prompt Tuning:是Prefix Tuning的简化版本,只在输入层加入Prompt tokens,并不需要加入MLP进行调整来解决难训练的问题
总结:在输入文本前插入可学习的提示词(Prompt Tokens),通过调整这些词来激活模型的不同能力,模型本身参数完全冻结
(4) LoRA:冻结一个预训练模型的矩阵参数,并选择用A和B矩阵来替代,在下游任务时只更新A和B
总结:通过冻结预训练模型参数,新增两个低秩矩阵(A和B)来微调,大幅减少训练参数量
| 方法 | 改动部位 | 参数量 | 特点 |
|---|---|---|---|
| SFT | 整个模型(尤其输出层) | 100% | 效果器,但成本高易过拟合 |
| Adapter | 每层插入小模块 | 0.5%~5% | 模型主体冻结,多任务易管理 |
| Prefix/Prompt | 输入加可训练token | 0.01%~1% | 无需改模型,但效果微弱 |
| LoRA | 用低秩矩阵调整权重增量 | 0.1%~1% | 平衡效果与开销,当前最流行 |
SFT:全模型调整 -> 彻底改造(费钱但效果好) Adapter:加“外挂插件” -> 模块化升级
Prefix/Prompt:输入前加“密码” -> 暗号控制 LoRA:给参数穿“马甲” -> 轻量换装
3. RLHF
(1) 训练奖励模型RM:数据准备 -> 模型构建 -> 训练过程 -> 验证与调优
训练奖励模型是RLHF的“打分裁判”,RLHF再用这个裁判的评分指导模型优化
(2) 强化学习
①强化学习相较于监督学习更有可能考虑整体影响:监督学习针对单个词元进行反馈,其目标是模型针对给定输入后得到确切答案;强化学习则是针对整个输出结果进行反馈而不针对特定词元。反馈的颗粒度不同使得强化学习更适合大语言模型
②强化学习更容易解决幻觉问题:监督学习会促使模型给出一个结果,即使是在模型不包含或不知道答案的情况下;而强化学习则可以通过答案的奖励分数,迫使模型放弃低分值的答案
③强化学习可以更好地解决多轮对话奖励累计问题:多轮对话的交互情况及是否达到最终目标,很难有效通过监督学习方法构建,但是通过强化学习构建奖励函数,可以通过整个对话的连贯性及背景对当前模型输出的优劣做判断
(3) RLHF训练步骤:监督学习 -> 奖励模型 -> 强化学习

4. 模型评估
(1) 评测维度
①知识与能力:大语言模型具有丰富的知识和解决多种任务的能力,包括自然语言处理(文本分类、信息抽取等)、知识问答(阅读理解、开放领域问答等)、自然语言生成(文本摘要、文本创作等)、逻辑推理、代码生成等
②伦理与安全:模型在训练时基本遵循3H原则,帮助性(Helpfulness)、真实性(Honesty)、无害性(Harmless),其中无害性则是期待大模型的回答能和人类的价值观对齐
③垂直领域:主要包括复杂推理能力(例如知识推理、数学推理)、环境交互能力(例如用于家庭任务的智能体提根据语言指令生成动作)和特定领域问题解决能力(例如金融、法律、医疗等领域)
(2) 评测体系
①GLUE和SperGLUE:这两个基准测试皆在评估模型在理解自然语言的能力。它们包含多种任务,如文本分类、推理、问答和情感分析。GLUE和SuperGLUE基准测试模拟了真实世界的语言处理场景,并成为了衡量模型自然语言理解能力的标准
②GSM8K和MMLU:这些基准测试覆盖了57个不同的学科,从而为大模型提供了一个全面的知识领域评估。GSM8K侧重于数学问题解决,而MMLU则是一个多项选择题集,测试大模型在多学科知识上的理解和推理能力
③BLUE-bench:专注于生物医学领域的基准测试,检验模型在医学问答和相关任务上的性能
④Adversarial Robustness Benchmarks:通过对抗样本来测试模型在面对恶意输入时的抵抗力,从而评估模型的安全性
⑤LLM Ethics Benchmarks:伦理基准测试评估大模型在生成内容时是否会违背社会公认的道德和伦理规范,例如在偏见、毒性和诚实性方面的表现
(3) 常见评测指标
①BLEU:常用于机器翻译任务。比较候选译文和参考译文里的n-gram的重合程度,重合程度越高就认为译文质量越高。unigram用于衡量单词翻译的准确性,高阶n-gram用于衡量句子翻译的流畅性
②NIST:在BLEU方法上的一种改进,引入了每个n-gram的信息量的概念,使一些出现少的重点的词权重给的大
③ROUGE:可以看做是BLEU的改进版,专注于召回率而非精度,查看有多少个参考译句中的n元词组出现在了输出之中。Rouge-N、Rouge-L分别是基于N-gram计算和基于最长公共子序列计算的分数
(4) 大模型评测的挑战:基础模型能力多样化难以评测、缺乏业界统一标准、缺乏针对企业应用的评测标准、模型更新迭代快
三、大模型使用与提示工程
1. 如何使用大模型
(1) 编写清洗、具体的指令
(2) 给模型思考的时间
2. 提示工程及基础方法
(1) 提示工程:通过结构化文本等方式来完善提示词,引导LLM输出期望结果
-> 通过优化输入指令(提示词),让模型输出更符合需求的结果
烂提示:“说说苹果” -> AI可能聊水果或公司
好提示:“用技术术语介绍苹果公司2023年产品” -> 精准输出科技新闻
(2) 零样本提示:不提供任务结果相关的示范,直接提示语言模型给出任务相关的问答
-> 直接给AI一个从没见过的任务指令,让它凭“常识”回答,无需任何示例或训练,测试模型是否具备某项能力
大语言模型有能力实现零样本提示,但也取决于任务的复杂度和已有的知识范围
(3) 少样本提示:从少量的示例样本中学习并处理任务
-> 在给AI的输入中提供少量示例(通常1-5个),帮助模型快速理解任务并生成类似输出,省去微调步骤
输入:"太阳→?"
示例:"地球→行星","牛奶→饮料"
输出:"恒星"
少样本提示可以作为一种技术,以启用上下文学习,在提示中提供演示及引导模型实现更好的性能。演示作为后续示例的条件,希望模型生成响应
3. 高阶提示方法
(1) 思维链提示:思维链(CoT)提示通过引入中间推理步骤实现了复杂的推理能力,它逐步展开问题并在每个回答中保留之前问题的背景信息,链式思考可以使对话变得内容丰富和连贯
思维链提示主要有两种类型:Few-shot-CoT,Zero-shot-CoT
(2) Few-shot-CoT:给模型展示少量的示例,每一个示例都包括了手写的(或模型生成的)高品质的推理过程
-> 结合了少样本提示和思维链CoT的方法,通过提供少量包含分步推理过程的示例,引导模型在解决复杂问题时生成逻辑推导步骤
问题:小明有5个苹果,吃了2个,又买了3个,现在有多少个?
推理:最初有5个,吃掉2个剩余5-2=3个;再买3个,最终有3+3=6个。
答案:6
(3) Zero-shot-CoT:在语言模型的每个回答前添加提示“Let's think step by step”(让模型逐步思考的提示,但现在多数大模型已经不需要添加此提示就能有很好效果),以引导模型进行多步思考
普通Zero-Shot::直接提问,模型直接输出答案(可能缺乏逻辑)
问题:2的5次方是多少? → 答案:32
Zero-Shot-CoT:通过指令强制模型展示推理过程,提升可信度
问题:2的5次方是多少?请逐步计算。
推理:2^5 = 2×2×2×2×2 = 32。
答案:32
4. 提示框架
| 维度 | 提示框架 | 提示方法(如Zero-Shot-CoT) |
|---|---|---|
| 定位 | 结构化的提示设计模板 | 实现特定目标的技术手段 |
| 灵活性 | 通用性强,可适配多种方法 | 需嵌入框架的某个模块(如Key-details) |
| 依赖关系 | 方法依赖框架提供组织逻辑 | 框架通过方法实现具体功能 |
(1) APE框架
Action行动:定义要完成的工作或活动
Purpose目的:讨论意图或目标
Expectation期望:说明期望的结果
(2) CARE框架
Context上下文:提供上下文信息或情况
Action行动:描述您想要做什么
Result结果:描述期望的结果
Example示例:举一个例子来说明你的观点
(3) TRACE框架
Task任务:定义具体任务
Request请求:描述您的请求
Action行动:说明您需要采取的行动
Context语境:提供背景或情况
Example示例:举一个例子来说明你的观点
(4) TAG框架
Task任务:定义具体任务
Action行动:描述需要做什么
Goal目标:解释最终目标
更多推荐


所有评论(0)