【科普】大模型中常说的 SFT 是指什么?

大型语言模型(LLMs)的出现,在自然语言处理领域引发了变革性的影响。这些模型在理解和生成类似人类的文本方面展现出卓越的能力,为众多应用场景带来了新的可能性。通过对海量数据进行预训练,LLMs 获得了广泛的语言理解和知识。预训练赋予了 LLMs 学习语法规则、语言模式、事实信息和推理能力的基础。然而,尽管预训练模型具备通用性,但在处理需要特定领域知识或输出格式的专业任务时,其性能往往有所不足。这种通用能力与特定需求之间的差距,凸显了对 LLMs 进行定制化适配的重要性。监督式微调(Supervised Fine-Tuning,SFT)作为一种关键技术应运而生,它能够有效地将通用LLMs调整为能够胜任特定应用的专业模型。 概念与原理 监督式微调(SFT)指的是利用标注数据来调整预训练大型语言模型,使其适应特定的下游任务的过程。在SFT中,“监督式”强调了对标注数据的依赖,这些数据包含了输入和期望输出之间的明确对应关系,用于指导模型的学习。SFT 是一个监督学习的过程,它使用这些标注的例子(通常是提示-响应对)来更新 LLM 的权重。模型通过比较其预测结果与标注数据中的真实标签之间的差异来学习,并调整其内部参数以最小化这种差异。高质量、结构良好的标注数据对于有效的 LLM 监督式微调至关重要。与使用未标注数据进行预训练不同,SFT 利用经过验证的标注数据进行任务特定的优化。SFT 可以被视为一种迁移学习的形式,它利用预训练阶段获得的知识来解决新的、特定的任务。这种方法使得模型能够基于已有的语言理解能力,更快地适应新的任务需求,而无需从零开始学习。 SFT 的步骤 监督式微调通常包含以下几个关键步骤: 步骤一:准备数据集 首先需要选择或创建一个高质量、任务特定的标注数据集。该数据集应与预期任务高度相关,并包含涵盖各种场景和极端情况的丰富示例。每个示例通常包含输入数据(例如,文本提示)和期望的输出(例如,响应或标签)。为了进行有效的模型训练和评估,数据集通常需要被划分为训练集、验证集和测试集。此外,确保数据的质量至关重要,包括数据的清洁度(去除重复、不一致或无关的条目)、代表性(覆盖所有变体和边缘情况)以及平衡性(避免数据偏斜)。 步骤二:调整模型 加载预训练的LLM(基础模型)是微调过程的开始。选择与目标任务和领域相符的预训练模型至关重要。然后,模型会根据标注数据集中的数据,使用监督学习技术(例如,梯度下降)更新其参数(权重)。在这个过程中,模型会调整其内部参数,以最小化其预测与期望输出之间的差异,从而学习特定任务的模式和细微差别。超参数调优也是一个重要的环节,需要调整学习率、批大小、训练轮数等参数,以获得最佳的性能。 步骤三:验证与测试 在微调过程中,需要使用验证集评估模型的性能,以防止过拟合。通过监控验证集上的损失和准确率等指标,可以帮助确定何时停止训练(早停法)。最后,使用测试集对微调后的模型进行最终评估,以评估其在新数据上的泛化能力。测试集提供了一个无偏的评估,展示了模型在真实世界数据中的预期表现。 步骤四:迭代与优化 监督式微调通常是一个迭代的过程,可能需要多次调整超参数或数据集,并进行多轮的微调,以达到最优的结果。分析评估结果,找出模型需要改进的方面,并重复上述步骤,可以进一步提升模型的性能。 SFT 的优势 选择监督式微调有诸多益处:SFT 能够显著提升模型在特定任务和领域上的性能。通过学习任务特定的模式和细微差别,模型能够产生更准确和相关的输出。SFT 还有助于模型更好地理解领域特定的术语和上下文。经过微调的模型能够提供更自然、更符合用户期望的响应,从而改善用户体验。此外,SFT 能够提高效率,减少对人工校正的需求。微调后的模型通常可以扩展到处理不同项目或领域的类似任务,成为一种可重用的资产。与从头开始训练 LLM 相比,SFT 可以显著缩短训练时间和降低计算资源需求。SFT 还能够有效利用预训练模型已经获得的广泛知识,实现更高效和有效的学习(迁移学习的优势)。通过 SFT,开发者可以将单个基础模型调整用于多个不同的领域。 SFT 的技术概览 监督式微调有多种技术可以采用: 指令微调(Instruction Fine-Tuning):这种方法通过使用示例来训练模型,这些示例展示了模型应该如何响应特定的指令或查询。指令微调旨在提高模型遵循用户指令的能力,并使其能够更好地泛化到新的指令上。训练数据通常包含输入(指令)、可选的上下文以及期望的输出。 参数高效微调(Parameter-Efficient Fine-Tuning,PEFT):PEFT技术通过仅更新模型参数的一小部分,来显著降低计算和内存需求。例如,低秩自适应(Low-Rank Adaptation,LoRA)和量化低秩自适应(Quantized LoRA,QLoRA)是常用的PEFT技术。其他PEFT方法还包括Adapter、Prompt Tuning和Prefix Tuning等。PEFT的优势在于降低了成本、加快了训练速度、减少了存储需求并有助于缓解灾难性遗忘。 全量微调(Full Fine-Tuning):全量微调是指在任务特定的数据集上更新预训练模型的所有权重。相比PEFT,全量微调需要更高的计算成本和资源。虽然全量微调可能带来更高的准确率,但也增加了过拟合和灾难性遗忘的风险。 层冻结(Layer Freezing):层冻结是一种策略,它冻结模型的部分层(通常是捕获通用知识的早期层),而只训练任务特定的层。这种方法可以降低计算需求,并防止模型遗忘预训练阶段学到的知识。 SFT 的应用场景 监督式微调在各个行业都有广泛的应用潜力: 聊天机器人与对话式AI:SFT能够提高客户服务和内部工具的准确性、上下文感知能力和品牌一致性。通过在客户服务记录、常见问题解答和知识库文章上进行微调,聊天机器人可以提供更相关和准确的响应。SFT还有助于处理复杂的查询和多轮对话。此外,通过在具有特定风格的数据上进行微调,可以控制聊天机器人的对话语气和风格。 文本生成与内容创作:SFT可以提高生成内容的领域相关性和准确性。通过在不同风格的数据上进行训练,模型可以适应特定的写作要求(例如,技术性、创造性、正式)。SFT还可以显著提升文档、文章和对话的摘要生成能力。 代码生成:SFT能够提高生成代码的准确性、效率和可读性。通过在代码数据集上进行微调,模型可以学习特定编程语言的语法、编程模式和最佳实践。SFT还可以使模型适应特定的编程语言和编码风格。 特定领域应用: 医疗保健:SFT可以用于分析医学文献、提取患者记录信息、改进诊断辅助系统。 金融:SFT可以用于金融新闻的情感分析、风险评估和欺诈检测。 法律:SFT可以用于理解法律术语、总结合同和法律讨论。 SFT 的挑战与考量 尽管SFT带来了诸多优势,但在实践中也存在一些挑战和需要考虑的因素: 数据质量与可用性:高质量、标注良好的数据对于有效的SFT至关重要。尤其是在利基领域,获取足够的标注数据可能是一个挑战。数据收集和标注的成本和时间也需要考虑。此外,训练数据中的偏差可能会对微调后的模型产生不利影响。 过拟合(Overfitting):模型可能过度适应训练数据,导致在未见过的数据上表现不佳。为了缓解过拟合,可以采用多种策略,例如使用多样化的数据集、限制训练迭代次数、使用正则化技术、进行交叉验证以及监控模型性能。 灾难性遗忘(Catastrophic Forgetting):在适应新任务的过程中,模型可能会遗忘之前学习到的知识。解决这个问题的方法包括多任务微调、参数高效微调和回放机制等。 超参数调优(Hyperparameter Tuning):寻找最优的学习率、批大小和其他超参数可能非常复杂。 计算成本(Computational Cost):微调大型模型,尤其是进行全量微调,需要大量的计算资源。 评估 SFT 性能的关键指标 评估监督式微调的成功与否,需要使用适当的评估指标:...

March 27, 2025 · 1 min · fisherdaddy

【科普】大模型应用的回复为什么是打字机的效果?

用户在使用由大模型驱动的应用时,例如ChatGPT(OpenAI)、Gemini(Google)、Deepseek、豆包(字节)和元宝(腾讯),常常会注意到一种引人入胜的“打字机效果”。文本似乎是一个字一个字(更准确地说,是一个token一个token)地逐渐显现,营造出一种类似人类实时打字的互动感和模型以人类似的方式即时生成响应的印象。虽然这种效果在用户界面上增强了交互体验,但它并非仅仅是一个视觉上的技巧,而是 大模型(LLM)底层文本生成方式的直接体现。 语言的基本单元——Token 要理解 LLM 如何产生这种“打字机效果”,首先需要认识到这些模型并非像人类那样直接处理词语,而是以更细粒度的单位——“token”为基础进行操作。文本可以按照不同的粒度进行切分和表示,这个过程称为 tokenization。之前写过一篇科普的文章《大模型中常说的 token 和 Tokenizer 是指什么?》专门介绍过这个知识,这里再稍微讲一下。 常见的 tokenization 方法包括:词语级别、字符级别和子词级别。词语级别的 tokenization 是最直观的方法,它根据空格和标点符号将文本分割成单独的词语。例如,“The quick brown fox jumps.”会被分割成。字符级别的 tokenization 则将文本中的每一个字符(包括字母、数字、空格和标点符号)都视为一个独立的 token。对于同样的句子,字符级别的 tokenization 会产生。 在现代LLM中,子词级别的 tokenization 是一种更为复杂且广泛应用的技术。这种方法旨在平衡词语级别和字符级别 tokenization 的优缺点,将词语分解成更小但更频繁出现的单元。例如,“unbreakable”可能会被分解成[“un”, “break”, “able”]。在子词tokenization的技术中,字节对编码(Byte-Pair Encoding, BPE)被包括 OpenAI、Gemini和 Deepseek 在内的许多主流 LLM 所采用。BPE 的优势在于能够有效地处理罕见词或词汇表外的词语,通过将它们分解成已知的子词来表示,同时还能减小模型的整体词汇量。在使用 LLM 时,用户输入的文本(即prompt)首先会经过 tokenization 处理,转换成模型能够理解的数字 token 序列。同样地,LLM 生成的输出也是一个 token 序列,需要通过 detokenization 的过程转换回人类可读的文本。 因此,用户所观察到的“打字机效果”本质上是这些生成的 token 被顺序地呈现或揭示的过程。根据 LLM 所采用的具体 tokenization 策略,在“打字”的每一个步骤中出现的可能是一个完整的词语、一个词语的片段(子词)甚至是单个字符。理解这一点对于解读模型的可视化输出至关重要。值得注意的是,由于不同的 LLM 可能使用不同的 tokenization 方法和维护着各自独特的 token 词汇表,因此在不同的平台之间可能会观察到“打字机效果”在粒度和视觉呈现上的细微差异。例如,一个模型可能倾向于以较大的文本块(完整的词语或频繁出现的子词)进行“打字”,而另一个模型由于采用了不同的 tokenization 策略,可能会呈现出更接近于逐字符出现的效果。另外,由于底层模型的输出直接与前端交互可能存在安全隐患问题,如暴露 API 密钥,通常采用“双重流式传输”模式,也就是 LLM 将数据流式传输到后端,然后后端再将数据重新流式传输到前端,大家最终看到的“打字机效果其实并不能真实的反映出底层 LLM 的 tokenization 策略。...

March 17, 2025 · 2 min · fisherdaddy

【科普】大模型中常说的参数是指什么?

近年来,大型语言模型(Large Language Models,LLMs)以前所未有的速度发展,深刻地改变了人工智能的格局,并日益融入我们日常生活的方方面面。从智能助手到内容创作和代码生成,大语言模型展现出强大的能力。这些模型已经从科研实验室走向实际应用,成为各种技术产品中不可或缺的组成部分,其重要性和影响力正持续扩大。 当我们谈论大语言模型时,“大”这个字不仅仅指它们所学习的海量数据,更在于其内部庞大的变量,我们称之为“参数”。正是这些数量巨大的参数,赋予了模型理解和生成人类语言的能力。例如,DeepSeek 的模型拥有高达 6710 亿个参数,Qwen 的模型参数量也达到了 140 亿,而一些较小的模型则拥有约 5 亿个参数。这些数字上的巨大差异暗示着参数规模对模型的能力和资源需求有着显著的影响。 什么是“参数”? 要理解大语言模型中的“参数”,首先需要了解它们所基于的底层技术:深度学习和人工神经网络。人工神经网络是一种受人脑结构和功能启发的计算系统。人脑由数以亿计的神经元相互连接构成,而人工神经网络则是由大量相互连接的计算单元(通常称为节点或神经元)组成,这些节点被组织成多个层次,包括输入层、隐藏层和输出层。 在大语言模型的语境下,“参数”指的是神经网络内部的变量,这些变量在模型的训练过程中被调整,以学习数据中的关系。这些参数主要包括以下两种类型: 权重 (Weights): 权重是分配给不同层级节点之间连接的数值,它们表示该连接在影响模型输出时的强度或重要性。权重的大小决定了前一层神经元的输出对下一层神经元的影响程度,通过调整这些权重,模型能够学习到训练数据中的复杂模式。 偏置 (Biases): 偏置是添加到神经元加权输入总和中的常数值。偏置允许激活函数在输入为零时也能被激活,为模型的学习提供了额外的自由度,使其能够学习更复杂的函数关系。 模型的训练过程本质上是一个不断调整这些参数的过程。通过分析大量的训练数据,模型会逐步调整其内部的权重和偏置,以最小化预测结果与真实结果之间的差异 . 想象一下,这些参数就像一个复杂机器上的无数个微调旋钮 。通过对这些旋钮进行精确的调整,机器(模型)才能更好地完成其任务。参数的值在训练结束后就被固定下来,它们实际上编码了模型从数据中学到的“知识” 。因此,参数的数量越多,模型能够学习和存储的语言模式和复杂关系就越丰富。 这里借用一下 OpenAI 前创始人、特斯拉前 AI 总监 Andrej Karpathy 大模型科普视频中的一个例子:Meta 开源的 Lama2 70B模型,可以被精简地理解为电脑文件系统目录中的两个核心文件:一个参数文件以及一个运行代码文件。 在这个模型中,每个参数都采用16位浮点数(即2个字节)来存储,累计起来,这个参数文件的体积达到了140 GB。这一数字不仅反映了模型的复杂性,也预示着其强大的处理能力。 接下来是运行代码文件,这部分可能令人意外地简洁,大约 500 行的 C 语言代码便足以实现整个神经网络的结构。然后我们将代码文件进行编译,并链接上参数文件,那么就形成了一个完整的 Llama2 70B 大模型。 规模的重要性:理解模型大小中的“B” 当我们谈论像 Qwen-14B 或 DeepSeek-671B 这样的大型语言模型时,其中的“B”代表的是“Billions”,即十亿 。这个字母清晰地表明,这些模型的参数数量级已经达到了非常惊人的程度。例如,谷歌发布的 Gemma 模型拥有 70 亿参数,这个数量几乎等同于全球人口。通常来说,模型拥有的参数越多,其学习复杂模式的能力就越强,从而能够更好地理解和生成更复杂的文本,并在各种语言任务中表现出更高的性能 。 值得注意的是,随着模型参数数量的增加,有时会出现所谓的“涌现能力” 。这意味着当模型的规模超过某个阈值时,它可能会突然展现出一些在较小模型中从未出现过的能力,例如进行更高级的推理、理解更抽象的概念,甚至执行一些它在训练过程中没有被明确指示要完成的任务。然而,模型规模的扩大也带来了挑战,例如训练和运行这些模型需要巨大的计算资源,并且需要更多的数据来有效地训练,以避免过拟合 。过拟合指的是模型在训练数据上表现非常好,但在面对新的、未见过的数据时性能却显著下降。 DeepSeek 的 671B 参数 DeepSeek-V3 是由中国人工智能初创公司 DeepSeek 开发的先进大语言模型,其参数量高达 6710 亿。如此庞大的规模使得 DeepSeek-V3 在数学、编码和复杂推理等具有挑战性的任务上,能够达到与 OpenAI 的 GPT-4 和 Anthropic 的 Claude 3 等领先的专有模型相媲美的性能。...

March 17, 2025 · 1 min · fisherdaddy

【科普】大模型中常说的 Prompt Caching 是指什么?

近年来,大型语言模型(LLMs,Large Language Models)在自然语言处理领域取得了显著的进展。然而,这些模型通常具有庞大的参数量和计算复杂度,导致推理过程(即根据输入生成输出的过程)耗时且昂贵。缓存是一种常见的计算机技术,其核心思想是将计算结果或数据临时存储起来,以便后续重复使用,从而避免重复计算或数据访问,提高效率。在大模型中,缓存的原理也类似,只不过存储的内容和应用场景更加复杂。 在大型语言模型中提到的缓存(Caching),并不是直接缓存 system_prompt 或 user_prompt 的文本内容,而是缓存模型在计算过程中生成的中间计算结果,尤其是 Transformer 模型中的 键值向量(Key-Value Vectors,KV Cache)。不过,当输入的文本有相同前缀时,可以利用缓存避免重复计算。 1. 缓存的核心:键值向量(KV Cache) 在 Transformer 的自注意力机制中,每个词元(Token)会生成一对向量: Key(K):用于计算其他词元对它的关注程度。 Value(V):存储该词元的语义信息。 缓存的作用: 在生成文本时(例如逐词生成回答),模型会将已生成词元的 K 和 V 向量存储下来。当生成下一个词元时,直接复用这些历史向量,避免重新计算。 2. 前缀匹配与缓存复用 当用户输入的提示(Prompt)有相同的前缀时,模型可以利用缓存快速处理。 例如: 用户输入1: "法国的首都是哪里?法国的美食有哪些?" 用户输入2: "法国的首都是哪里?德国的首都是哪里?" 假设模型已经处理过 用户输入1 的前缀 "法国的首都是哪里?",那么处理 用户输入2 时: 发现前缀 "法国的首都是哪里?" 和之前相同。 直接复用此前缀对应的 KV 缓存,无需重新计算这一部分的 K 和 V 向量。 只需计算新增部分 "德国的首都是哪里?" 的向量。 3. 具体例子 假设用户连续两次提问: 第一次提问: System Prompt: "你是一个百科全书助手。" User Prompt: "爱因斯坦提出了什么理论?" 模型行为: 计算 System Prompt 和 User Prompt 的所有词元,生成对应的 K 和 V 向量,并缓存。...

March 12, 2025 · 1 min · fisherdaddy

【科普】大模型中常说的 token 和 Tokenizer 是指什么?

在大语言模型(LLM)日益普及的今天,我们往往关注模型的参数、结构和预训练数据,但实际上,支撑这些模型顺利理解和生成语言的一个重要环节——Tokenizer,常常被人忽视。本文将带你了解大模型中 Tokenizer 的基本概念、常见技术以及它在模型性能和效率中的关键作用,同时力求既不流于表面,也不陷入晦涩难懂的技术细节。 token 和 Tokenizer 是什么? 简单来说,Tokenizer 就是将连续的文本拆分成模型能处理的基本单位——Token 的工具,而 “token” 是模型理解和生成文本的最小单位。对于计算机来说,处理原始文本是非常困难的,因此我们需要一个中间层,把文字转换为一系列的数字序列(即,一个个离散的 token),这些 token 既可以是单个字符、词语,也可以是子词(subword)。而这个转换过程正是由 Tokenizer 完成的。 在传统的自然语言处理中,我们可能直接按照单词或字符来分割文本;而在大模型中,常见的方法则是采用子词级别(subword-level)的分割方式。这种方式既能保证足够细致(能够捕捉到拼写变化、罕见词等信息),又不会使得词表过大,进而影响模型的效率和泛化能力。 在中文中,token 通常是单个汉字(或者在某些情况下是常见词汇)。 在英文中,token 通常是一个词或单词的一部分,平均而言大约 4 个字符或 0.75 个单词,但具体拆分方式依赖于采用的 tokenizer 算法。 Tokenizer 的主要方法 目前大模型常用的 Tokenizer 方法主要包括: Byte-Pair Encoding (BPE) BPE 是目前最流行的子词分词算法之一。其核心思想是:从最基本的字符开始,不断将在训练语料中频繁共现的字符或子串合并为一个新的 Token,直到达到预设的词表大小。这种方式能够灵活处理词汇稀缺问题,同时对英文这种单词之间有明显分隔的语言效果很好。 SentencePiece SentencePiece 算法则不依赖于空格分词,适合处理中文、日文等没有明显分词边界的语言。它同样采用子词或字节级别的编码方式,保证了不同语言之间的一致性。由于其不依赖传统分词规则,因此在多语种模型中得到了广泛应用。 其他创新方法 近年来,随着大模型规模的不断扩大和应用领域的拓展,关于如何更好地进行 Tokenization 的研究也不断涌现。例如,有学者提出结合认知科学“最省力原则”构建更高效的 Tokenizer;也有工作探讨利用自适应的“Learn Your Tokens”策略,根据输入自动学习最优的分词单元。尽管这些方法尚处于探索阶段,但都表明 Tokenizer 的设计对模型的最终性能具有不容忽视的影响。 Tokenizer 对大模型的影响 模型训练效率 在大模型的训练过程中,Tokenizer 决定了输入序列的长度和词表大小。分词粒度过细(例如仅按字符分割)虽然能覆盖所有细节,但会导致序列变得冗长,使得 Transformer 中自注意力机制的计算复杂度呈平方级增长,从而大大增加训练时间和资源消耗;而分词粒度过粗(直接按单词分割)又可能无法有效处理罕见词或新词。因此,子词分词方法(如 BPE 和 SentencePiece)正好在二者之间取得了平衡,不仅能减少序列长度,还能保持语义信息。 模型效果与泛化能力 一个精心设计的 Tokenizer 不仅有助于训练速度,还能提升模型在下游任务中的表现。良好的 Tokenizer 能够保证同一语义在不同上下文下尽量映射到相似的 Token 序列,从而使模型更容易捕捉到语言中的规律和细微差别。反之,不合理的分词方式可能会使模型“误解”文本信息,导致输出不连贯甚至产生幻觉。 多语言和特殊场景 对于多语言大模型来说,如何构造一个既能覆盖英文又能适应中文、日文等其他语言的 Tokenizer,是一个具有挑战性的问题。研究表明,多语种 Tokenizer 往往需要更大的词表来处理不同语言的字符和词汇,但词表过大又可能影响模型效率。因此,如何在覆盖率与高效性之间取得平衡,是 Tokenizer 设计的重要课题。...

February 19, 2025 · 2 min · fisherdaddy

【科普】人工智能中的“量化”,到底是什么?

在人工智能蓬勃发展的今天,深度学习模型已经在图像识别、自然语言处理和自动驾驶等领域取得了令人瞩目的成绩。然而,随着模型规模不断增大,如何在保证模型性能的同时降低计算资源和能耗,成为了研究者和工程师们面临的重要课题。量化(Quantization)技术正是在这一背景下应运而生,并在实际应用中发挥了巨大作用。本文将带你深入了解人工智能中的量化技术,探讨它的原理、优点以及所面临的挑战。 什么是量化? 量化,顾名思义,就是将连续的数值转换为有限的、离散的数值集合。在计算机系统中,数据通常以二进制形式存储和处理。传统的深度学习模型中,神经网络的参数(如权重和激活值)通常使用 32 位浮点数(float32)表示,这样既能保证计算精度,也便于训练和优化。但在模型推理(Inference)阶段,对于一些对精度要求没有那么高的场景,我们可以用更低位数的数据来表示这些参数,这就是量化技术的基本思想。 1. 高精度浮点数 数据类型 位宽 符号位 指数位 尾数位 存储占用 主要特点 FP64(双精度) 64 1 11 52 8 字节 超高精度,适用于科学计算,存储和计算成本高 FP32(单精度) 32 1 8 23 4 字节 计算精度和存储占用均衡,深度学习主流格式 FP16(半精度) 16 1 5 10 2 字节 存储占用更低,适用于加速推理和混合精度训练 bfloat16 16 1 8 7 2 字节 与 FP32 共享相同指数位,训练稳定性更强 2. 低精度整数 数据类型 位宽 符号位 数值范围 存储占用 主要应用 int8 8 ✅ -128 ~ 127 1 字节 量化神经网络,提高推理速度,降低功耗 uint8 8 ❌ 0 ~ 255 1 字节 适用于正数数据的量化,提高数值范围 int16 16 ✅ -32,768 ~ 32,767 2 字节 需要更大范围整数时使用,深度学习较少用 int4 4 ✅ -8 ~ 7 0....

February 6, 2025 · 2 min · fisherdaddy

【科普】人工智能中的“知识蒸馏”,到底是什么?

随着 DeepSeek R1 的爆火,知识蒸馏这一人工智能中常用的技术进入大众视野。本篇面向对人工智能和机器学习感兴趣的初学者的科普性文章,主题聚焦于当前深度学习领域中被广泛应用的「知识蒸馏(Knowledge Distillation)」技术,希望能帮助读者快速了解它的概念、作用以及应用场景。 什么是知识蒸馏? 在深度学习的发展过程中,模型的规模(参数量)越来越大,性能也随之提升。然而,大模型在带来卓越性能的同时,往往也伴随着体积庞大、推理速度较慢、对硬件资源要求较高等问题。为了让深度学习模型在更广泛的场景中应用,人们提出了多种模型压缩技术,而「知识蒸馏」就是其中的一种。 知识蒸馏最早由 Hinton 等人在 2015 年提出(Hinton 被誉为AI 教父,同时获得了图灵奖和诺贝尔奖,也是 OpenAI 前首席科学家兼创始人 Ilya Sutskeve 的导师),其核心思想是:将一个性能很强但体积庞大的「教师模型(Teacher Model)」所学习到的“知识”提炼出来,再教给一个较小且更轻量的「学生模型(Student Model)」,使得学生模型既能保持较好的性能,又显著降低模型大小和推理成本。 可以把知识蒸馏比作一位优秀教师将自己的知识精华传授给学生的过程。教师模型经过大量数据的训练,具备了很强的表达能力和预测精度,但它通常拥有成百上千亿的参数,体积庞大且计算消耗高。而学生模型则采用简化的网络结构,虽然参数较少,但通过“模仿”教师模型的行为,能够达到相近的效果,从而大幅降低计算资源的需求。 传统的教学方式是直接告诉学徒“标准答案”(硬标签,Hard Label),例如,告诉他“这张图片是猫”、“这句话是肯定的”。 但你作为经验丰富的老师,知道仅仅知道“答案”是不够的,更重要的是理解“为什么是这个答案”以及“其他可能的答案是什么”。 知识蒸馏就像一种更高级的教学方式。 它不仅仅传递“标准答案”,更重要的是传递老师模型在学习过程中获得的**“软标签 (Soft Label)”**,也就是模型对各种可能性的“思考”和“概率分布”。 举个例子: 假设我们训练了一个强大的图像识别模型(教师模型)来识别猫和狗。 当给它一张猫的图片时,教师模型可能不会简单地输出“猫”这个答案,而是会给出这样的概率分布: 猫: 95% 狗: 4% 其他动物: 1% 这个概率分布就包含了丰富的信息: 高概率的“猫”: 这是正确答案,表示模型高度确信这张图片是猫。 较低概率的“狗”: 表示模型也考虑过“狗”的可能性,但认为可能性较低。 极低概率的“其他动物”: 表示模型几乎排除了其他动物的可能性。 这些概率分布,就是“软标签”。 它比仅仅给出“猫”这个“硬标签”包含了更多的信息,体现了教师模型更深层次的理解和判断。 简单来说,知识蒸馏的过程包括: 训练教师模型: 首先,我们训练一个强大的、性能优越的模型作为教师模型。这个模型通常体积较大、参数较多,能够学习到丰富的知识。 生成软标签: 教师模型不仅给出最终的分类结果,还能输出一个反映各类别概率分布的“软标签”。这些软标签揭示了类别之间的细微关系,比传统的硬标签(例如 0 与 1)包含更多信息。 训练学生模型: 利用相同的数据,同时使用教师模型输出的软标签和原始的硬标签,训练出一个结构轻巧但性能优秀的学生模型。 模仿学习: 学生模型通过模仿教师模型的“思考方式”(软标签),学习到教师模型更深层次的知识和泛化能力。 知识蒸馏的原理 软标签与温度参数 在传统的分类任务中,模型输出经过 softmax 层后,会将每个类别的得分转化为概率。知识蒸馏中,通过引入一个温度参数 T 来调整 softmax 的输出分布。当温度 T 较高时,输出分布会变得更加平滑,弱化“自信”预测,使得学生模型能够捕捉到教师模型对各类别之间相似性的信息。这就好比老师在授课时适当放慢节奏,让学生更容易理解各知识点之间的联系。...

February 6, 2025 · 1 min · fisherdaddy