Link

AI 书籍学习笔记

目录

  1. AI 书籍学习笔记
  2. 《AI Engineering》
    1. 第一章概要
      1. 应用场景分类
      2. 如何评估要不要使用 AI 技术?
      3. 微软 Crawl-Walk- Run AI 自动化框架
      4. AI 护城河
      5. 设定预期
      6. 追踪客户满意度
    2. 第二章概要
      1. SFT 监督微调
      2. RLHF 基于人类反馈的强化学习
      3. Sampling 采样
      4. 停止条件
      5. 结构化输出
      6. 关于幻觉的两种假设
    3. 第三章概要
      1. 精确评估 Exact Evaluation
        1. 功能正确性评估
        2. 与参考数据的相似度测量
        3. 关于 Embedding
      2. 通过 AI 评估
        1. AI 评估的局限性
      3. 基于比较来进行模型排序
    4. 第四章概要
      1. 一些评估指标
        1. 特定领域的评估指标
        2. 生成能力评估
          1. 事实一致性
          2. 内容安全
        3. 指令遵循能力
          1. 角色扮演
        4. 成本和延迟
      2. 模型选择决策树
      3. 一些公开的 Benchmark
      4. 设计自己的评估流程
  3. 分类模型的指标

记录一些看 AI 相关书籍的笔记。

《AI Engineering》

第一章概要

Pre-training:仅超大公司才能做这个,需要大量计算资源。

Post-training:指模型公司对于预训练后的模型进行微调,比如OpenAI 可能在发布模型之前对其进行 post-training,以提高其遵循指令的能力。

Fine-tuning:指普通企业基于基座模型调整模型的权重,比如训练垂类模型。

一个好的 demo 并不保证最终产品会很好。构建一个演示可能只需要一个周末,但构建一个产品可能需要数月,甚至数年。

CLIP 嵌入式模型:OpenAI 使用了一种名为自然语言监督的自监督学习变体来训练他们的语言-图像模型 CLIP (OpenAI, 2021),被用来生成文本和图像的联合嵌入。

提示词工程:通过提供详细指令和期 望产品描述的示例来构建提示词,这种方法称为提示工程

应用场景分类

亚⻢逊网络服务(AWS)将企业生成式 AI 用例分为三类:客户体验、员工 生产力和流程优化。

2024 年奥雷利调查将用例分为八个类别:编程、数据分析、客户 支持、营销文案、其他文案、研究、网⻚设计和艺术。

一些组织,如德勤,已根据价值捕获对用例进行分类,例如成本降低、流程效率、增 ⻓和加速创新。

如何评估要不要使用 AI 技术?

不使用 AI 的风险:

  • 如果你不这样做,拥有 AI 的竞争对手会使你过时
  • 如果你不这样做,你将错失提高利润和生产力的机会
  • 你还不确定 AI 将如何融入你的业务,但你不想被落伍

微软 Crawl-Walk- Run AI 自动化框架

  1. Crawl 意味着人类参与是强制性的。
  2. Walk 意味着 AI 可以直接与内部员工互动。
  3. 运行意味着自动化程度的提高,可能包括 AI 与外部用户直接互动。

随着 AI 系统质量的提升,人类的作用可能会随时间变化。例如,在初期,当你还在评 估 AI 能力时,可能会用它来为人类代理生成建议。如果人类代理的接受率高,例如, 95%的 AI 建议回复简单请求被人类代理原封不动地使用,你可以让客户直接与 AI 互动来处理这些简单请求。

AI 护城河

三种竞争力:技术、数据和分销

其中数据通常被大公司所有,但如果初创公司能早期进入市场并收集足够的用户数据以持续改进其产品,数据将成为它们的护城河(比如 Manus)

即使在用户数据不用于训练模型,使用信息也能提供宝贵的洞察,了解用户行为和产品缺陷,这些可以用来指导数据收集和训练过程。

基础模型的能力已经很强,对于大部分人/企业来说只需要借助基础模型来构建上层应用。但需要注意,如果想实现的功能未来基础模型也会做,那产品的生存周期可能会很短。

设定预期

衡量一个 AI 应用成功的指标(以聊天机器人为例):

  • 您希望聊天机器人自动处理多少比例的客户消息?

  • 聊天机器人返回来的消息中,多少需要你处理?
  • 使用聊天机器人,你能多快做出回应?
  • 聊天机器人能为你节省多少人力?

追踪客户满意度

可用下列性能指标衡量客户满意度:

  • 响应质量
  • 延迟指标包括TTFT(首个token的时间)、TPOT(每个输出token的时间)和总延迟。可接受的延迟取决于你的使用场景。如果目前所有客户请求都由人工处理, 中位响应时间为一小时,那么比这更快的时间可能就足够了。
  • 成本指标:每次推理请求的成本。
  • 其他指标,如可解释性和公平性。

第二章概要

Transformer 架构是在 seq2seq(序列到序列)架构成功之后流行起来的。seq2seq可用于翻译和摘要。2016 年,seq2seq 被加入 Google Translate。seq2seq 包含一个处理输入的编码器和一个生成输出的解码器。输入和 输出都是 token 序列,因此得名。Seq2seq 使用 RNN(循环神经网络)作为其编码器和解码器。在其最基本的形式中,编码器按顺序处理输入 token,输出代表输入的最终隐藏状态。然后解码器按顺序生成输出 token,其生成过程依赖于输入的最终隐藏状态以及先前生成的 token

image-20250827102757167

一些潜在的 Transformer 替代架构:

  • SSMs(状态空间模型)

  • RWKV

参数数量帮助我们估计训练和运行此模型所需的计算资源。例如,如果一个模型有 70 亿个参数,并且每个参数使用 2 字节(16 位)存储,那么我们可以计算出使用此模型 进行推理所需的 GPU 内存至少为 140 亿字节(14 GB)。

Mixtral 8x7B 是一个由八个专家组成的混合体,每个专家有七十亿个参数。如果 没有任何两个专家共享任何参数,它应该有 8 × 70 亿 = 560 亿个参数。然而,由于某些参数被共享,它只有 46.7 亿个参数。

预训练大型模型需要计算资源,衡量模型计算需求的标准化单位是 FLOP,即浮点运算,例如,一个 NVIDIA H100 NVL GPU 可以达到的最大性能是 60 TeraFLOP/s:即每秒 6 × 10FLOPs。假设你有 256 个 H100。如果你能以最大容量使用它们并且不犯训练错误,那么训练 GPT-3-175B 将需要你(3.14 × 10)/(256 × 5.2 × 10)= ~236 天,或大约 7.8 个月。

预训练模型通常存在两个问题,微调的目标是解决这两个问题:

  • 自监督优化模型是为了 文本补全,而不是对话。
  • 如果模型是在从互联网上随意抓取的数据上进行预训练的,其输出可能包含种族歧视、性别歧视、粗鲁或仅仅是错误的内容。

post-training 包含两个步骤:

  1. 监督微调(SFT):在高质量指令数据上微调预训练模型,以优化模型用于对话而非生成完整内容。
  2. 偏好微调(Preference Finetuning):进一步微调模型以输出与人类偏好一致的响应。偏好微调通常使用强化学习(RL)进行。偏好微调的技术包括人类反馈强化学习(RLHF,reinforce‐ment learning from human feedback)(GPT-3.5 和 Llama 2 使用)、直接偏好优化(DPO)(Llama 3 使用)以及 AI 反馈强化学习 (RLAIF)(Claude 可能使用)。

或者说:预训练优化的是 token 级别的质量,即模型被训练以准确预测下一个 token。然而,用户并不关心 token 级别的质量——他们关心的是整个响应的质量。通常情况下,后训练优化的是模 型以生成用户偏好的响应。有些人将预训练比作通过阅读来获取知识,而后训练则像是学习如何运用这些知识。

与预训练相比,训练后仅消耗少量资源(InstructGPT 的训练后计算资源仅占 2%,而训 练时占 98%),

image-20250827145635217

用于post-training的数据标注通常会使用高学历标注员来生成演示数据。在为 InstructGPT 标注演示数据 的人员中,约 90%至少拥有大学学历,其中超过三分之一拥有硕士学位。生成一对(提示,响应)可能需要⻓达 30 分钟,尤其是对于涉及⻓上下文的任务,如摘要。如果一对(提示,响应)的成本为 10 美元,那么 OpenAI 为 InstructGPT 使用的 13,000 对数据将花费 130,000 美元。这还不包括设计数 据(要包含哪些任务和提示)、招募标注员以及数据质量控制的成本。

SFT 监督微调

简单来说,基于预训练教模型如何进行对话(从补全到chat)

我们知道模型会模仿其训练数据。为了鼓励模型生成适当的响应,你可以展示适当响应的示例。这些示例遵循(提示,响应)的格式,被称为示范数据。有些人将这个过程称为行为克隆:你展示模型应该如何行为,模型则克隆这种行为。

RLHF 基于人类反馈的强化学习

SFT 只会教会模型如何和用户对话,但缺少对于内容的控制。不能避免模型回复用户一些恶意的问题。

  • 训练一个奖励模型来评分基础模型输出的结果。

  • 优化基础模型,使其生成的回复能够获得奖励模型的最大分数。

Sampling 采样

采样使得模型的输出具有概率性。

对于分类模型,可能结果就是可用的类别。比如,你决定任何垃圾邮件概率高于 50% 的邮件都应该被标记为垃圾邮件,那么一个 90% 垃圾邮件概率的邮件将被标记为垃圾邮件。

image-20250827172448886

处理不同概率的结果时,最常见的策略是使用概率最高的结果,这称为贪婪采样。这种方式适合垃圾邮件等应用,但用在语言模型上,会导致输出过于固化。

给定一个输入,神经网络会输出一个 logit 向量。每个 logit 对 应一个可能的值。对于语言模型,每个 logit 对应模型词汇表中的一个 token。

image-20250827173509333

image-20250827181652316

常见的采样策略:

  • 温度:较高的问题会降低常见标记的概率,让回答更具创造性。一个常数,通常将其设置为 0
  • Top-k:Top-k 是一种在不牺牲太多模型响应多样性的情况下减少计算工作量的采样策略。仅对 Top K 的 logits 进行 softmax 操作,K 值的区间为 50~500
  • Top-p:动态采样,进采纳概率累加高于一定值的结果,通常设置在 0.9~0.95 之间。

下列示例下,设置为 0.9 时仅有 yes 和 maybe 被采纳,设置为 0.99 时 no 也会被采用。

image-20250827182325754

停止条件

  • 模型在固定数量的 token 后停止生成:缺点是输出可能会在句 子中间被截断。

  • 使用停止 token 或停止词。例如,你可以要求模型在遇 到序列结束 token 时停止生成。停止条件有助于降低延迟和成本。

结构化输出

支持结构化输出的框架: guidance, outlines, instructor, llama.cpp。

你可以引导模型在 AI 堆栈的不同层级生成结构化输出:

  • 提示词 Prompting:通过提示词来让模型结构化输出,但是模型可能不完全遵守。此时可以通过第二个模型进行验证。
  • 后处理 post-processing:对于一些潜在的格式问题,可以用代码来检查修复,比如 JSON 缺少 ;
  • 约束取样 Constrained sampling:模型输出时通过限制来过滤 token 进行采样,这种方式不太好实现,因为规范很难定义,比如 JSON 的格式要求

image-20250828115355162

  • 微调:最有效和最常用的方法

关于幻觉的两种假设

  • 滚雪球式幻觉:模型无法区分所接受的数据和自己生成的数据。比如一开始一个东西就识别错了(洗发水认成牛奶瓶),然后基于这个错误的事实延伸出其他回答

DeepMind 的论文表明,可以通过两种技术来缓解幻觉问题。第一种技术来自强化学习,通过这种方式,模型被训练以区分用户提供的提示(在强化学习中称为关于世界 的观察)和模型生成的标记(在强化学习中称为模型的动作)。第二种技术依赖于监督学习,其中事实性和反事实性信号被包含在训练数据中。

  • 幻觉是由模型内部知识与标注者内部知识之间的不匹配引起的

两种解决方案:一种是验证:对于每个回答, 要求模型检索它基于这个回答的来源。另一种是使用强化学习。一个更好的奖励函数,对模 型编造事情进行更严厉的惩罚,可以帮助减轻幻觉。

有些人尝试通过提示词来减少幻觉,例如添加“尽可能如实地回答,如果你不确定答案,就说‘抱歉,我不知道’。

”要求模型给出简洁的回 答似乎也有助于减少幻觉——模型需要生成的 token 越少,编造内容的可能性就越小

第三章概要

模型评估:

对于传统的分类模型,其值是固定的(比如 0 和 1),将预测结果和预期值比较就可测评模型。

对于 LLM,给定的输入下输出是开放式的,很难整理一份清单来列举所有输出。

公开可用的评估基准已被证明不足以评估基础模型,因为很多模型已经可以拿到很高的分数,相当于难以评估模型的上限。

精确评估 Exact Evaluation

功能正确性评估

比如写一个玩俄罗斯方块的代码,测试代码得到的分数。

间接通过代码运行的分数来衡量输出内容的质量。

与参考数据的相似度测量

比如翻译场景下,可以将 AI 翻译结果与参考翻译结果比对。

有四种方法可以测量两个文本之间的相似性:

  1. 让评估者判断两个文本是否相同
  2. 完全匹配:生成的响应是否与参考响应完全匹配
  3. 词汇相似性:生成的响应看起来与参考响应有多相似
  4. 语义相似度:生成的响应在意义上与参考响应的接近程度(语义)

完全匹配:比如对于算术题、历史第一个,等有准确答案的,可以完全匹配答案

词汇相似性:近似字符串匹配,俗称模糊匹配。它通过计算将一个文本转换为另一个文本所需的编辑次数来衡量两个文本的相似度,这个数字称为编辑距离

语义相似度:语义相似度的目标是要计算语义上的相似度。这首先需要将文本转换为一个数值表示,这被称为嵌入 Embedding。

语义相似性的可靠性取决于底层嵌入算法的质量。

关于 Embedding

由于模型通常需要先将输入转换为向量表示,因此许多机器学习模型,包括 GPT 和 Llama,也包含一个生成嵌入的步骤。“第 58 ⻚的“Transformer 架构”可视化了 Transformer 模型中的嵌入层。如果你可以访问这些模型的中间层,你可以使用它们来 提取嵌入。然而,这些嵌入的质量可能不如专⻔生成的嵌入模型。

通过 AI 评估

  1. 通过原始问题本身评估响应的质量:给模型判断标准(1~10),让模型自行判断评分
  2. 提供参考内容,让模型基于参考内容来验证生成的内容,然后评分
  3. 比较两个生成的内容,确定哪个更好

提示词:

裁判的提示词应清楚解释以下几点:

  • 模型需要执行的任务,例如评估生成的答案与问题之间的相关性。

  • 模型应遵循的标准来评估,例如“你的主要重点是判断生成的答案是否包含足够的信 息来根据真实答案回答给定的问题”。指令越详细越好。

  • 评分系统可以是以下这些之一:

    • 分类,例如好/坏或相关/不相关/中立。
    • 离散数值,例如 1 到 5。离散数值可以被视为分类的一种特殊情况,其中每个类 别具有数值解释而不是语义解释。
    • 连续的数值,例如在 0 和 1 之间,比如当你想要评估相似度程度时。

image-20250829134909877

AI 评估的局限性

不一致:使用相同的指令提示,如果运行两次,也可能输出不同的分数

标准不统一:MLflow、llamainfex 、ragas 等工具的分数没有统一标准

成本和延迟:如果基于 LLM 来做内容的审查,可能增加成本和延迟。此时也可以通过采样检查来减少成本

偏见:模型可能更倾向于自己的回答,看到的第一个答案,以及较长的答案

一些可用来评估的模型:

  • 奖励模型:奖励模型接收一个(提示,响应)对,并根据提示对响应的好坏进行评分。Google 的 Cappy
  • 基于参考的判别:通过一个或多个参考答案来评估生成的响应,输出相似度分数或质量分数。BLEURT、Prometheus
  • 偏好模型:给多个输出,让模型判断哪个输出更好。 PandaLM、JudgeLM

image-20250829140702002

基于比较来进行模型排序

评估可以用来决定哪些模型更适合自己的应用,通过比较法来实现。

比如做一个 chatbot,把多个模型的结果告诉用户,让用户来选择更好的。

LMSYS 的 Chatbot Arena 排行榜,该排行榜使用社区中从成对模型比较中计算出的分数来对模型进行排名。

比较评估在人工智能中是新的,但在其他行业中已有近一个世纪的历史。它在体育和 电子游戏中尤其流行。为这些其他领域开发的许多评分算法可以适应评估人工智能模 型,例如 Elo、Bradley-Terry 和 TrueSkill。LMSYS 的 Chatbot Arena 最初使用 Elo 来 计算模型的排名,但后来切换到 Bradley-Terry 算法,因为他们发现 Elo 对评估者的顺 序和提示的顺序很敏感。

比较性模型的挑战:

  • 模型比较多时,要对比的量会很大(平方级)
  • 缺乏标准化和质量控制:使用众筹游戏的方式来获得评测数据。但是因为众筹质量比较难把控,不同人对于回应方式的喜好不一样,同时有些人也可能恶意标记造成模型输出不健康内容
  • 模型的排行比较难量化为具体应用的性能提升:假设 B 比 A 测评好,但在实际应用中能有多少提升不清楚

第四章概要

评估驱动开发(evaluation-driven development):在构建之前先定义评估标准

如果不进行评估而发布应用,很可能没有办法知道未来应用是否工作如预期,是否会损坏客户体验等。

一些具有明确评估标准的应用:

  • 推荐系统,通过参与度和转化率可以评估
  • 欺诈检测
  • 编程:运行代码测试功能是否正常运行
  • 分类任务

一些评估指标

特定领域的评估指标

  • BIRDSQL:测试生成 SQL 的功能正常性,以及生成 SQL 的效率及运行效率
  • 非编码领域的封闭式评估:比如让模型做选择题,然后比对答案,而非做开放式问题。2024 年 4 月,Eleuther 的 lm-evaluation- harness 中 75%的任务是多项选择题,包括加州大学伯克利分校的 MMLU(2020 年)、微软的 AGIEval(2023 年)以及 AI2 推理挑战(ARC-C)(2018 年)。在他们的论文中,AGIEval 的作者解释说他们有意排除了开放式任务,以避免评估结果不一致。

生成能力评估

开放式文本生成的子领域被称为自然语言生成(NLG)。

早期对于翻译、摘要等模型考察:流畅性(语法),连贯性(结构性),忠实度(翻译),相关性(摘要)

现在大模型的评估主要关注:幻觉和安全性

事实一致性
  • 本地事实一致性:基于上下文的一致性检查,比如 context 中说“天空是紫色的”,但是模型输出是“天空是蓝色的”,这就是模型输出不一致。对于摘要、客户聊天机器人等场景,维持上下文一致性很重要
  • 全球事实一致性:比如天空是蓝色的是个普遍接受的事实,如果模型输出和这个有偏差那就视为不一致。对于通用聊天机器人、事实核查以及市场调研等任务,全局事实一致性比较重要。

在设计用于衡量幻觉的指标时,重要的是分析模型的输出,以了解它更可能在哪些类型的查询上产生幻觉。

  • 比如问模型基金选择,他可能倾向于回答引用比较多的基金(比如美股),而非国内的基金。

  • 查询那些不存在的事物,比如 A 对 B 说了什么(实际上 A 没有对 B 说什么)

一些评估方法:

  • 基于 AI 的自评估:比如要评估答案 R,可以让模型生成多个其他答案 N,然后测评 R 和 N 个答案之间的一致性
  • 基于搜索增强的评估(Search-Augmented Factuality Evaluator):利用搜索引擎结果 来验证响应
  1. 使用 AI 模型将回复分解为单个语句。
  2. 修改每个语句使其自包含。例如,在语句“它在 20 世纪开放”中的“它”应改为原始主语。
  3. 为每个语句提出用于发送到 Google Search API 的事实核查查询。
  4. 使用 AI 判断该语句是否与研究结果一致。

image-20250904161334272

验证一个声明和上下文是否一致,可以用本文蕴含检测:

  • 她喜欢所有颜色
  • 她喜欢橘色
  • 她喜欢猫

其中第二句就包含在第一句,第三句则和第一句无关。

DeBERTa-v3-base-mnli-fever-anli 是一个用于预测蕴涵的模型,用于事实一致性的基准测试包括 TruthfulQA。

内容安全

不安全内容可能属于以下类别之一:

  1. 不适当的语言,包括脏话和露⻣内容。
  2. 有害的建议和教程,例如“如何一步步抢劫银行”或鼓励用户从事自我毁灭行为。
  3. 仇恨言论,包括种族主义、性别歧视、恐同言论以及其他歧视行为。
  4. 暴力,包括威胁和详细描述。
  5. 刻板印象,例如总是用女性名字称呼护士或用男性名字称呼 CEO
  6. 对政治或宗教意识形态的偏⻅,可能导致模型只生成支持这种意识形态的内容。

一些常见的内容安全检测模型:

用于衡量毒性的常⻅基准包括:

指令遵循能力

对于编写 JSON 等任务比较重要。

指令遵循标准:

  • IFEval:Google 提出,包含 25 种可以自动验证的测试,比如 JSON 格式,关键词输出等

  • INFOBench:

角色扮演

评估基准:

  • RoleLLM
  • CharacterEval

成本和延迟

image-20250905151944493

模型选择决策树

  1. 决定是否自建、是否使用开源等
  2. 使用公开的评测过滤目标模型
  3. 使用贴近业务的验证方法验证
  4. 生产中监控并根据反馈改善

image-20250905152350860

一些公开的 Benchmark

  • Google’s BIG-bench (2022)

  • EleutherAI’s lm-evaluation-harness

  • OpenAI Eval

  • 斯坦福的 HELM 排行榜,相比 Open LLM 在领域方面更全面

  • Hugging face Open LLM 排行榜(包含 6 个基准):

  1. ARC-C:衡量解决复杂、小学水平的科学问题的能力
  2. MMLU-PRO:衡量在 57 个学科中的知识和推理能力,包括小学数学、美国历史、计算机科学和法律。
  3. HellaSwag:衡量预测故事或视频中句子或场景完成的能力。目标是测试常识和对日常活动的理解。
  4. TruthfulQA:测量生成不仅准确而且真实、不误导的响应的能力, 重点在于模型对事实的理解。
  5. WinoGrande: 测量解决为语言模型设计得具有挑战性的代词消解问题的能力,需要复杂的常识推理。
  6. MATH lvl 5 :竞争性数学基准测试 MATH 中最具挑战性的问题

设计自己的评估流程

基于任务的评估的一个例子是 BIG-bench 基准套件中的 twenty_questions 基准。

评估标准:例如,对于 客户支持应用,良好回答可能通过以下三个标准来定义:

  1. 相关性:回答与用户查询相关。
  2. 事实一致性:回答与上下文在事实上保持一致。
  3. 安全:响应内容不是有毒的。

分类模型的指标

任务类别 (Class., Clust., etc.): MTEB基准包含了多种不同类型的自然语言处理任务,这里列出了7大类:

  • Class. (Classification, 分类): 12个不同的分类任务的平均分。
  • Clust. (Clustering, 聚类): 11个聚类任务的平均分。
  • PairClass. (Pair Classification, 句子对分类): 3个句子对分类任务的平均分。
  • Rerank. (Reranking, 重排序): 4个重排序任务的平均分。
  • Retriev. (Retrieval, 检索): 15个检索任务的平均分。
  • STS (Semantic Textual Similarity, 语义文本相似度): 10个相似度任务的平均分。
  • Summ. (Summarization, 摘要): 1个摘要任务的平均分。

Avg. (Average): 最重要的列。这是模型在上述所有7大类任务上的总平均分,是衡量模型综合性能的核心指标。

Screenshot 2025-09-02 at 2.08.32 PM.png

什么是“Embedding Space Visualization (t-SNE)”?

  • Embedding Space (嵌入空间):你可以把它想象成一个高维的“语义地图”。一个好的模型会学习将相似的输入(例如,都是“注入攻击”的文本)映射到这个地图上相近的位置,而将不相似的输入(例如,“注入攻击”和“正常提问”)映射到相距遥远的位置。
  • t-SNE:这是一种降维可视化技术。因为“语义地图”的维度非常高(比如几百上千维),我们肉眼无法观察。t-SNE的作用就是把它“压平”成我们能看懂的二维或三维图形,同时尽量保持原始空间中“谁和谁离得近”的关系。