|
当前通用的预训练模型在面对特定领域或任务时,往往存在一定的局限性。为了使模型更好地适应特定需求,领域自适应成为了关键技术,而 Fine-Tuning(微调)则是其中一种重要的方法。今天我们一起来了解一下 Fine-Tuning。 
一、Fine-Tuning 的基本原理(一)Transformer 架构基础大多数先进的 LLMs 基于 Transformer 架构,这一架构自 2017 年被提出后,凭借其独特的 “注意力” 机制,在自然语言处理领域取得了突破性进展。Transformer 架构由编码器和解码器两个主要模块组成。编码器专注于将自然语言语义转换为上下文相关的向量表示,适用于分类、命名实体识别和语义搜索等任务;解码器则通过训练预测下一个词元,能够以递归方式生成文本,常用于文本生成任务。在 Fine-Tuning 中,我们主要关注解码器模型,因为它们在生成式人工智能中占据重要地位。 (二)Fine-Tuning 的流程数据收集与选择
Fine-Tuning 的数据来源广泛,包括文档库、人工创建内容等。对于特定领域的微调,数据质量至关重要,需要考虑数据的准确性、完整性、相关性等因素。同时,还需关注数据的保密性、知识产权、许可协议、版权和个人可识别信息(PII)等方面。 训练数据集可分为无标签和有标签(包括偏好数据)两类。领域自适应微调通常需要无标签文本数据,如用户手册、内部文档或法律合同等。而有标签数据集,如指令 - 上下文 - 响应数据集,可用于监督微调方法。近年来,强化学习方法利用人类或机器创建的偏好数据(如二进制反馈或多响应排名)来对齐模型与实际用户反馈,取得了良好效果。但收集有标签数据往往更困难、昂贵,尤其是在大规模和具有足够领域专业知识的情况下。
数据预处理 模型训练 二、Fine-Tuning 的应用场景(一)领域自适应以生物技术领域为例,通用的预训练 LLMs 在处理 COVID - 19 疫苗研究相关任务时可能表现不佳,因为其预训练数据中来自该领域的比例较低。通过 Fine-Tuning,可以将领域特定的知识(如专业术语、行业特定缩写等)注入模型,扩展模型的 “舒适区”,提高其在特定任务上的性能。例如,使用生物技术领域的研究论文和相关文献进行持续预训练(Continued Pre - training,也称为领域自适应微调),使模型能够更好地理解和处理该领域的语言和知识。 (二)任务特定优化监督微调(SFT)
人类在解决问题时往往希望模型具备聊天或指令遵循等能力,而不仅仅是简单的文本完成。监督微调通过在有标签数据集上训练,使模型能够根据特定任务需求调整其行为。例如,在训练模型进行问答、数据提取(如实体识别)或防止有害响应(红队测试)等任务时,SFT 能够让模型更好地理解任务目标,产生更准确的输出。 以使用 “dolly - 15k” 数据集对模型进行指令遵循训练为例,将数据集中的每个指令 - 上下文 - 响应示例转换为特定的提示模板,然后进行预处理和训练。这样,模型就能学会根据提示中的指令进行准确响应,满足特定任务的要求。
人类偏好对齐技术 之前的微调方法所使用的数据往往是对用户需求的近似估计,而人类偏好对齐技术旨在将实际用户反馈纳入模型训练,以提高模型与用户期望的一致性。 强化学习从人类反馈(RLHF)与近端策略优化(PPO):这一方法分两步进行。首先,训练一个奖励模型,通过向模型提供提示数据集,获取多个推理结果并由人类标注者评分,基于此训练奖励模型。然后,使用奖励模型来调整实际模型的权重,通过近端策略优化算法,使模型的回答能够最大化奖励。同时,为了防止模型行为在训练过程中过度漂移,还会添加预测偏移惩罚项。 直接策略优化(DPO):DPO 是 RLHF 的一种替代方法,它跳过了奖励模型的训练,直接在偏好数据上调整最终的偏好对齐 LLM。通过对奖励模型参数化进行数学转换,将其转化为损失函数,并使用偏好数据上的概率值替代实际奖励值,从而节省了计算和算法复杂性。 卡尼曼 - 特沃斯基优化(KTO):KTO 基于卡尼曼和特沃斯基的前景理论,通过定义一个奖励函数来捕捉生成结果的相对 “好坏”,并优化模型以最大化该奖励的预期值。与 RLHF 和 DPO 不同,KTO 只需要知道给定输出对于输入是期望还是不期望的二进制信号,而不需要完整的偏好对数据。这使得 KTO 在偏好数据稀缺或昂贵的情况下更具优势,能够更高效地利用数据,并且在某些情况下可能匹配或超过基于偏好方法的性能。 几率比偏好优化(ORPO):ORPO 旨在解决现有偏好对齐方法的局限性,如 RLHF 和 DPO 通常需要单独的监督微调阶段、参考模型或奖励模型。ORPO 将这些阶段合并为一个,通过在传统因果语言建模损失中引入基于几率比的惩罚项,同时实现了领域自适应和偏好对齐的目标。它可以在不需要单独的参考模型、奖励模型或两步微调方法的情况下,更有效地微调预训练语言模型以适应特定领域或任务,并确保模型输出与人类偏好一致。
三、Fine-Tuning 的实践要点(一)模型选择考虑使用平台提供的模型,并注意模型在不同地区的可用性差异。 组织应根据任务需求选择最适合的模型,虽然 Fine-Tuning可以提升模型性能,但在选择基础模型时可以参考其初始评估结果。 预算也是一个重要因素,较大模型通常需要更多计算资源和多 GPU 实例进行训练和服务,这会影响总成本(TCO)。 注意模型的许可模式,无论是专有模型还是开源模型,都有其使用领域和商业模型的限制。 遵循组织的治理、伦理和负责任人工智能准则,确保模型选择符合合规要求。
(二)微调路径选择根据要执行的任务确定所需的模型行为,如聊天性、指令遵循等,然后从期望的任务行为出发,选择合适的微调路径,以确保最终模型能够满足任务要求。 在选择起始点时,要合理利用现有资源。如果模型库中有已经经过微调且符合部分需求的模型,可以优先考虑使用,避免重复劳动。 认识到 Fine-Tuning是一个迭代且可能递归的过程,但要注意避免灾难性遗忘。可以采用参数高效的微调方法,如 LoRA,来减轻这一问题。 根据数据可用性选择路径。通常组织拥有更多无标签文本数据,而获取有标签数据可能成本较高,因此要根据实际数据情况进行决策。
(三)示例分析示例一
示例二 四、Fine-Tuning 与其他方法的比较与上下文学习(In - context Learning)相比,Fine-Tuning通过更新模型权重,能够更深入地将领域特定知识融入模型,从而在长期性能提升方面具有优势。上下文学习在处理少量特定任务时可能较为灵活,但对于复杂的领域自适应需求,Fine-Tuning 能够提供更强大的解决方案。同时,Fine-Tuning 内部的不同方法(如持续预训练、监督微调、各种人类偏好对齐技术等)也各有优劣,在实际应用中需要根据具体任务、数据和资源情况进行权衡选择。 Fine-Tuning作为一种高效且灵活的方法,在大型语言模型域适应中具有广泛的应用前景。通过微调预训练模型的参数,可以使其适应特定任务或领域的数据分布,从而提高模型的性能和准确性。同时,Fine-Tuning还具有高效性、灵活性、可解释性和可扩展性等优势,为大型语言模型在不同应用场景中的应用提供了有力的支持。
|