深入探索像ChatGPT这样的大语言模型-03-POST-Training:Reinforcement Learning
参考
【必看珍藏】2月6日,安德烈·卡帕西最新AI普及课:深入探索像ChatGPT这样的大语言模型|Andrej Karpathy
fineweb知乎翻译介绍
fineweb-v1原始连接
fineweb中文翻译版本
Chinese Fineweb Edu数据集
查看网络的内部结果,可以参考如下
https://bbycroft.net/llm
https://playground.tensorflow.org/
复现gpt2https://github.com/karpathy/llm.c/discussions/677
这些操作很多都是在云端操作
https://www.ai-galaxy.cn/
https://www.aliyun.com/product/ecs/gpu
首个大规模、可商用的中文指令数据开源
找出9.9<9.11的真正原因:《圣经》!神经元干预可免重训练修复
DeepSeek-R1: Incentivizing Reasoning Capability in LLMMs via Reinforcement Learning
AIMIE竞赛题
人工智能工具聚合网站有哪些?
GPT等大模型是如何训练的
3.POST-Training:Reinforcement Learning
后训练:强化学习
reforcement learning强化学习是什么
exposition 介绍 <=> pretraining 预训练
background knowledge 背景知识
worked problems 工作问题 <=>supervised finetuning 监督微调
problem+demonstrated solution,for imitation 问题+演示的解决方案,用于模仿
practice problems练习题<=>reforcement learning强化学习
prompts to practice,trial & error until you reach the correct answer 提示练习,试错,直到你得到正确的答案
人类从书中获得知识,大概有三种方式。
1.概述部分,这部分有概念的定义等,我们阅读的过程就是一个预训练的过程
2.例题,这部分有问题,有专家提供的完整的解决方案,类似SFT部分
3.课后系统,这部分有描述,在书的后面也有正确答案,但没有计算过程,需要我们个界预训练的过程和SFT的过程,来获取解题步骤,并最终获得正确的结果。在获得正确结果的过程中,我们需要反复的练习尝试,才能得到专家级别的解决方案。
哪个思考过程是最好的?
对于一个问题,有四种思考过程,每个过程都得到了正确的答案,那么哪个是最佳的呢?作为人类标注者,我不知道。
作为人类标注者,可以理解的是,我们的token给入模型,会有有限的计算量,并得到结果。
因此(13-4)/3=3这个会鼓励在较少的token上进行大量的计算,会鼓励我们跳过计算过程,是不够好的,会导致心算出错。如果我们可以把计算分散到多个token上回好的多。
那么第一种列方程和第二种表述可能都是好的,但由于人类的难易和LLM的难易是不同的,所以无法知道哪个更好些。
有些对人类来说很容易的事情,对LLM可能有很大的跳跃。
这些思考过程会被转换为token,哪类token更好,我们不清楚。
因此我们期望LLM能自己发现合适的token序列,LLM能自己找到那种token序列可以让LLM更好的得到正确的答案。
采用一个2B的模型,提问一个问题,可能会得到一个正确的答案
多次运行,会有一个不一样的方案,
每次的方案都是token的不同分布。
多次重复这个问题,我们可以给每个抽样得到数千的独立解决方案。这些方案有正确的,也有错误的,我们需要鼓励那些正确的解决方案。
强化学习的过程
问一个问题,LLM会有很多种解决方案,其中绿色是好的正确的,红色是不正确的,我们鼓励正确的方案。模型会选择正确的方案,然后对其进行激励,就是基于这些正确的方案进行训练。这部分就像是学生看正确答案,然后发现这个思路是不错的。
尽管人类生成一些内容是困难的,但评价起来,还是很容易的,比如把绿色的正确答案中选择一个最好的标记为黄色。
这个过程可以是并行的,每个问题都有数以千计的过程,模型在学习的过程会学习到哪种序列可以得到更好的答案。
DeepSeek-R1在RL阶段的意义
SFT在RL阶段提供了一个初始化的模型
SFT阶段的训练,让模型理解了如何找到解决方案,列一个方程,让模型学会了如何接近正确的解决方案。
强化学习是让模型找到所有内容准确的地方。随着训练的进行,模型随着也变的更好。
这就是我们训练强化学习的过程,训练的过程,和训练一个孩子很类似。
预训练阶段,我们读了很多的书,和说明。
在SFT阶段我们学习了很多专家的方案,并了解了解决问题的思路,这个解决问题的过程目前是盲目的,我们试图类似统计的模拟专家的解题思路。
在RL阶段,我们找到很多的练习题,我们仅做练习题,
这个过程和训练孩子很类似。
预训练和SFT阶段已经使用了很多年,很多LLM都在使用。RL训练还在摸索中,很多内容还没有标注化,RL阶段也包含如何选择最佳方案,提示分布和如何设置使得训练过程更有效的。核心思想有很多细节和可调参数,因此确保细节的正确性并不容易。
这也是为什么《DeepSeek-R1: Incentivizing Reasoning Capability in LLMMs via Reinforcement Learning 》DeepSeek-R1:通过 强化学习激励llmm的推理能力这篇论文十分重要的原因,因为这篇论文十分公开的讨论了强化学习微调。
AIMIE竞赛题
该数据集在AIMIE竞赛上表现很好,在对AIMIE的数据集进行大量训练时,模型正在发现如何解决问题。
论文中有一个现象很有意思,呈现了定性的效果。在优化的后期,模型的平均响应时长上升了,即模型可能用更多的token来提升准确度。
这是为什么,会发现在回答的过程中,会出现如下红色的回答
类似回顾,鼓励,反思等操作。这是导致响应膨胀的原因。
这个过程表名模型正在重新发现思考的方式,正在学习认知策略,即如何处理一个问题,从不同的角度出发,如何解决这个问题,这些都是通过强化学习发现的,学习到的思维链的过程。
这种优化师在训练中发现的,无需做任何的编码。我们提供正确的答案,强化学习单纯尝试正确解决问题。
我们可以问SFT和RL模型通一个问题,回答的差异如下:
Emily buys 23 apples and 177 oranges, Each orange costs $4. The total cost of all the fruit is $869. What is the cost of each apple? Use code.
这些来自于强化学习过程,GPT-4O是SFT模型,GPT-O1是使用了强化学习的RL模型。
GPT也有推理模型,但got仅展示了思维的部分摘要。部分观点认为openai担心展示完全的推理过程,会有公司通过模仿这些推理思维连来恢复很多推理性能。
目前我们谈到了强化学习和思维在优化过程中的出现。当我们在许多具有可验证解决方案的数学和代码问题上运行RL时,达到良好的结果,我们把这种模型叫做think model。
强大的强化学习
强化学习在围棋领域已经有很高的成果
监督学习使得模型会接近人类的顶级水平,但无法突破,强化学习可以突破人类的顶级水平,李世石。
在alphogo与李世石对战中,有一个步骤魏move37,这个步骤人类专家基本不会这门下,但回顾起来,是一种绝妙的下法。强化学习发现了一种人类从来不会这么下的方法。那么以一种人类无法理解的方式解决问题意味着什么?意味着强化学习发现新的思维方式,可能发明自己的语言,不再使用英语,学习到超脱训练集的分布情况。
强化学习可以在无法验证的领域学习
我们只要有很多的练习题,然后LLM就很好的训练,通过LLM是很擅长评价哪个回答是最好的。
在一些无法验证的领域,给不同的方案打分是困难的,比如一些创造性的领域,写一首诗。
如下为:写一个关于鹈鹕的笑话。
针对多次的提问会生成多个回复,我们需要查看不同的生成的结果,如何给分呢?
可以让一个人看所有的效果,并给出结果。这种方式是可行的,但是实在太耗费人力,是一种不可拓展的策略。
为此 论文中提出了一种自动化的策略
Reinforcement Learning in un-verifiable domains
=> RLHF (Reinforcement Learning from Human Feedback)
Fine-Tuning Language Models from Human Preferences
翻译成中文
在不可验证领域中的强化学习
=> RLHF(基于人类反馈的强化学习)
根据人类偏好微调语言模型
假设我们有无限的人力和时间,那么我们就可以在这些无法验证的领域里执行强化学习。
论文中中提供一个方法
Naive approach:
按常规运行强化学习,进行1,000次更新,每次更新使用1,000个提示,每个提示进行1,000次滚动。
(成本:1,000,000,000个来自人类的评分)
RLHF approach:
步骤1:
取1,000个提示,进行5次滚动,按从最好到最差的顺序排列
(成本:5,000个来自人类的评分)
步骤2:
训练一个神经网络模拟器来模拟人类偏好(“奖励模型”)
步骤3:
按常规运行强化学习,但使用模拟器代替实际人类每次奖励模型都会给输出一个评分,然后人类也可以对输出进行一个排序,排序比打分数要容易的多。然后通过监督学习的方式,奖励模型进行学习。
奖励模型不是一个语言模型,是一个评分模型,输入是提示词prompt和对应的响应。然后模型给出评分,再通过人类的排序结果进行比较,建立一个损失函数,不断更新参数。
举个例子,第2个笑话为0.8,人类也认为第2个更好笑,更新后,我们希望第2个笑话的评分是增长的,比如增长到0.81。第1个笑话,奖励模型给的分数比较低,人类给的比较高,我们希望更新后,第一个笑话的评分会高的多一些,如0.15.。
其它的也是如此,通过每次的更新,使得奖励模型预测的结果与人类靠近一些。
这样在可能5000次后,奖励模型学的就不错了。
然后用训练好的奖励模型进行模拟人类预测。
这就是RLHF的过程。
RLHF upside
RLHF 的优势
我们可以在任意领域运行强化学习!(甚至包括无法验证的领域)
这(经验上)提高了模型的性能,可能是由于“判别器-生成器差距”:
在许多情况下,辨别比生成要容易得多。
例如,“写一首诗”与“这五首诗中哪一首最好?”
这个间接的方式可以把打分转换为排序这种更容易的任务,可以避免人们生成文章这种复杂的任务。
RLHF downslide
我们正在进行关于人类损失性模拟的强化学习。这可能会产生误导!
更微妙的是:
强化学习发现了“欺骗”模型的方法。
它发现了奖励模型的“对抗性示例”。
例如,在1000次更新后,关于鹈鹕的顶级笑话并不是你想要的,而是完全无意义的诸如“the the the the the the the the the”这样的内容。
这些“the the the the the the the the the”也可以被当作对抗样本。
神经网络的输入得到一个输出,输出为一个评分,我们总能找到一些输入,可以骗过神经网络,得到很高的评分,随着训练轮次的增加,这种输入样本是无限的。我们无法做到把所有的对抗样本都加入到数据集中,并给出极低的分数。
从本质上,评分模型就是一个神经网络,而强化学习很容易找到欺骗神经网络的方法。
RLHF的过程可能在初始时很好,迭代几百次也很好,但会出现到达某点之后,急剧下降,所有我们不能过度运行这个RLHF模型,需要适当的截断技术。
RLHF时RL,但不是神奇的RL需要我们手动去截断。
在可验证的区域,我们可以无限的运行RL,发现我们从没有相关的策略,在所有这些问题上表现良好,比如围棋中,不存在被欺骗和操纵
RLHF时不可无限运行的,是可以被欺骗的,更像是在微调的范围内,从这个意义上来说RLHF不是RL。
chatgpt-4o经过的RLHF训练,效果也好了一些,但不是可以无限提升的RL。
以上我们介绍了大模型的三个重要阶段,预训练,SFT,RL阶段,这个过程与我们教孩子学习是一样的。预训练是获得知识,SFT是看专家给出的习题解决方案,RL是自己做习题,并尽快能的做对。
在大模型心智上,有幻觉,我们不能完全信任,我们可以把大模型 称呼为瑞士奈娜的LLM能力模型,这个大模型在很多学科表现很好,但在某些独特的案例中,会随机失败
大模型可以解决奥林皮克问题,但在9.9和9.11谁大的问题时,会出现错误,这个就是瑞士奶酪的一个洞。大模型不是无懈可击的,我们可以用来做初稿,但要为自己的内容负责。
关于大模型的未来
预测即将到的未来
预览即将到来的事物
• 多模态(不仅仅是文本,还包括音频、图像、视频、自然对话)
• 多个单独的任务->代理智能体(长期的,连贯,纠错上下文)
• 普遍的,无形的(无人工程的人机比率,人类作为监督者)
• 使用计算机的
• 测试时训练等。
我们现在的内容时训练获得参数,然后部署,固定参数,推理开始的时候,就不再修改参数。
模型所接触到的唯一学习和测试时间学习时上下文窗口的动态调整。
这点与人类不同,人类能根据接触到的东西学习,在睡眠中更新参数,目前这些模型和工具中没有类似的对应物。
所以还要很多想法可以探讨,尤其时上下文的token时十分宝贵的。生成图和视频的token会非常的庞大,在调用多模态的api时,可以看到一次调用就需要10000个左右的tokens
我们当前唯一能够使用的策略时延长上下文的窗口,但这种方法本身并不适合实际的长期多模态任务。因此可以在这些学科的一些案例中需要新的想法。
在哪里找到最新的进展
• 参考 https://lmarena.ai/
https://lmarena.ai/?leaderboard
• 订阅 https://buttondown.com/ainews
•
在哪里可以找到这些大模型
• 专有模型:在LLM提供商的各自网站上
• 开源权重模型(DeepSeek,Llama):推理提供商,例如TogetherAI
• 在本地运行!LMStudio
模型提供商提供的多是SFT或RL模型,很少有提供base模型的,HyperBolic有提供llama3的base模型,如果需要使用的,可以测试下。
why?
当我们在chatgpt上问一个问题,并按回车时
发生了什么?
我们看到了什么?
我们在与谁交谈?
这是怎么运行的?
这个课程会让我们理解模型的训练过程
返回了什么?
首先,问题被分成了token,
然后token被放在了特殊的格式里,比如对话数据集的格式,然后转换为一维的序列token。
这一系列的token给入模型,模型会生成一系列的token。
这些token怎么来的,又是如何生成token的,所以讲了模型的三个阶段
预训练阶段
SFT阶段
RL阶段