机缘
提示:可以和大家分享最初成为创作者的初心
例如:
- 实战项目中的经验分享
- 日常学习过程中的记录
- 通过文章进行技术交流
- …
收获
SFT
- 什么是SFT?
监督微调(SFT)是指采用预先训练好的神经网络模型,并针对你自己的专门任务在少量的监督数据上对其进行重新训练的技术。 - SFT在大语言模型中的应用有以下重要原因:
- 任务特定性能提升:预训练语言模型通过大规模的无监督训练学习了语言的统计模式和语义表示。然而,它在特定任务上的性能可能不如在大规模无监督数据上表现出的性能。通过在任务特定的有标签数据上进行微调,模型可以进一步学习任务相关的特征和模式,从而提高性能。
- 领域适应性:预训练语言模型可能在不同领域的数据上表现不一致。通过在特定领域的有标签数据上进行微调,可以使模型更好地适应该领域的特殊术语、结构和语义,提高在该领域任务上的效果。
- 数据稀缺性:某些任务可能受制于数据的稀缺性,很难获得大规模的标签数据。监督微调可以通过使用有限的标签数据来训练模型,从而在数据有限的情况下取得较好的性能。
- 防止过拟合:在监督微调过程中,通过使用有标签数据进行有监督训练,可以减少模型在特定任务上的过拟合风险。这是因为监督微调过程中的有标签数据可以提供更具体的任务信号,有助于约束模型的学习,避免过多地拟合预训练过程中的无监督信号。
SFT数据
-
Prompt优化SFT微调训练
在大多数指令理解场景中,可以通过SFT来进行优化。在进行SFT之前,良好的prompt工程始终是首要步骤。此后,prompt工程后的指令数据可以用于SFT训练,SFT过程能够引导模型学习prompt工程中的回答要求、回答结构以及处理超纲问题等内容。
- prompt优化主要在训练阶段,用于增强指令的多样性,让模型更好的理解指令
- 预测阶段的prompt优化主要用于无法进行finetune的场景,例如chatgpt/yiyan.baidu.com等。
- 对于特定下游任务,预测阶段建议与训练阶段保持一致或者接近的prompt,可以暂时忽略预测阶段的prompt优化。
- 适当构建few shot 及COT(Chain of Thought) 数据加入训练,可以有助于模型的指令理解以及多轮对话能力。
- prompt优化主要在训练阶段,用于增强指令的多样性,让模型更好的理解指令
-
数据规模、数据多样性
在SFT上数据规模的重要性低于数据质量, 通常1万条左右的精标数据即可发挥良好的效果。
在扩充数据规模时需要注意数据多样性,多样性的数据可以提高模型性能。
多样性除了从原始数据中获取,也可以通过prompt_template方式构建,对prompt指令进行数据增强,比如中文翻译英文的指令可以拓展为,中译英,翻译中文为英文等相同语义的指令。
在不扩大提示多样性的情况下扩大数据量时,收益会大大减少,而在优化数据质量时,收益会显著增加。 -
数据质量
挑选质量较高的数据,可以有效提高模型的性能。
数据质量用户需尽量自己把控,避免出现一些错误,或者无意义的内容。虽然平台也可以提供数据质量筛选的能力,但不可避免出现错筛的情况。
数据质量可以通过ppl、reward model,文本质量分类模型等方式进行初步评估。经过人工进行后续筛选。
SFT参数
选择SFT的超参数
- EPOCH 影响比 LR 大,可以根据数据规模适当调整EPOCH大小,例如小数据量可以适当增大epoch,让模型充分收敛。
- 例如:EPOCH:100条数据时, Epoch为15,1000条数据时, Epoch为10,10000条数据时, Epoch为2。
- 过高的epoch可能会带来通用NLP能力的遗忘,这里需要您根据实际需求核定,若您只需要下游能力提升,则通用NLP能力的略微下降影响不大。若您非常在乎通用NLP能力,平台侧也提供过来种子数据来尽可能保证通用NLP能力不降低太多。
- 适当增加global batch_size :如增加accumulate step 32 64,当分布式节点增多时可以进一步增加batch_size,提高吞吐。
- 学习率(LR, learning Rate): 对于ptuing/lora等peft训练方式,同时可以适当增大LR。
RLHF
RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习),一种机器学习方法,它使智能系统能够从环境中学习并最大化特定目标。在RLHF中,通过对同一输入的多个生成结果进行人工排序,获得包含人类偏好反馈的标注数据,从而训练出一个奖励模型(Reward Model)。在强化学习的过程中,奖励模型将对大语言模型的多个生成结果的排序进行判定。最终,强化学习通过更新大模型的参数,使得输出结果符合奖励模型的判定要求。这种方法减轻了传统强化学习中需要大量试错的问题,也降低了完全依赖于人工对所有大模型生成结果进行排序调整反馈的成本,使得智能系统更加高效、快速地学习任务。
RLHF使模型能够在大量文本数据语料库上进行训练,并在复杂的语言任务(如语言理解和生成)上取得令人印象深刻的结果。
RLHF的成功取决于人类提供的反馈的质量,根据任务和环境,反馈的质量可能是主观的和可变的。因此,开发有效且可扩展的收集和处理反馈的方法非常重要。
总的来说,RLHF 比传统的机器学习和强化学习提供了更多的指导,能够捕捉到人类偏好的全部内容,从而驱使人工智能系统与人类价值观相一致。即使 RLHF 不能完全解决对内部调整的担忧,它所识别的失败以及它赋予奖励和政策模型的知识也适用于提高社会和合作环境中人工智能的安全性、可靠性和可信度。
奖励模型训练
-
奖励模型(Reward Model, RM)训练的最终目的是刻画模型的输出是否在人类看来表现不错:
输入【提示(prompt),模型生成的文本】,输出表明文本质量的标量数字。
-
奖励模型接收一系列文本并返回标量的奖励值,数值和人类的偏好相对应。您可以采用端对端的方式用大语言模型建模,或者用模块化的系统建模(如对输出进行排名,再将排名转换为奖励)。奖励数值将用于接入强化模型训练中。
-
奖励模型训练是一种强化学习技术,用于根据人类反馈来学习如何更好地进行决策,从而获得更高的累积奖励值。
在强化学习中,智能体通过不断地与环境进行交互,从中获得一定的奖励值。奖励模型可以描述和计算每一次交互中智能体获得的奖励值,并且根据这些奖励值,智能体可以学习到如何更好地进行决策,从而获得更高的累积奖励值
奖励模型是强化学习中的一个重要概念,它直接影响智能体的学习效果和行为表现。
强化学习训练
-
强化学习(Reinforcement Learning, RL)又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。至少需要以下三个基本要素:
-
策略(policy):基于该语言模型,接收prompt作为输入,然后输出一系列文本(或文本的概率分布)。
-
动作空间(action space):词表所有token在所有输出位置的排列组合(单个位置通常有50k左右的token候选)。
-
奖励函数(reward):基于奖励模型计算得到初始reward,再叠加上一个约束项。
-
-
代理(agent)通过与环境的交互来学习策略。代理采取行动(含无动作行动),这些行动会影响代理所处的环境,而环境进而转换到新的状态并返回奖励。奖励是使强化学习代理能够调整其行动策略的反馈信号,当代理进行训练时,它会调整自己的策略,并采取一系列行动,使其回报最大化。
-
强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能代理(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。
强化学习主要是训练对象每一步如何进行决策,采用什么样的行动可以完成特定的目的或者使收益最大化。
日常
- 创作已经是你生活的一部分了,日常所读所想,将日常的笔记记录下来,会帮助你更快的成长。
- 有限的精力下,“吾日三省吾身”,每日回想一下今日的成就,然后有问题的进行记录。
憧憬
在新的一年中,持续阅读,持续记录,持续思考。
在上面中,在日常中贴了SFT、RLHF、RM和RL的一些概念,希望能够在这篇水贴中对正在一起学习的小伙伴有所帮助!!!
如果对你有帮助,希望你能一键三连【关注、点赞、收藏】!!!助到