LLM 大时代已来,本文梳理了 LLM 技术岗位常见的 30 面试题,大家可以对着查漏补缺,踏上LLM这趟车。
基础概念
1、什么是 Large Language Models (LLMs)?
大语言模型 (Large Language Models, LLMs) 是一种基于深度学习技术的人工智能模型,通常采用神经网络架构(如 Transformer),通过在海量文本数据上进行预训练,学习语言的统计规律和语义表示。LLMs 能够处理和生成自然语言,广泛应用于文本生成、翻译、问答、对话系统等任务。其特点包括:
- 大规模参数:LLMs 通常拥有数十亿甚至上千亿个参数,模型容量巨大。
- 预训练与微调:通过在通用语料上进行自监督学习(如预测下一个词或掩码语言建模)进行预训练,随后可通过微调适配特定任务。
- 通用性:LLMs 能处理多种语言任务,具有较强的泛化能力。
- 上下文理解:通过捕捉长距离依赖关系,LLMs 能够理解复杂语境并生成连贯的文本。
2、传统语言模型与 LLMs 有何区别?
传统语言模型与LLMs的主要区别体现在以下几个方面:
方面 | 传统语言模型 | 大语言模型 |
---|---|---|
模型规模 | 参数量较小,通常在百万到千万级别 | 参数量巨大,动辄数十亿到千亿级别 |
架构 | 常基于 n-gram、HMM、RNN 或简单的神经网络 | 基于 Transformer 等复杂神经网络架构 |
训练数据 | 数据规模较小,通常为特定领域或较小语料库 | 使用海量、多样化的互联网文本数据进行训练 |
训练方法 | 依赖监督学习或特定任务的标注数据 | 主要通过自监督学习(如掩码语言建模、因果语言建模)进行预训练,辅以微调 |
泛化能力 | 通常针对特定任务,泛化能力较弱 | 具有强大的泛化能力,可处理多种任务(零样本、少样本学习) |
性能 | 在复杂任务上表现有限,生成文本连贯性较差 | 在复杂任务上表现出色,生成文本更连贯、语义更丰富 |
计算需求 | 计算资源需求较低,适合单机训练或推理 | 需要大规模分布式计算资源(如GPU/TPU集群) |
应用场景 | 特定任务,如关键词提取、简单分类等 | 通用任务,如对话、翻译、代码生成、推理等 |
核心区别:
- 规模与复杂度:LLMs 的超大参数量和复杂架构能捕捉更丰富的语言模式;
- 训练范式:传统模型依赖特定任务的监督学习,而 LLMs 通过自监督预训练实现通用知识学习;
- 任务适应性:LLMs 的零样本和少样本学习能力使其无需大量标注数据即可适配新任务,而传统模型则通常需要重新训练。
3、什么是 Tokenization ? 为什么它对 LLMs 至关重要?
Tokenization(分词)是将文本分解成较小单元的过程,这些单元被称为 Token(令牌)。这些令牌可以是单词、子词(subwords)也可以是单个字符,具体取决于所使用的分词方法。如,“Hello, world!” 可以被分词为 [“Hello”, “,”, “world”, “!”]。这个过程是将原始文本转化为模型能够理解和处理的形式的第一步。
对于 LLMs 来说,Tokenization 是一个不可或缺的步骤,因为它直接影响模型的输入处理、理解能力和生成能力。它对 LLMs 至关重要的原因如下:
- 输入表示(Input Representation):LLMs 无法直接处理原始文本,它们依赖于数值数据。Tokenization 将文本转化为 Tokens,然后将这些 Token 映射为数字 ID,作为模型的输入。最终,文本被转化为模型可以计算的数值序列。
- 词汇管理(Vocabulary Management):Tokenization 决定了模型的词汇表大小。一个有效的分词策略可以在保持语言覆盖范围的同时,控制词汇表的大小,从而优化内存使用和计算效率。过于细粒度的分词(每个字符一个 Token)会导致词汇表过小但序列过长,而过于粗粒度的分词(每个句子一个 Token)则会导致词汇表过大。通过适当的分词方法,可以在这两者之间找到平衡。
- 处理未见词(Handling Out-of-Vocabulary Words):在实际应用中,模型会遇到训练时未见过的新词。现代分词方法,如 Byte Pair Encoding (BPE),可以将未知词分解为已知的子词单元。如果模型从未见过 “unbelievable”,BPE 可能将其分解为 “un”、“believ” 和 “able”,这些分解后的子词可能已在训练数据中出现过,从而提升模型在新数据上的泛化能力。
- 上下文理解(Contextual Understanding):Token 是模型理解文本上下文的基础。通过分析 Token 之间的关系,LLMs 能够捕捉句子的语法和语义,从而生成连贯且上下文相关的回应。如,在 “I love to code” 中,[“I”, “love”, “to”, “code”] 的 Token 序列为模型提供了理解主语、情感和动作的线索。
4、训练 LLMs 的主要挑战是什么?
训练 LLMs 的主要挑战包括以下几个方面:
- 计算资源需求巨大:LLMs 需要海量数据和计算资源进行训练,通常需要高性能 GPU/TPU 集群,成本高昂且耗时;
- 数据质量与规模:模型性能高度依赖于训练数据的质量和多样性。获取大规模、高质量、去偏见的数据集是一大挑战,且数据隐私和版权问题也需考虑;
- 模型规模与效率:随着模型参数规模增长(如百亿、千亿参数),训练和推理的内存、计算复杂度激增,导致优化困难;
- 过拟合与泛化:在复杂任务上,模型可能过拟合训练数据,难以泛化到未见过的数据或场景;
- 伦理与偏见:LLMs 可能从训练数据中学习到偏见或有害内容,如何减少偏见并确保输出符合伦理规范是一个挑战;
- 分布式训练的复杂性:多节点并行训练需要高效的分布式算法(如数据并行、模型并行、流水线并行),同步和通信开销可能导致效率瓶颈;
- 环境影响:大规模训练的能耗高,对环境造成显著影响,如何优化能效也是重要问题。
5、Pre-training 在 LLMs 中的作用是什么?
Pre-training 是 LLMs 开发的核心阶段,其作用是让模型通过在大规模、多样化的文本数据上学习通用语言表示,奠定后续任务的基础。具体作用包括:
- 学习通用语言知识:通过在海量文本(如网页、书籍等)上进行自监督学习(如语言建模),模型学习语言的语法、语义、常识和上下文理解能力;
- 构建通用特征表示:预训练使模型能够捕获广泛的语言模式和知识,形成强大的特征提取能力,适用于多种下游任务;
- 降低下游任务成本:预训练模型可以作为基础模型,通过少量数据进行微调(fine-tuning),快速适配特定任务,显著降低训练成本;
- 提高泛化能力:通过在大规模、多领域数据上训练,模型能够处理多样化的输入,具备较强的泛化能力。
预训练通常采用自监督学习目标,如下一词预测(Next Word Prediction)或掩码语言建模(Masked Language Modeling),无需人工标注数据。
6、什么是Fine-tuning? 与Pre-training有何不同?
Fine-tuning(微调) 是在预训练模型的基础上,使用特定任务或领域的数据对模型进行进一步训练,以优化其在特定任务上的性能。Fine-tuning 通常涉及较小的学习率和更少的数据,目标是调整模型参数以适应特定需求。
与预训练的区别:
方面 | 预训练(Pre-training) | 微调(Fine-tuning) |
---|---|---|
目标 | 学习通用语言表示,捕获广泛的语言知识和模式 | 优化模型以适配特定任务或领域 |
数据 | 大规模、通用、多样化数据集(如网页、书籍) | 小规模、任务特定数据集(标注或领域数据) |
训练方式 | 自监督学习(如语言建模、掩码语言建模) | 监督学习或强化学习(如分类、生成、RLHF) |
计算成本 | 高,需大量计算资源和时间 | 较低,通常只需部分参数调整 |
模型参数更新 | 从随机初始化开始,全参数训练 | 在预训练模型基础上,微调部分或全部参数 |
输出 | 通用的基础模型,适用于多种任务 | 任务特定的模型,性能在目标任务上更优 |
关键区别:
- Pre-training 是“广度”学习,旨在构建通用语言能力;Fine-tuning 是“深度”优化,针对特定任务或领域进行定制;
- Pre-training 数据量大、泛化性强,但任务特异性弱;Fine-tuning 数据量小、任务特异性强,但可能导致灾难性遗忘(对通用知识的遗忘);
- Fine-tuning 通常在预训练模型上进行,避免从头训练,显著降低成本。
通过 Pre-trianing 与 Fine-tuning 的结合,LLMs 能够高效适应从文本生成到分类等各种任务,同时保持强大的语言理解能力。
7、在 LLMs 中,Supervised learning 和Unsupervised learning 有何区别?
在 LLMs 开发中,监督学习(Supervised Learning) 和 无监督学习(Unsupervised Learning) 的区别主要体现在训练目标、数据需求和应用场景等方面,对比如下图所示:
方面 | 监督学习(Supervised Learning.) | 无监督学习(Unsupervised Learning) |
---|---|---|
定义 | 使用带标签的数据进行训练,模型学习输入与输出之间的映射关系 | 使用无标签数据,模型学习数据的内在结构或模式 |
数据需求 | 需要输入数据和对应的标注标签(如分类标签、翻译目标) | 无需标注标签,仅需大量未标注的原始数据(如文本) |
常见任务 | 分类(如情感分析)、回归、问答、机器翻译等 | 语言建模(如下一词预测)、码语言建模、生成任务 |
LLMs 中的应用 | 微调(Fine-tuning)阶段,如任务特定训练或RLHF(强化学习结合人类反馈) | 预训练(Pre-training)阶段,如BERT的MLMGPT的下一词预测 |
优点 | 针对特定任务性能高,输出更精确 | 不依赖标注数据,适合大规模通用知识学习 |
缺点 | 需要大量高质量标注数据,标注成本高 | 模型输出可能缺乏任务特异性,需进一步微调 |
计算复杂度 | 通常较低(因数据量较小) | 较高(因数据量大且需学习复杂模式) |
在 LLMs 中的具体角色为:
- 无监督学习:主要用于 Pre-training 阶段。LLMs 通过自监督学习(如掩码语言建模或因果语言建模)在大规模未标注文本数据上学习通用语言表示。如,GPT 系列模型使用下一词预测,BERT 模型使用掩码语言建模。无需人工标注,仅依赖数据的自然结构;
- 监督学习:主要用于 Fine-tuning 阶段。在预训练模型基础上,使用带标签的数据集(如问答对、分类标签)优化模型以适配特定任务。如,微调一个预训练模型进行情感分析,需要提供标注为“正面”或“负面”的文本数据。
关键区别:
- 数据:监督学习依赖标注数据,无监督学习使用未标注数据。
- 目标:监督学习解决明确的任务(如分类、翻译),无监督学习捕获通用语言模式。
- LLMs 流程:无监督学习构建通用基础模型(Pre-training),监督学习优化任务特定性能(Fine-tuning)。
8、什么是 Zero-shot learning ? LLMs如何实现它?
Zero-shot Learning 指的是模型在没有任何针对特定任务的训练样本的情况下,能够直接执行该任务的能力。也就是说,模型仅依赖于其预训练阶段学到的通用知识和推理能力,通过理解任务描述(通常以自然语言提示的形式提供)来完成任务。
LLMs 通过以下机制实现 Zero-shot Learning:
- 大规模预训练:LLMs 在海量的文本数据上进行预训练,学习了丰富的语言模式、语法、语义以及世界知识。这种广泛的知识使得模型能够理解和生成与多种任务相关的文本;
- 自然语言提示(Prompting):在 Zero-shot 场景中,用户通过清晰的自然语言指令(Prompt)描述任务。模型根据提示理解任务要求,并基于预训练知识生成答案;
- 通用推理能力:LLMs 具备一定的逻辑推理和类比能力,能够将新任务映射到预训练中见过的类似模式。
- Transformer 架构的灵活性:LLMs 通常基于 Transformer 架构,其自注意力机制能够有效捕捉输入提示中的上下文信息,从而灵活适应不同任务。
9、什么是 Few-shot learning ? 它与 Zero-shot learning有何异同?
Few-shot Learning 指的是模型在仅提供少量(通常是几个到几十个)针对特定任务的示例(样本)的情况下,能够快速适应并完成该任务。Few-shot Learning 依赖于模型通过少量示例学习任务的模式或规则的能力,而不需要大规模的训练数据。
LLMs 中可以通过如下方式实现 Few-shot Learning:
- In-context Learning:LLMs 通过在输入提示中包含少量示例(输入-输出对),直接在推理阶段学习任务模式;
- 强大的上下文理解能力:Transformer 架构的自注意力机制使 LLMs 能够有效捕捉提示中示例的模式,并将其应用于新输入;
- 元学习能力:在预训练过程中,LLMs 间接学习了如何从少量数据中泛化,这种能力使其在 Few-shot 场景中表现优异。
Zero-shot Learning 与 Few-shot Learning 的异同点如下图所示:
方面 | Zero-shot Learning | Few-shot Learning |
---|---|---|
定义 | 无需任务特定训练样本,仅靠提示完成任务 | 提供少量任务特定示例,模型从中学习模式 |
数据 | 无需示例 | 需要少量示例(通常 1-几十个)) |
实现方式 | 依赖预训练知识和提示理解 | 依赖提示中的示例进行In-context Learning |
适用场景 | 任务描述清晰,模型已有相关知识 | 任务需要明确模式或规则,少量示例能帮助泛化 |
性能 | 可能不如 Few-shot 准确,依赖模型泛化能力 | 通常比 Zero-shot 更准确,因有示例指导 |
共同点 | 1、都不需要针对任务的专门微调2、依赖LMs的预训练知识和推理能力3、利用自然语言提示 |
10、Attention mechanism 在LLM中的作用是什么?
Attention Mechanism(注意力机制)是 LLMs 基于 Transformer 架构的核心组件,它通过动态地分配权重给输入序列中的不同部分,极大地提升了模型处理自然语言任务的能力。其在 LLMs 中的主要作用如下所示:
- 捕捉上下文依赖关系:Attention 机制使模型能够根据上下文动态关注输入序列中与当前任务最相关的部分。通过计算 Token 之间的相关性(如自注意力机制),模型能够捕捉长距离依赖关系,解决传统 RNN 或 LSTM 在长序列建模中的局限性;
- 提升计算效率和并行化:与 RNN 的序列处理不同,Attention 机制允许模型并行处理整个输入序列,显著提高训练和推理效率。Attention 机制通过对输入 Token 的加权组合,生成上下文感知的表示(Context-aware Representations),使 LLMs 能够更好地理解复杂的语义和语法结构;
- 支持多任务泛化:Attention 机制的灵活性使 LLMs 能够适应多种任务,无需针对每种任务重新设计模型结构。通过调整注意力权重,模型可以根据不同的提示(Prompt)动态适应 Zero-shot learning 或 Few-shot learning 场景;
- 处理可变长度输入:Attention 机制允许模型处理任意长度的输入序列(在最大上下文长度限制内),通过自适应地分配注意力权重,确保对重要信息的关注;
- 多头注意力(Multi-Head Attention)的优势:LLMs 通常使用多头注意力机制,允许模型从不同角度捕捉输入的特征。
具体实现(以 Self-attention 为例):自注意力机制通过计算Query、Key 和 Value 向量的点积,生成注意力权重,来决定每个 Token 对其他 Token 的影响,其公式为:
其中, 是键向量的维度,缩放因子 防止数值过大。
分词与编码
11、LLMs 中使用的分词方法有哪些类型?
LLMs 中常见的分词方法主要包括以下几种类型:
字符级分词(Character-level Tokenization): 将文本拆分为单个字符(如字母、数字、标点)
- 优点:词汇表极小,适用于多语言场景;不会出现未登录词(OOV)。
- 缺点:序列长度较长,模型需要处理更多 token,计算成本高。
单词级分词(Word-level Tokenization): 以单词为单位分词,通常基于空格或标点分割
- 优点:语义单元直观,序列长度较短。
- 缺点:词汇表较大(尤其是多语言场景),对稀有词或拼写错误敏感,易产生 OOV。
子词级分词(Subword-level Tokenization): 将文本拆分为子词单元(如词根、词缀),常见算法包括 BPE、WordPiece 和 Unigram
- 优点:平衡了词汇表大小和序列长度,处理稀有词和多语言更有效。
- 缺点:需要预训练分词器,语义粒度不如单词级直观。
字节级分词(Byte-level Tokenization): 基于原始字节(如 UTF-8 编码),每个字节作为一个 token
- 优点:通用性极强,覆盖所有字符,无 OOV 问题,适合多语言。
- 缺点:序列长度可能非常长,语义粒度较粗。
12、Byte-Pair Encoding (BPE) 在分词中如何工作?
Byte-Pair Encoding(BPE)是一种子词分词算法,最初用于数据压缩,后被广泛应用于 LLMs(如 GPT 系列)。其工作原理是迭代地合并语料库中最频繁出现的相邻字符对或字节对,直到达到预设的词汇表大小或不再有符合条件的合并。
BPE 的工作流程如下图所示:
- 初始化: 将语料库中的所有单词拆分成字符序列,并在每个单词末尾添加一个特殊标记(如 _ 或 ),以区分是单词内部的字符还是单词边界。
如: "low" -> "l o w ", "lower" -> "l o w e r "
- 统计频率: 统计所有字符对或字节对的出现频率。
- 合并最频繁对: 找到语料库中最频繁出现的相邻字符对或字节对,并将其合并为一个新的符号。
如: 如果 e r 是最频繁的对,那么 "l o w e r " 变为 "l o w er "。
- 重复: 重复步骤 2 和 3,直到达到预设的词汇表大小(即子词的数量)或没有新的合并能显著增加频率。
通过这个过程,BPE 能够学习到有意义的子词单元,例如常见的词根、词缀,甚至是整个单词。对于不常见的单词,它也可以将其分解为已知的子词单元,从而有效处理 OOV 问题。
13、相较于 Word-level tokenization,Subword tokenization 的优势是什么?
子词分词(如 BPE、WordPiece)相比单词级分词有以下优势:
- 更小的词汇表:单词级分词需要为每个单词分配一个 Token,导致词汇表可能包含数十万 Token。子词分词通过拆分单词为子词单元(如 playing → play + ing),显著减小词汇表大小(通常几千到几万 Token);
- 处理未登录词(OOV):单词级分词对稀有词、拼写错误或新词(如 AI-powered)无能为力,需用 ``替代。子词分词可将未知词拆分为已知子词(如 AI-pow + ered),避免 OOV 问题;
- 多语言适应性:单词级分词在多语言场景下需要为每种语言构建庞大词汇表。子词分词通过共享子词单元(如词根、后缀),更高效地支持多语言;
- 语义与效率的平衡:子词分词保留部分语义(如 un-, play, -ing),比字符级分词更具语义表达力。序列长度比字符级短,计算效率更高;
- 鲁棒性:子词分词对拼写变体(如 color 和 colour)和词形变化(如 run, running)更鲁棒,能捕捉共享的子词单元。
14、分词如何影响 LLMs 的性能?
分词对 LLMs 性能的影响主要体现在以下几个方面:
模型效率和计算成本:
- 序列长度: 分词策略直接决定了输入序列的长度。字符级分词会产生非常长的序列,增加模型的计算负担和内存消耗。子词分词在减少 OOV 的同时,能够生成相对较短且信息量丰富的序列,提高训练和推理效率;
- 词汇表大小: 词汇表的大小影响模型的大小和复杂度。过大的词汇表会增加模型的参数量,导致训练更慢、推理更耗时。
模型理解能力:
- 语义表示: 合理的分词能够帮助模型捕捉更准确的语义信息。分词过于粗糙(如单词级分词遇到 OOV),模型可能无法理解新词的含义。而分词过于细致(如字符级分词),模型可能难以聚合语义。子词分词在语义粒度上取得了平衡;
- 语言学特征: 分词决定了模型能学到的语言学特征的粒度。子词分词能够更好地捕捉词缀和词根的含义,这对于理解词形变化和词义推断至关重要。
处理 OOV (Out-Of-Vocabulary) 问题:
- LLM 的训练数据是有限的,模型总会遇到训练时未见过的词汇。有效的子词分词能够将这些 OOV 词分解为已知的子词,从而允许模型对其进行一定程度的处理,而不是完全“不理解”。
多语言和跨语言能力:
- 对于多语言 LLM,分词策略需要能够有效地处理不同语言的特点,例如单词边界的差异、字符集的不同等。通用性强的分词器(如 SentencePiece)可以更好地支持多语言学习。
生成质量:
- 分词器的选择会影响模型生成文本的流畅性和自然度。如果分词不合理,可能会导致生成的文本出现不自然的子词拼接,或者产生语义不连贯的短语。
15、多语言 LLM 中的分词面临哪些挑战?
多语言 LLM 中的分词比单语言分词更具挑战性,主要体现在以下几个方面:
语言间差异:
- 词汇和字符集: 不同语言使用不同的字符集(如拉丁字母、汉字、阿拉伯字母),以及不同的单词定义方式(如中文没有显式的单词边界);
- 形态学复杂性: 某些语言(如土耳其语、芬兰语)具有高度的形态学复杂性,一个词根可以通过添加大量词缀形成数千种变体;
- 书写系统和脚本: 不同的语言有不同的书写方向(如从左到右、从右到左)和断字规则;
- 子词单元的普适性: 在一种语言中有效的子词单元,可能在另一种语言中并不适用。
词汇表冲突与规模:
- 为所有支持的语言创建一个共享的、高效的词汇表是一个巨大挑战。如果简单地合并所有语言的词汇,词汇表会变得异常庞大,导致模型效率低下;
- 需要平衡不同语言之间的词汇分配,确保每种语言都能得到足够精细的子词表示。
OOV 问题加剧:
- 在多语言环境中,模型遇到 OOV 词的概率更高,因为训练数据不可能覆盖所有语言的所有词汇;
- 需要能够有效处理跨语言 OOV 的策略,例如共享词根或通过字符级回退。
分词器一致性:
- 理想情况下,一个多语言 LLM 应该使用一个统一的分词器来处理所有支持的语言,这样模型可以学习到跨语言的表示,并实现零样本或少样本的跨语言迁移;
- 然而,构建这样一个统一的分词器非常复杂,它需要能够适应各种语言的特性,同时保持高效。
平衡语言性能:
- 分词策略可能会对某些语言更有利,而对另一些语言表现不佳。例如,为拉丁语系优化的分词器可能不适合中文或日文。挑战在于找到一个折衷方案,使模型在所有支持的语言上都能取得良好的性能。
为了应对这些挑战,多语言 LLMs 通常采用 SentencePiece 等技术,它可以无监督地从原始文本中学习子词单元,并且不依赖于预定义的单词边界,这对于中文、日文等语言尤为重要。此外,共享词汇表和在不同语言之间平衡子词分配也是关键策略。
Transformer与注意力机制
16、什么是 Transformer? 它在 LLM 中如何运作?
Transformer 是一种深度学习模型架构,由 Google 在 2017 年的论文《Attention Is All You Need》中提出。它彻底改变了 NLP 领域,尤其是在 LLMs 中。它的核心特点是完全依赖于自注意力(Self-Attention)机制,而摒弃了传统的循环神经网络(RNN)和卷积神经网络(CNN)结构。
在 LLMs 中,Transformer 的运作方式可以概括为以下几点:
- Encoder-Decoder 架构: 原始 Transformer 包含一个 Encoder 和一个 Decoder。Encoder 处理输入序列,生成上下文表示;Decoder 利用这些表示以及之前的输出来生成新的序列。在许多现代 LLMs 中,尤其是生成式模型(如 GPT 系列),通常只使用 Transformer 的 Decoder 部分,以实现强大的文本生成能力;
- 并行化处理: 与 RNN 顺序处理序列不同,Transformer 可以并行处理整个输入序列。得益于自注意力机制,它允许模型同时关注序列中的所有 Token,从而大大提高了训练效率;
- 捕捉长距离依赖: 通过自注意力机制,Transformer 可以直接计算输入序列中任意两个 Token 之间的关系,无论它们在序列中的距离有多远。这使得模型能够有效地捕捉长距离依赖关系(这正是 RNN 等模型难以解决的问题);
- 分层表示学习: Transformer 通过多层堆叠的 Encoder 或 Decoder 来学习文本的分层表示。每一层都会对前一层的输出进行进一步的抽象和转换,从而捕捉到更复杂、更高层次的语义信息;
- 核心组件: Transformer 的每个 Encoder/Decoder 层都包含两个主要子层:多头自注意力机制(Multi-Head Self-Attention) 和一个前馈神经网络(Feed-Forward Network)。这两个子层都使用了残差连接(Residual Connection)和层归一化(Layer Normalization)来帮助训练更深的模型。
17、Self-attention 与 Multi-head attention 有何区别?
自注意力(Self-Attention) 和 多头注意力(Multi-Head Attention) 都是 Transformer 中核心的注意力机制,但多头注意力是在自注意力的基础上进行了扩展和增强。
自注意力(Self-Attention)
- 定义:自注意力机制允许模型在处理序列中的某个 Token 时,同时关注序列中的所有其他 Token,并根据它们的重要性来加权。它通过计算Query、Key 和 Value 向量之间的相似度来实现;
- 工作原理:对于输入序列中的每个 Token,生成一个 Query 向量、一个 Key 向量和一个 Value 向量。然后,该 Token 的 Query 向量会与所有 Token 的 Key 向量进行点积运算,得到一个注意力分数。这些分数经过 Softmax 归一化后,与对应的 Value 向量加权求和,最终得到该词语的上下文表示。
- 作用:帮助模型理解序列内部词语之间的依赖关系和重要性。
多头注意力(Multi-Head Attention)
- 定义: 多头注意力是并行运行多个自注意力机制(“注意力头”),并将它们的输出拼接起来,再经过一个线性变换,得到最终输出;
- 工作原理:将输入的 Query、Key、Value 向量分别通过不同的线性变换(每个“头”都有自己独立的权重矩阵)映射到不同的子空间。在每个子空间中,独立地执行自注意力计算。将所有注意力头的输出拼接在一起。对拼接后的结果再进行一次线性变换,得到最终的输出。
区别与联系:
- 捕捉多方面信息: 每个注意力头可以学习关注输入序列中不同方面的信息和关系。如,一个头可能关注语法依赖,另一个头可能关注语义关联。这使得模型能够从不同的“角度”或“视角”来理解数据;
- 增强表示能力: 通过组合多个头的输出,多头注意力能够产生更丰富、更全面的上下文表示;
- 提高模型的鲁棒性: 多个头并行工作,即使其中一个头未能捕捉到某个重要的关系,其他头也可能捕捉到,从而提高了模型的鲁棒性;
- 维度缩减与并行性: 在实践中,每个头的维度通常会小于原始输入的维度,但所有头的总维度与原始输入相同。这种设计既实现了并行计算,又在一定程度上避免了计算量的显著增加。
总之,自注意力是捕捉单个维度的依赖关系,而多头注意力则是通过并行运行多个自注意力来捕捉多维度的、更丰富的依赖关系。
18、Positional encoding 在 Transformer 中的作用是什么?
在 Transformer 中,Positional Encoding(位置编码) 的作用是为模型引入序列中词语的位置信息和顺序信息。
Transformer 完全依赖于自注意力机制,它是一个 无序的(Permutation-invariant) 操作,味着无论输入序列中词语的顺序如何,自注意力机制对这些词语的计算结果都是相同的。如,“牛 吃 草” 和 “草 吃 牛” 在没有位置信息的情况下,对自注意力机制来说是等价的,但这显然会丢失重要的语义信息。
为了解决这个问题,Positional Encoding 应运而生。它不是将位置信息直接作为输入,而是将一个与词语位置相关的向量添加到词语的嵌入向量中。这样,经过编码后的词语嵌入向量就同时包含了词语的语义信息和它在序列中的位置信息。
Positional Encoding 主要作用如下:
- 引入顺序性:弥补了自注意力机制无法感知词语顺序的缺陷,使模型能够区分不同顺序的相同词语序列;
- 保留距离信息:位置编码通常采用正弦和余弦函数(或学习得到)来生成,这种设计使得相对位置信息更容易被模型学习到;
- 提高模型性能:使得模型能够理解“一词多义”或“同词不同义”在不同位置的语境,例如“苹果”作为水果和作为公司的含义,这取决于它在句子中的位置和周围的词语;
- 无需学习: 原始 Transformer 中使用的位置编码是固定的、预定义的函数,而不是通过训练学习得到的参数。这减少了模型的参数量,并且在一定程度上增加了模型的泛化能力。现在更常见的是通过模型直接学习位置编码。
通过将位置编码与词 Embedding 相加,Transformer 模型就能够在处理序列时,既关注词语的语义内容,又能理解它们在序列中的相对和绝对位置,从而更好地理解和生成语言。
19、相较于 RNN,Transformer 在 LLMs 中的优势是什么?
相较于传统的循环神经网络(RNN)及其变体(如 LSTM 和 GRU),Transformer 在 LLMs 中展现出显著的优势,这也是其成为主流架构的关键原因:
方面 | RNN | Transform |
---|---|---|
并行化能力 | 采用顺序处理方式,每个时间步的计算都依赖于前一个时间步的输出,难以并行化 | 基于自注意力机制,可以并行处理整个输入序列。所有词语的表示都可以同时计算,极大地加速了训练过程,尤其是在处理长序列时,使得训练万亿级参数的LLMs成为可能 |
长距离依赖捕捉 | 存在“梯度消失”或“梯度爆炸”问题,难以有效捕捉长距离依赖。随着序列长度增加,早期词语的信息会逐渐衰减 | 通过自注意力机制,可以直接计算序列中任意两个词语之间的关联性,无论它们在序列中的距离有多远,使得模型能够更好地理解长文本中的上下文关系 |
更好的表示学习 | 倾向于学习局部依赖,对全局上下文的理解能力相对较弱 | 能够通过多头自注意力从多个“角度”或“子空间”学习词语之间的复杂关采,产生更丰富、更全面的上下文表示 |
内存效率 | 在处理长序列时,由于需要维护隐藏状态,内存消耗会随着序列长度线性增加 | 虽然注意力机制的计算复杂度与序列长度的平方成正比(0(N~2)),但其架构更利于优化和分布式计算,并且在处理长序列时,通过一些技术(如稀疏注意力)可以降低实际的内存开销。 |
可解释性 | 隐藏状态的内部机制难以直观理解 | 注意力权重可以提供一定程度的可解释性,我们可以通过可视化注意力矩阵来了解模型在生成某个词语时,正在“注”输入序列埈杨Ⅰ口牠到從烬廁噤鳶籍负薺镭陆哪些词语 |
这些优势使得 Transformer 在处理大规模语料库和构建复杂语言任务方面远超 RNN,成为现代 LLMs 的基石。
20、Transformer 中的注意力机制有哪些局限性?
尽管 Transformer 中的注意力机制带来了巨大的进步,但它并非没有局限性,主要体现在以下几个方面:
计算复杂度和内存消耗:
- 平方复杂度:原始的自注意力机制的计算复杂度是序列长度 的平方,即 。这意味着当序列非常长时(如数十万个 Token),计算成本会急剧增加;
- 内存占用:注意力矩阵的存储也需要 的内存,这对于长序列来说是一个巨大的挑战,限制了 Transformer 模型能处理的最大序列长度。
对位置信息的依赖:
- 虽然位置编码解决了 Transformer 无序性问题,但位置编码本身的设计和选择会影响模型性能。不合适的位置编码可能会限制模型对位置信息的理解。
无法处理无限长序列:
- 由于平方级的复杂度和内存消耗,Transformer 无法像 RNN 那样理论上处理无限长的序列(RNN 在实践中也有其长序列问题)。这在需要处理非常长的文档或对话历史时是一个限制。
缺乏局部性归纳偏置:
- 与 CNN 不同,Transformer 缺乏对 局部性(Locality) 的归纳偏置。CNN 天生通过卷积核在局部区域进行操作,对于图像等具有明显局部结构的数据更有效。Transformer 则需要通过学习来发现局部依赖关系,这在某些任务上可能效率较低。
对于某些任务可能过度参数化:
- 对于一些相对简单的任务,Transformer 可能显得过度参数化,其复杂的注意力机制可能不是必需的,并且可能导致训练效率不高。
注意力分数的可解释性问题:
- 虽然注意力权重可以提供一定的可解释性,但它们并不总是直接等同于人类理解的“重要性”或“依赖关系”。有时高注意力权重可能并不意味着直接的语义关联,模型的内部决策过程仍然复杂且难以完全透明。
微调与优化
21、LLM 的微调流程是什么?
微调(Fine-tuning)LLMs 指的是在特定任务或数据上对预训练好的模型进行进一步训练,使其能更好地适应目标场景的过程,其主要流程如下:
数据准备:
- 数据收集:根据目标任务收集高质量、有代表性的数据;
- 数据预处理:对原始数据进行清洗,如去除噪声、重复项、不相关内容等。根据模型输入要求对数据进行格式化;
- 数据划分:将数据分为训练集、验证集和测试集,为后续模型训练做准备。
模型选择: 根据模型规模、架构和任务目标,选择一个合适的预训练模型;
微调策略选择: 常用的微调策略如下所示
- 全参数微调:更新模型所有参数。计算成本高,但通常能得到较好的效果;
- 参数高效微调(PEFT):只更新模型中一小部分参数,或引入少量新参数进行训练。常见的方法有:LoRA、Prefix-tuning、Prompt-tuning、QLoRA;
- 指令微调:将任务描述转换为指令形式,对模型进行微调,使其能遵循指令进行响应。
训练配置: 主要是配置的参数有 Optimizer、Learning Rate、Batch Size、Epochs、Loss function;
模型训练:
- 使用训练集对模型进行训练。在每个 epoch 之后,使用验证集来评估模型性能,监控 loss 和评估指标的变化;
- 根据模型在验证集的表现进行 Early Stopping,防止过拟合。
模型评估与部署:
- 使用测试集对训练好的模型进行最终评估,确定模型在新数据上的泛化能力;
- 将微调后的模型部署到实际应用中,并持续监控其性能。
22、什么是 Catastrophic Forgetting ? 如何在微调中缓解它?
灾难性遗忘(Catastrophic Forgetting) 是指神经网络在学习新任务时,会快速且大幅度的遗忘之前学到的知识的现象。
对于 LLMs 来说,当在一个特定任务上进行微调时,模型可能会丧失其在预训练阶段学到的通用语言理解和生成能力,从而退化成只能很好完成微调的任务,而在其他任务上表现很差。
缓解灾难性遗忘的常用方法有:
- Experience Replay:在微调新任务时,将部分预训练的数据混合到新的训练集中,让模型同时学习。
Regularization:
-
L2 正则化:对权重施加正则化约束,防止权重在微调过程中发生剧烈变化;
-
弹性权重巩固(EWC):识别对旧任务重要的参数,在学习新任务时减缓对这些参数的更新速度;
-
LR 调度:在微调后期逐渐降低 LR,使模型参数更新更加平稳。
-
PEFT:只更新模型的一小部分参数,或者引入少量新的可训练参数,冻结预训练模型的大部分参数,有效保留了模型在预训练阶段学到的通用知识,从而显著降低灾难性遗忘的风险;
-
Multi-task Learning:将多个相关任务的数据混合在一起进行训练,让模型到更通用的特征,防止对特定任务过拟合;
-
Knowledge Distillation:将原始的 LLMs 作为“教师模型”,微调后的模型作为“学生模型”。在微调时,学生模型不仅要学习新任务任务,还要学习教师模型的输出分布(soft label),从而保留教师模型的通用知识。
23、什么是 PEFT? 它为何有用?
参数高效微调(Parameter-Efficient Fine-Tuning, PEFT) 是一种在 LLMs 微调方法,仅更新少量模型参数或引入少量额外参数。核心思想是:在 LLMs 已经通过预训练掌握了丰富的通用知识的情况下,不需要重新训练所有参数来适应特定任务,只需对模型进行“小修小补”即可。
PEFT 非常好用,主要体现在以下几个方面:
- 降低计算需求:只更新或引入少量参数(通常只占总参数的 0.01% 到 1%),大幅降低了对显存和计算能力的需求,大幅降低了 LLMs 研究和部署的门槛;
- 缓解灾难性遗忘:由于冻结了预训练模型的大部分参数,有效保留了模型的通用知识,减少灾难性遗忘的风险,使模型在适应新任务的同时,能保持较强的泛化能力;
- 加速训练:PEFT 需要训练的参数量大大减少,训练速度比全参数微调快得多,大大缩短了实验周期和模型迭代时间;
- 提高存储和部署效率:微调后的模型只需要存储额外训练的少量参数,使得微调后的模型文件显著减小,方便存储、传输和部署。在部署时,只需要加载原始的冻结模型和少量的 PEFT 参数,就可以实现定制化的功能;
- 更好的性能表现:虽然只更新少量参数,但 PEFT 能更有效地利用预训练模型已经学到的强大表示能力,使它们在许多下游任务上可以达到甚至超越全参数微调的性能。
24、Prompt engineering 与微调有何不同?
Prompt Engineering(提示工程) 和微调(Fine-tuning) 是两种用于调整 LLMs 以适应特定任务的不同方法,它们在成本、灵活性、效果和应用场景上存在显著差异:
特性 | Prompt Engineering | Fine-tuning |
---|---|---|
定义 | 通过精心设计输入提示(prompt)来引导LLM生成所需输出 | 在现有预训练模型的基础上,使用特定数据集进行额外训练 |
成本 | 低:无需额外的模型训练或大量计算资源 | 高:需要大量的计算资源(GPU)、时间和数据 |
灵活性 | 高:可以快速迭代和修改提示,无需重新训练模型 | 低:每次更改都需要重新训练模型 |
数据要求 | 低:通常只需要少量示例或无需额外数据,通过上下文学习即可 | 高:需要大量高质量、任务特定的标注数据 |
模型修改 | 无:不改变模型的内部参数或结构,只是改变输入 | 有:改变模型的内部参数,使其适应特定任务 |
效果 | 对于模型已经具备相关知识的任务效果良好,泛化能力可能有限 | 在特定任务上通常能达到更好的性能和专业化能力 |
复杂性 | 相对简单,主要依赖于创造性和经验,但也可能需要多次试验 | 复杂,涉及数据准备、模型训练、超参数调优等 |
典型应用 | 文本生成、问答、摘要、翻译等通用任务,上下文学习 | 情感分析、特定领域问答、代码生成、法律文本分析等专业化任务 |
实现方式 | 优化输入文本、添加上下文、few-shot示例、链式思考等 | 全参数微调、LORA、Prefix-tuning、Instruction Tuning 等 |
总的来说:
- 提示工程更像是 “与模型对话”,通过改变“问题”来引导模型给出更好的结果,它不改变模型的内在知识,适用于模型已经具备相关能力,但需要更精准输出的场景;
- 微调更像是 “给模型上课”,通过额外的训练让模型学习新知识、适应新场景,适用于模型需要掌握特定领域知识,或在特定任务上达到更高专业水平的场景。
在实际应用中,通常是将提示工程和微调相结合起来:先通过微调让模型掌握特定领域的知识或能力,再通过提示工程来引导微调后的模型生成更精确的输出。
25、Learning rate 在微调 LLMs 中的作用是什么?
学习率(LR) 是深度学习中一个重要超参数,决定了模型在每次参数更新时沿着梯度方向前进步长的大小。
在微调 LLMs 时,学习率主要作用有:
控制参数更新的步长:
- LR 直接决定了模型在每次迭代中更新权重和偏差的幅度;
- 过大的 LR 可能会使模型在损失函数上“跳过”最优解,导致训练不稳定,甚至发散,表现为损失值震荡或不收敛;
- 过小的 LR 使参数更新缓慢,导致模型收敛速度非常慢,甚至陷入局部最优解。
影响微调过程的稳定性和收敛性:
- 在对 LLMs 微调时,通常建议使用较小的 LR。因为 LLMs 已经在一个庞大的数据集上进行了预训练,学习了大量的通用知识和语言模式。微调的目标是让模型适应特定任务,而不是从头开始学习。较大的 LR 可能会破坏预训练阶段学到的有用信息,导致灾难性遗忘;
- 较小的 LR 有助于模型在现有知识基础上进行精细调整,从而保持模型的稳定性和泛化能力。
避免灾难性遗忘(Catastrophic Forgetting): 较大的 LR 容易导致模型快速遗忘预训练阶段学到的通用知识。设置合适的(通常是较小的)LR,可以避免参数大幅度变化,从而在一定程度上缓解灾难性遗忘;
选择合适的 LR 是微调 LLMs 成功的关键之一,常见的起点是预训练学习率的十分之一或更小(如 、)。
评估与指标
26、如何评估 LLMs 的性能?
LLMs 应用场景非常广泛,其性能需要从多个维度来评估:
定量评估(Quantitative Evaluation):通过各种指标和数据集来衡量模型性能的客观方法
-
任务特定指标:根据 LLMs 的具体任务,会选择相应的评估指标
-
文本生成:BLEU, ROUGE, METEOR, BERTScore
-
文本分类:Accuracy, Precision, Recall, F1-score
-
问答系统:EM (Exact Match), F1-score
-
摘要:ROUGE
-
翻译:BLEU
-
通用语言理解能力:通过在各种基准测试集(GLUE、SuperGLUE等)上进行评估,来衡量模型对语言的综合理解能力;
-
困惑度(Perplexity):是衡量模型对文本建模好坏的一个重要指标
定性评估(Qualitative Evaluation):使用人工审查模型的输出,以评估其流畅性、连贯性、逻辑性、创造性以及是否符合人类预期。虽然主观,但对于捕捉定量指标难以衡量的问题至关重要,如模型是否会产生幻觉(hallucination)、是否存在偏见或不安全内容;
效率与资源消耗:在实际部署中,模型的推理速度、内存占用、计算成本也是重要的评估指标;
鲁棒性与泛化能力: 评估模型在面对噪声数据、对抗性攻击或未见过的数据时的表现,以及其在新领域或新任务上的泛化能力;
安全性和伦理问题: 评估模型是否存在偏见、歧视,是否会生成有害、不当或虚假内容,以及其对隐私的保护能力。
27、BLEU 分数是什么? 其局限性是什么?
BLEU (Bilingual Evaluation Understudy) 是一种用于评估机器翻译质量的度量指标。通过比较机器翻译的输出与一个或多个高质量的人工参考译文之间的重叠程度来计算分数:
BLEU 核心思想是衡量候选译文中的N-gram
在参考译文中出现的频率:
- Modified N-gram Precision: 对于每个
N-gram
(如n=1,2,3,4),计算其在候选译文中出现的次数与在参考译文中出现的次数的最小值之和,然后除以候选译文中该N-gram
出现的总次数; - BP(Brevity Penalty):为了避免模型生成过短的译文来获得高精度,对机器译文长度进行惩罚。
尽管 BLEU 广泛应用于机器翻译领域,但它存在一些显著的局限性:
- 只考虑词汇重叠,不考虑语义:BLEU 仅仅基于词语或短语的字面匹配,无法捕捉到语义上的相似性。即使两个句子表达了相同的意思,但使用了不同的词语,BLEU 分数也可能很低;
- 对同义词不敏感:如果机器译文使用了参考译文的同义词,BLEU 无法识别这种等价性,从而低估了翻译质量;
- 对语法和流畅性评估不足:BLEU 无法直接评估翻译的语法正确性或流畅度;
- 需要多个参考译文才能更准确: 为了提高评估的鲁棒性,通常需要提供多个高质量的人工参考译文。如果只有一个参考译文,可能会因为译文的多样性而导致 BLEU 分数偏低;
- 分数差异难以解释:两个 BLEU 分数之间的较大差异可能并不意味着翻译质量有显著差异,而较小差异也可能不完全反映人类感知的质量;
- 无法处理“幻觉”或不一致:BLEU 无法识别机器译文是否包含参考译文中没有的信息(幻觉),或者是否与原文不一致;
- 不适用于所有生成任务:尽管在翻译领域流行,BLEU 不适用于那些需要高创造性或多样性输出的任务。
在实际应用中,通常会将 BLEU 分数与其他评估指标(ROUGE、METEOR、BERTScore等)以及人工评估结合起来,以获得更全面和准确的机器翻译质量评估。
28、Perplexity 是什么? 它如何用于评估 LLMs?
困惑度(Perplexity, PPL) 是衡量 LMs 好坏的一个重要指标,尤其在预训练和 LMs 本身的评估中非常常用。PPL 衡量的是一个 LMs 预测样本序列的不确定性或困惑程度。
从数学上讲,PPL 是交叉熵的指数。给定一个测试语料库,一个 LMs 对这个语料库的 PPL 定义为:
其中, 是 LM 在给定前个词的情况下预测第个词的概率。
- 数值越低越好:PPL 越低,说明 LM 对测试语料的预测能力越强,模型对语言模式的学习越好;
- 相当于每个词的平均分支因子:可以将其理解为模型在每个决策点上平均有多少个“等可能”的下一个词的选择。如果困惑度是 100,意味着模型在预测下一个词时,平均有 100 个同样可能的选择。PPL 越低,模型在每个点上的不确定性越小。
PPL 主要用于评估 LLMs 的以下几个方面:
- 语言建模能力:PPL 是评估 LM 对语言本身建模能力最直接的指标。一个好的 LM 应该能够准确地预测下一个词,从而得到较低的 PPL。在 LLM 的预训练阶段,PPL 是衡量模型学习进度的关键指标;
- 衡量泛化能力:在一个未见过的测试集上计算 PPL,可以衡量模型对新数据的泛化能力。如果模型在训练集上 PPL 很低,但在测试集上很高,则可能存在过拟合;
- 模型改进的指标:在开发和迭代 LLM 时,会使用 PPL 来比较不同模型架构、训练方法或超参数调整的效果。PPL 的下降通常意味着模型性能的提升;
- 作为下游任务的代理指标: 如果一个 LLM 在 PPL 上表现出色,它在某些下游任务(如文本生成、摘要)上也可能表现良好。
29、评估 LLMs 的定性方法有哪些?
定性评估方法侧重于人工分析模型输出的质量、适用性和行为,对于量化指标难以捕捉的方面至关重要,常见的定性评估方法有:
人工评审(Human Evaluation):这是最直接和最权威的定性评估方法
- 自由形式反馈: 评估人员阅读模型的输出,并提供开放式的评论,指出优点、缺点、错误、不连贯之处、偏见或不当内容;
- 等级评分:评估人员根据预定义的标准(如流畅性、相关性、信息量、连贯性、安全性、真实性等)对模型输出进行评分。通常使用李克特量表(Likert scale)或更细致的分数;
- 偏好排序:在对比不同模型或不同版本模型时,评估人员被要求对多个模型的输出进行偏好排序;
- A/B 测试: 将不同模型的输出随机呈现给用户,并收集用户对各自体验的反馈,从而间接评估模型的性能。
错误分析(Error Analysis):深入检查模型失败的案例,找出其出错的模式和原因
- 幻觉分析:识别模型生成虚假信息、捏造事实或引用不存在来源的情况;
- 偏见分析:检查模型输出中是否存在刻板印象、歧视性语言或不公平的表示;
- 安全性和毒性分析:评估模型是否生成有害、冒犯性、仇恨言论或不当内容;
- 不连贯性/重复性分析:识别模型生成重复、不连贯或逻辑混乱文本的情况;
- 事实一致性分析:针对摘要或问答任务,检查模型输出是否与源文本的事实保持一致。
用户研究/可用性测试(User Studies/Usability Testing):让真实用户与 LLMs 驱动的应用程序进行交互,观察他们的行为、收集他们的反馈,了解模型在实际使用场景中的表现和用户体验;
案例研究(Case Studies):选择具有代表性或挑战性的特定输入,深入分析模型对这些输入的响应,以揭示模型的优势和劣势;
对抗性测试/越狱(Adversarial Testing/Jailbreaking):有意设计一些输入(“越狱提示”),试图诱导模型产生有害、不当或违背其设计意图的输出,有助于发现模型的脆弱性和安全漏洞;
可视化分析(Visualization Analysis):使用工具将模型的注意力机制、内部表示或输出模式可视化,帮助理解模型的工作原理和决策过程,从而发现潜在问题;
定性评估的挑战在于其主观性和耗时性,但它能提供定量指标无法比拟的洞察力,尤其是在评估 LLMs 的创造性、常识推理、道德和社会影响等方面。在实践中,通常会先进行初步的定量评估,然后辅以深入的定性分析来全面理解模型的性能。
30、LLMs 的 Intrinsic Evaluation 与 Extrinsic Evaluation 有何区别?
LLMs 的评估方法通常可以分为内在评估(Intrinsic Evaluation) 和 外在评估(Extrinsic Evaluation)。这两种方法从不同的角度衡量模型的性能,各有侧重。
Intrinsic Evaluation (内在评估)
内在评估是独立于特定下游任务,直接衡量语言模型自身的语言建模能力或通用语言理解能力的方法。它关注模型对语言本身的理解和生成能力,通常通过一些通用指标来衡量。
特点:
- 任务无关性:评估与模型的最终应用场景(下游任务)无关。
- 通常基于统计或概率:许多内在评估指标是基于模型对文本序列的概率分配或统计特性来计算的。
- 计算效率高:相对于外在评估,内在评估通常更容易自动化,计算成本较低。
- 提供基础性能洞察:能够快速判断模型在语言建模基础任务上的表现。
常见方法/指标:
- 困惑度 (Perplexity):衡量模型对测试语料的预测不确定性。
- GLUE/SuperGLUE 基准测试:包含一系列通用的自然语言理解任务(如情感分析、文本蕴含、问答等),用于评估模型在多种基础理解任务上的表现。
- 零样本 (Zero-shot) 或少样本 (Few-shot) 学习能力评估: 衡量模型在没有或只有少量训练示例的情况下,完成新任务的能力。
- 模型内部一致性/连贯性:虽然有点定性,但也可以通过分析模型对特定指令的响应一致性来衡量。
Extrinsic Evaluation (外在评估)
外在评估是将语言模型作为某个大型系统的一部分,通过衡量整个系统在特定实际应用任务上的性能来评估语言模型。它关注模型在实际应用场景中的实用性和效果。
特点:
- 任务相关性:评估与模型的具体应用场景(下游任务)紧密相关。
- 通常涉及端到端系统:模型被集成到真实的应用流程中,其性能由整个系统的最终输出决定。
- 通常更耗时耗力:需要构建完整的应用系统,进行用户测试或在真实环境中部署,成本较高。
- 直接反映实际价值:能够直接衡量模型在实际问题解决中的有效性。
常见方法/指标:
- 机器翻译(Machine Translation):使用 BLEU, ROUGE, METEOR, BERTScore 等指标评估翻译质量。
- 问答系统(Question Answering):使用 EM (Exact Match), F1-score 等评估回答的准确性。
- 文本摘要(Text Summarization):使用 ROUGE 等指标评估摘要的质量。
- 对话系统(Dialogue Systems):评估对话的流畅性、连贯性、相关性、信息量以及用户满意度(通常通过人工评估)。
- 情感分析(Sentiment Analysis):使用准确率、精确率、召回率、F1-分数等评估分类性能。
- 人工评估(Human Evaluation):在许多外在评估场景中,人工评估是必不可少的,尤其对于创造性或主观性较强的任务。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费
】
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。