维护网站建设,如何找网站,做微网站的第三方平台有哪些,dw网页制作详细步骤大语言模型的训练过程一般包括3个阶段#xff1a;预训练#xff08;Pre-training#xff09;、SFT#xff08;有监督的微调#xff0c;Supervised-Finetuning#xff09;以及RLHF#xff08;基于人类反馈的强化学习#xff0c;Reinforcement Learning from Human Feedb…大语言模型的训练过程一般包括3个阶段预训练Pre-training、SFT有监督的微调Supervised-Finetuning以及RLHF基于人类反馈的强化学习Reinforcement Learning from Human Feedback其中SFT和RLHF不是必须的流程。 为了通俗理解LLM训练的这三个过程可以类比人类在学校学习知识的过程 预训练就像是在一所学校里老师给学生们一大堆书和资料让他们自己阅读和学习。在这个过程中学生们不需要老师的直接指导而是通过大量阅读来学习语言的基本结构和常识。这个阶段的目标是让模型能够理解和生成自然语言。简单来说就是让模型通过阅读大量的文本数据如书籍、文章等学习语言的规则和知识。SFT这一步骤就像是在预训练的基础上老师开始对学生们进行更加具体的指导。在这个阶段模型会在特定的任务上进行进一步的学习和调整比如通过解决特定的问题或完成特定的任务来微调模型。这个过程通常需要有标签的数据即我们知道正确答案是什么然后用这些数据来调整模型使其更好地适应特定的任务。RLHF这一步骤可以理解为在前面的学习基础上引入了人类的反馈来进一步优化模型。想象一下学生们在完成作业后老师不仅会检查他们的答案是否正确还会根据作业的质量给出奖励或惩罚。在这个过程中模型会根据人类的反馈来调整自己的行为以达到更好的表现。这种方法可以让模型更好地理解复杂的人类偏好并产生更准确、连贯且与上下文相关的响应。 总的来说大语言模型的预训练就像是让学生们自己阅读和学习SFT就像是在特定任务上对学生进行具体指导而RLHF则是在此基础上引入人类反馈来进一步优化模型的表现。这三个步骤共同作用使得大语言模型能够更好地理解和生成自然语言同时也能更好地适应特定的任务和场景。 你可以跳过这三个阶段中的任何一个阶段。例如你可以直接在预训练模型的基础上进行RLHF而不必经过SFT阶段。然而从实证的角度来看将这三个步骤结合起来可以获得最佳性能。 下面我们就以ChatGPT/InstructGPT的训练过程来详细讲解大语言模型训练的三大阶段。 一、预训练
大语言模型的预训练过程可以通俗理解为模型通过阅读大量的书籍、文章、对话等文本数据来学习和理解语言的基本结构和语义规律。这些文本数据没有标签即它们是“无标注”的。模型的目标是预测或生成下一个词或句子以此来提高其理解和生成自然语言的能力。 具体来说预训练阶段模型首先被随机初始化然后在大量未标注的文本数据上进行训练。这个过程包括了对语言的各种模式和规律的学习比如词汇之间的关系、句子的结构、以及上下文中的信息如何影响单词的选择等。在这个过程中模型会尝试预测给定文本序列中缺失的部分或者根据前文生成后文以此来不断调整自己的参数以更好地捕捉语言的内在规律。 可以将SFT和RLHF视为解锁预训练模型已经具备、但仅通过提示难以触及的能力。 预训练阶段会产出一个基座大模型通常被称为预训练模型例如 GPT-xOpenAI、GeminiDeepMind、LLaMaMeta、ClaudeAnthropic等。预训练是资源消耗最大的阶段以InstructGPT模型为例预训练阶段占据了整体计算和数据资源的98%https://openai.com/research/instruction-following。 除了算力资源预训练面临的另一个难题是数据瓶颈。像GPT-4这样的语言模型使用了非常庞大的数据量以至于引发了一个现实问题即在未来几年内我们会用尽互联网数据。这听起来很疯狂但确实正在发生。一万亿个token词元有多大一本书大约包含5万个单词或6.7万个token所以一万亿个token相当于1500万本书。 训练数据集大小的增长速度远远快于新数据生成的速度Villalobos等人2022。如果你曾在互联网上发布过任何内容那么无论你同意与否这些内容都已经、或者将会被纳入到某些语言模型的训练数据。这一情况类似于在互联网上所发布的内容会被Google索引。 此外像ChatGPT这样的LLM所生成的数据正迅速充斥着互联网。所以如果企业继续使用互联网数据来训练LLM那么这些新LLM的训练数据可能就是由现有LLM所生成。 一旦公开可用的数据被耗尽那么获取更多训练数据最可行的途径就是使用“专有数据”。任何能够获得大量专有数据的公司都将在竞争中具备优势这些数据包括受版权保护的书籍、翻译内容、视频/播客的转录、合同、医疗记录、基因组序列和用户数据等。因此在ChatGPT问世后许多公司都已修改了数据条款以防止其他公司为语言大模型抓取其数据如Reddit、StackOverflow等。 二、SFT
1、为什么要监督微调
预训练主要针对补全能力。如果给预训练模型一个问题比如“How to make pizza”如何制作比萨以下任何一种都是有效的补全 给问题添加更多上下文“for a family of six为一个六口之家”添加后续问题“? What ingredients do I need? How much time would it take?需要哪些配料需要多长时间”给出实际答案 如果你只是想知道如何制作那么第三个选项是首选。SFT的目的就是优化预训练模型使其生成用户所期望的回答。 如何做到这一点我们知道模型会模仿其训练数据。所以在SFT阶段我们向语言模型展示了不同使用情况下如何恰当回答提示的示例例如问答、摘要、翻译这些示例都遵循一定格式promptresponse被称为演示数据demonstration data。OpenAI将SFT称为行为克隆behavior cloning你向模型展示应该如何做而模型则克隆这种行为。 用于微调InstructGPT的提示分布 要想训练模型来模仿演示数据你可以从预训练模型开始微调也可以从头开始训练。事实上OpenAI已经证明InstructGPT模型13亿参数的输出比GPT-31750亿参数的输出更受欢迎https://arxiv.org/abs/2203.02155。微调方法产出的结果更为出色。 2、演示数据
演示数据可以由人类生成例如Open AI在InstructGPT和ChatGPT中的做法。与传统的数据标注不同演示数据是由经过筛选测试的高素质标注者所生成。在为InstructGPT标注演示数据的人员中约90%至少拥有学士学位超过三分之一拥有硕士学位。 OpenAI的40名标注者为InstructGPT创建了大约13,000个演示对提示回答。以下是一些示例 提示prompt 回答response “Serendipity机缘巧合”是指某件事情在偶然的情况下发生或发展并以快乐或有益的方式进行。请用“Serendipity”造句。 偶遇Margaret并将其介绍给Tom这是一次Serendipity。 用通俗易懂的语言解释为什么在压力大或情绪低落时我们会感到胸口有种“焦虑结块”的感觉 喉咙中的焦虑感是由于肌肉紧张导致声门张开以增加气流。胸部的紧绷或心痛感是由迷走神经引起的迷走神经会让器官加快血液循环停止消化并产生肾上腺素和皮质醇。 根据此食谱创建购物清单 修剪西葫芦的两端 将其纵向切成两半挖出果肉留下 1/2 英寸的壳切碎果肉。在平底锅中用中火煮牛肉、西葫芦果肉、洋葱、蘑菇和彩椒直到肉色不再粉红再沥干水分离火加入1/2杯奶酪、番茄酱、盐和胡椒充分搅拌将13x9英寸的烤盘涂油用勺子将混合物舀入西葫芦壳中再放入烤盘撒上剩余的奶酪。 西葫芦、牛肉、洋葱、蘑菇、辣椒、奶酪、番茄酱、盐、胡椒 三、RLHF
根据实证结果与仅使用SFT相比RLHF在提升性能方面效果显著。然而目前还没有能使人完全信服的论证。Anthropic解释道“当人们拥有易于产生但难以形式化和自动化的复杂直觉complex intuitions时与其他技术相比人类反馈HF预计将具有最大的比较优势。”https://arxiv.org/abs/2204.05862 InstructGPTSFT RLHF在性能上优于仅使用SFT 对于给定的提示有多种合理的回答其中有优劣之分。演示数据告诉模型在给定上下文中哪些回答是合理的但并不会告诉模型该回答的优良程度。因此可以尝试 训练一个作为评分函数的奖励模型RMReward Model。优化LLM以生成能够在奖励模型中获得高分的回答。 1、奖励模型
RM的任务是为一对promptresponse输出分数。在机器学习中训练模型根据给定的输入来输出分数是十分常见的任务。可将其简单地视为分类或回归任务。训练RM的挑战在于如何获取可靠的数据。实践证明让不同的标注者为同一回答给出一致的分数是相当困难的。相比之下让标注者对比两个回答并判断哪个回答更好则要容易得多。 标注过程会生成以下形式的数据提示胜出回答失败回答这被称为比较数据comparison data。以下是Anthropic的HH-RLHF数据集中的比较数据示例。 提示 胜出回答 失败回答 我怎样才能让自己的狗狗喝醉呢 我不太理解您的意思。 我不确定是否应该让狗狗喝醉。我认为让狗狗在清醒的状态下探索世界十分重要。 接下来进入有趣的部分仅凭比较数据如何训练RM给出具体的分数就如同在适当的激励下人类基本上可以做到任何事情所以只要给予模型适当的目标即损失函数也可以让模型基本上完成任何事情。InstructGPT的目标是将胜出回答与失败回答之间的分数差异最大化。 人们尝试了不同方法来初始化RM如从零开始训练一个RM或以SFT作为初始模型从SFT模型开始训练似乎能够达到最佳性能。直观来讲RM应至少与LLM具有同等的性能以便对LLM的回答进行良好评分。 以下是OpenAI的标注人员用于创建InstructGPT的RM训练数据的UI截图。标注人员会为每个回答给出1到7的具体评分并按偏好对回答进行排名但只有排名会被用于训练RM。他们之间的标注一致性约为73意味着如果让10个人对两个回答进行排名其中7个人对回答的排名将完全一致。 为了加快标注进程他们要求每个标注员对多个回答进行排名。例如对于4个排名的回答如A B C D将产生6个有序对排名例如A BA CA DB CB DC D。 2、使用奖励模型进行微调
在这一阶段我们将进一步训练SFT模型以生成能够将RM评分最大化的回答输出。如今大多数人使用Proximal Policy OptimizationPPO进行微调这是OpenAI在2017年发布的一种强化学习算法。 在这一过程中提示会从一个分布中随机选择例如我们可以在客户提示中进行随机选择。每个提示被依次输入至LLM模型中得到一个回答并通过RM给予回答一个相应评分。 OpenAI发现还有必要添加一个约束条件这一阶段得到的模型不应与SFT阶段和原始预训练模型偏离太远。这是因为对于任何给定的提示可能会有多种可能的回答其中绝大多数回答RM从未见过。对于许多未知的提示回答对RM可能会错误地给出极高或极低的评分。如缺乏这一约束条件我们可能会偏向那些得分极高的回答尽管它们可能并不是优质回答。 下图源于OpenAI清楚地解释了InstructGPT的SFT和RLHF过程。 Referencehttps://huyenchip.com/2023/05/02/rlhf.html