构建大语言模型的四个主要阶段

        大规模语言模型的发展历程虽然只有短短不到五年的时间,但是发展速度相当惊人,国内外有超过百种大模型相继发布。中国人民大学赵鑫教授团队在文献按照时间线给出 2019 年至 2023 年比较有影响力并且模型参数量超过 100 亿的大规模语言模型。大规模语言模型的发展可以粗略的分为如下三个阶段:基础模型、能力探索、突破发展。

       大语言模型构建通常包含以下四个主要阶段:预训练、有监督微调、奖励建模和强化学习,简要介绍各阶段使用的算法、数据、难点以及实践经验。

  • 预训练
       需要利用包含数千亿甚至数万亿 单词的训练数据,并借助由数千块高性能 GPU 和高速网络组成的超级计算机,花费数十天完成深 度神经网络参数的训练。这一阶段的核心难点在于如何构建训练数据以及如何高效地进行分布式训练。

       预训练阶段是大规模语言模型训练的关键步骤之一,特别是对于GPT(Generative Pre-training Transformer)系列模型而言。在预训练阶段,模型通过自我监督学习(Self-supervised Learning)的方式,利用海量无标签的互联网文本数据集进行训练。具体来说,GPT模型采用了自回归语言模型的形式,其核心任务是根据给定的文本序列预测下一个可能出现的单词。

       模型通过Transformer架构的多层自注意力机制学习到文本序列中词汇之间的深层上下文依赖关系。在训练过程中,模型试图最小化预测下一个单词的交叉熵损失,从而逐步建立起对自然语言规律的深刻理解,其中包括词汇搭配、语法结构、短语和句子的意义等。

       通过预训练,模型能够在大规模无标注数据上习得通用的语言表示,这些表示可以被进一步应用于多种不同的自然语言处理任务中,只需要在预训练模型的基础上进行微调,就可以在特定任务上达到相当出色的性能。这极大地降低了对大量有标注数据的依赖,并为多种下游任务提供了强有力的模型基础。

  • 有监督微调阶段
       利用少量高质量的数据集,其中包含用户输入的提示词( Prompt )和对应的理想输出结果。提示词可以是问题、闲聊对话、任务指令等多种形式和任务。这个阶段是从语言模型向对话模型转变的关键,其核心难点在于如何构建训练数据,包括训练数据内部多个任务之 间的关系、训练数据与预训练之间的关系以及训练数据的规模。

       有监督微调是预训练模型适应特定任务的关键步骤。在完成了大规模无标注数据上的预训练后,模型已经学习到了丰富的语言结构和模式。然而,为了针对性地解决特定的自然语言处理任务(如问答系统、文本分类、机器翻译等),我们需要对预训练模型进行微调(Fine-tuning)。

       微调过程中,我们会使用特定任务的有标签数据集,重新训练模型的部分或全部权重,使其能够针对特定任务进行优化。这意味着模型会在原有的预训练基础上,针对新的任务目标调整其内部参数,以便更好地理解和处理任务特有的特征和规律。

       在微调阶段,模型的输入和输出会与特定任务一致。例如,在文本分类任务中,模型将学习如何根据输入文本预测相应的类别标签;而在问答系统任务中,模型则将学会根据提供的背景文本生成恰当的答案。

       通过这种方法,预训练模型能够快速适应新任务,通常比从零开始训练模型需要更少的数据和计算资源,同时也能够取得更好的性能表现。这种预训练-微调范式已经成为现代自然语言处理中广泛采用的技术手段。

  • 奖励建模阶段
       奖励建模阶段 的目标是构建一个文本质量对比模型,用于对于同一个提示词,对有监督微调模型给出的多个不同输出结果进行质量排序。这一阶段的核心难点在于如何限定奖励模型的应用范围以及如何构建训练数据。

       奖励建模(Reward Modeling)是一种强化学习中的技术,尽管像GPT这样的大规模预训练语言模型通常基于自监督学习或最大似然估计进行训练,但在某些情况下,奖励建模可以作为一种补充手段,帮助进一步优化模型的行为,特别是当涉及到道德、伦理或者更加符合人类价值判断的输出时。

       在奖励建模框架下,首先定义一个“奖励函数”,该函数量化了模型行为的好坏程度,即模型输出越符合预期的目标或人类偏好,则获得的奖励越高。然后,通过训练一个辅助模型(也称为奖励模型)来预测这些奖励信号,辅助模型通常是基于少量人工标注数据或者其他方式表达的人类偏好。

       在实际应用中,奖励建模可能被用来指导预训练语言模型的微调过程,使模型在生成文本时不仅追求语法和语义的正确性,还能尽量遵循预设的价值观或社会规范。这一过程可能包括让模型根据所学到的奖励信号调整其策略,生成更加符合期望的结果。通过这种方式,即使原始训练并未采用强化学习,奖励建模也可以间接引入强化学习的理念来改进模型的表现。

  • 强化学习阶段
       根据数十万提示词,利用前一阶段训练的奖励模型,对有监督微调模型对用户提示词补全结果
的质量进行评估,并与语言模型建模目标综合得到更好的效果。这一阶段的难点在于解决强化学
习方法稳定性不高、超参数众多以及模型收敛困难等问题。

       强化学习(Reinforcement Learning,RL)确实是一个强有力的机器学习框架,尤其适用于那些智能体需要通过与环境交互来学习最优行为的场景。在自然语言处理(NLP)领域,强化学习应用于对话模型的训练时,模型扮演的角色就是一个智能体,这个智能体会在对话交互的环境中采取行动(例如,生成回应),然后根据接收到的外部反馈(即奖励信号)来调整它的策略。

       在对话系统的上下文中,强化学习允许模型通过与用户或其他评价机制交互,根据用户的满意度、对话连贯性、信息准确性等因素获取即时或延迟的奖励。比如,如果模型生成的回答得到了用户的积极反馈或实现了预定的目标(如解答了问题或完成了任务),那么模型会得到正向奖励;反之,若回答不恰当或不符合预期,则可能得到负向奖励或没有奖励。

      一些高级应用场景中,强化学习与语言模型相结合的技术已经发展到了更为精细的层次,如使用人类反馈强化学习(Human Feedback Reinforcement Learning, RLHF),这种技术可以让语言模型更有效地吸收和理解人类偏好,并据此优化其生成的文本内容和风格。例如,OpenAI的ChatGPT就是通过RLHF技术进行了后期微调,以便更好地实现与人类的友好交互和遵循社会规范。

1. 预训练(Pre-training)

算法

  • 在预训练阶段,最常用的算法是基于Transformer架构的自注意力机制,如BERT、GPT系列、XLNet、RoBERTa等模型。这些模型通过无监督学习的方法,在大规模未标注文本数据上进行训练,学习语言的基本结构和模式。

数据

  • 使用数十亿乃至数百亿字节级别的大规模语料库,包括网页抓取数据、书籍、百科全书、论坛讨论等各类文本数据。

难点

  • 数据清洗和预处理:去除噪声数据,确保训练数据的质量和多样性。
  • 计算资源需求:训练超大规模模型需要极其庞大的计算资源,包括GPU集群或TPU阵列。
  • 学习效率和泛化能力:如何设计有效的预训练任务(如掩码语言模型、自回归语言模型等)以提高模型学习质量和泛化性能。

实践经验

  • BERT使用双向Transformer编码器结构,并引入了掩码语言模型(Masked Language Modeling, MLM)和下一句预测(Next Sentence Prediction, NSP)任务进行预训练。
  • GPT系列模型使用自回归Transformer解码器,通过预测下一个词语的方式进行预训练。

2. 有监督微调(Supervised Fine-tuning)

算法

  • 在预训练模型的基础上,针对特定的下游任务(如文本分类、问答、命名实体识别等),在带标签的小规模任务数据集上进行有监督微调。

数据

  • 微调阶段使用的数据集通常是有标注的任务特异性数据,如GLUE、SuperGLUE、SQuAD等任务数据集。

难点

  • 过拟合:由于预训练模型参数量庞大,如何在有限的标注数据上进行有效微调而不至于过拟合是一个挑战。
  • 微调策略:如何选择合适的微调层、冻结部分层、调整学习率等因素以优化微调效果。

实践经验

  • 微调时通常会对预训练模型的顶部层进行训练,同时调整模型整体的学习率,以充分利用预训练阶段学到的通用知识。

3. 奖励建模(Reinforcement Learning)

算法

  • 在某些情况下,模型的训练可以通过强化学习方式进行,模型根据所采取的动作(生成文本等)得到环境反馈(奖励或惩罚),进而调整策略。

数据

  • 不再依赖于明确的标签,而是根据模型生成的文本内容与预期目标的匹配程度或其他相关指标给予奖励信号。

难点

  • 设计合理的奖励函数:确保奖励信号能够正确反映生成文本的质量和目标任务的要求。
  • 稳定性与收敛性:强化学习过程可能较不稳定,需要精细调整训练策略以保证收敛到最优解。

实践经验

  • OpenAI的GPT-3在一些生成任务上采用了基于奖励的微调(RLHF,Reinforcement Learning with Human Feedback),通过人类评估员对模型生成结果的打分来调整模型策略。

4. 强化学习(Reinforcement Learning)

算法

  • 强化学习应用于语言模型时,通常涉及到自动生成任务,模型通过不断试错并根据外部环境的反馈(例如人类用户的评价或内置评估指标)调整自身行为。

数据

  • 可能是与环境交互产生的序列数据,或者是用户对模型生成结果的反馈数据。

难点

  • 采样效率:强化学习往往需要大量交互以学习最优策略,而在自然语言生成场景下,采样和反馈可能十分耗时和昂贵。
  • 环境模拟:如果不能直接与真实世界交互,可能需要构建模拟环境来优化模型。

实践经验

  • 一些研究尝试将强化学习用于对话系统,通过与模拟用户交互,使模型学会更加流畅和有意义的对话策略。在实践中,通常会结合有监督学习和强化学习,以最大化模型性能。

       总之,构建大语言模型是一个循序渐进的过程,从大规模预训练开始,逐步通过有监督微调、奖励建模和强化学习等手段,让模型适应更具体和复杂的任务需求。在这个过程中,如何优化算法、合理利用数据、克服难点以及总结最佳实践,都是推动模型性能持续提升的关键要素。

        根据 OpenAI 联合创始人 Andrej Karpathy 在微软 Build 2023 大会上所公开的信息,OpenAI 所使用的大规模语言模型构建流程主要包含四个阶段:预训练、有监督微调、奖励建模、强化学习。这四个阶段都需要不同规模数据集合、不同类型的算法,产出不同类型的模型,所需要的资源也有非常大的差别。

以下是每个阶段的详细描述:

  1. 预训练 (Pre-training):

    • 数据集: 预训练阶段通常使用大规模无标注文本数据集,例如Wikipedia、Common Crawl、BookCorpus等。这些数据集包含了海量未标记的自然语言文本,用于训练模型捕捉语言的基本规律和结构。
    • 算法: 常见的预训练算法包括自注意力机制为基础的Transformer架构下的BERT(Bidirectional Encoder Representations from Transformers)、GPT(Generative Pre-training Transformer)系列模型等。这些模型首先通过掩码语言模型(MLM)或自回归语言模型(ARLM)任务进行预训练,使模型学习通用的语言表示。
    • 模型: 输出的是一个通用的语言模型,如BERT、GPT-3等,它们能生成或预测缺失的词汇,形成对语言深层次理解的基础模型。
    • 资源: 预训练需要巨大的计算资源,包括GPU集群和大量的存储空间,训练时间也可能长达数周甚至数月。
  2. 有监督微调 (Supervised Fine-tuning):

    • 数据集: 微调阶段使用的是带有标签的小规模或者特定领域的数据集,如GLUE、SuperGLUE、SQuAD等基准测试任务的数据集,涵盖文本分类、问答、语义相似度等多种任务类型。
    • 算法: 在预训练模型的基础上,通过调整模型权重并对特定任务进行有监督训练,例如添加额外的分类层,然后针对具体任务目标优化模型参数。
    • 模型: 经过微调后的模型具有针对性,能够解决具体的下游任务,如情感分析模型、命名实体识别模型等。
    • 资源: 虽然相比预训练所需资源较少,但仍需要一定量的GPU资源来进行快速有效的训练,同时对于某些复杂任务可能需要较长的训练时间。
  3. 奖励建模 (Reward Modeling):

    • 数据集: 这个阶段的数据集是由人类评估员给出的评价或奖励信号构成,反映模型在某个任务上的表现好坏。
    • 算法: 奖励建模常用于强化学习框架中,通过模仿学习或RLHF(Reinforcement Learning from Human Feedback)等方法,将来自人类反馈的奖励信号转化为模型更新的信号。
    • 模型: 通过这种方式微调的模型能够在遵循人类价值观的前提下提高决策质量和输出质量,如ChatGPT中的安全性和有用性就通过奖励建模得以增强。
    • 资源: 同样需要GPU资源进行训练,另外还需要人力投入收集和整理高质量的人类反馈数据。
  4. 强化学习 (Reinforcement Learning):

    • 数据集: 强化学习环境可以是模拟环境产生的数据,也可以是实际操作过程中的实时反馈数据,模型通过与环境互动获得经验样本。
    • 算法: Q-learning、Policy Gradient、Actor-Critic等算法被用来训练模型如何在给定环境中采取最优行动以最大化累积奖励。
    • 模型: 强化学习训练出的模型可以直接应用于游戏、机器人导航、对话系统等场景,模型具备动态适应环境变化的能力。
    • 资源: 强化学习训练过程中往往需要大量的尝试和探索,因此需要大量计算资源,尤其是对于复杂环境和高维动作空间的任务。此外,构建模拟环境或获取真实世界的即时反馈也是一项重要资源投入。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/504880.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于雷达影像的洪水监测技术方法详解

洪水发生时候大多数是阴雨天气,光学影像基本上拍不到有效影像。雷达影像这时候就能发挥其不受天气影像的优点。现在星载的雷达卫星非常多,如高分三号、陆探一号、海丝一号(巢湖一号)、哨兵1号等。本文以哨兵1号L1地距(GRD)产品来介…

【初中生讲机器学习】13. 决策树算法一万字详解!一篇带你看懂!

创建时间:2024-03-02 最后编辑时间:2024-03-02 作者:Geeker_LStar 你好呀~这里是 Geeker_LStar 的人工智能学习专栏,很高兴遇见你~ 我是 Geeker_LStar,一名初三学生,热爱计算机和数学,我们一起加…

电子电器架构 —— DoIP协议相关的介绍

电子电器架构 —— DoIP协议相关的介绍 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人生在世,最怕…

Excel 按奇数偶数列处理数据

目录 一. 需求背景1.1 获取偶数列的数据1.2 奇偶列数据互换 二. 解决方式2.1 为列添加奇偶辅助列2.2 通过公式将奇偶列互换 一. 需求背景 1.1 获取偶数列的数据 ⏹ 最近在整理歌单,发现部分歌曲没有歌词,于是打算自己制作一份。 从网上找到了歌词&…

【Spring IoC】实验四:特殊值处理

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

Topaz Gigapixel AI:让每一张照片都焕发新生mac/win版

Topaz Gigapixel AI 是一款革命性的图像增强软件,它利用先进的人工智能技术,能够显著提升图像的分辨率和质量。无论是摄影爱好者还是专业摄影师,这款软件都能帮助他们将模糊的、低分辨率的照片转化为清晰、细腻的高分辨率图像。 Topaz Gigap…

《Spring Security 简易速速上手小册》第9章 测试与维护 (2024 最新版)

文章目录 9.1 编写安全测试9.1.1 基础知识9.1.2 重点案例:保护 REST API9.1.3 拓展案例 1:自定义登录逻辑测试9.1.4 拓展案例 2:CSRF 保护测试 9.2 Spring Security 升级和维护9.2.1 基础知识9.2.2 重点案例:适配新的密码存储格式…

监控与日志

一、监控 1、监控类型 从监控类型上划分,在 K8s 中可以分成四个不同的类型: ① 资源监控:这种监控主要关注于基础资源的使用情况,例如 CPU、内存、网络等。通常使用数值或百分比等单位来统计,可以通过 Zabbix、Tele…

vue3项目中如何一个vue组件中的一个div里面的图片铺满整个屏幕样式如何设置

在Vue 3项目中,要使一个div内的图片铺满整个屏幕,你需要确保几个关键点:div元素和图片元素的样式设置正确,以及确保它们能够覆盖整个视口(viewport)。以下是一个简单的步骤和代码示例,帮助你实现…

水电表远程集中抄表管理系统

水电表远程集中抄表管理系统是当前水电行业智能化发展的关键技术之一,为水电企业和用户提供了便捷、高效的抄表管理解决方案。该系统结合了远程监控、自动抄表、数据分析等多种功能,实现了水电抄表的智能化和精准化,为用户节省了大量人力物力…

效率真高!众安保险数据分析岗(实习)面试通过了,分享一下面试经验!

最近,我们社群组织了一场技术&面试讨论会,邀请了一些互联网大厂同学、参加社招和校招面试的同学,针对新手如何入门数据分析、机器学习算法、该如何备战、面试常考点分享等热门话题进行了深入的讨论。 基于社群的讨论,今天我整…

Maven高级(黑马学习笔记)

Maven 是一款构建和管理 Java 项目的工具。 分模块设计与开发 介绍 所谓分模块设计,顾名思义指的就是我们在设计一个 Java 项目的时候,将一个 Java 项目拆分成多个模块进行开发。 1). 未分模块设计的问题 如果项目不分模块,也就意味着所有…