众所周知,transformer以及llama 开源内容全部在强调deep learning,无数的大佬都花时间在优化transformer 及其衍生模型上做了大量的工作,但如何保证产出的回答是符合人类预期呢,这块的研究和进展则不是那么被人重视。但对于企业的合规,以及确保AI的答案不会威胁人类的层面上,RLHF(Reinforcement Learning from Human Feedback)和deep learning 一样重要。
经过这段时间的研究和学习,我决定一边探索OpenAI的实现方案,一边持续记录输出自己的学习心得。并期待阅读到我的文档的大佬能积极分享一些更新的文档。
前置知识
快速浏览Berkeley deeplearning公开课,简单了解神经网络,深度学习,梯度下降等基本概念。 因为transformer 以及 llama 等模型已经非常复杂了,站在巨人的肩膀上学习,也不太可能从头去搭建一个深度学习模型,未来的重点会放在如何调整模型以及AI对齐。
AI Alignment(AI 对齐)
AI alignment 意思是让人工智能的目标和人类的目标保持一致。举个简单的例子,如果你让一个机器人帮你整理房间,但它却把房间弄得更乱了,那就是AI没有对齐你想要的目标。AI对齐就是为了避免这种情况,确保AI系统做的事情是我们希望它做的。
RLHF(Reinforcement Learning from Human Feedback)
RFHF指的是从人类反馈中进行强化学习。简而言之,这种方法让AI通过人类的反馈来学习什么是好的行为,什么是不好的行为。比如,你让AI学会玩一个游戏,你可以给它看几个游戏片段,然后告诉它哪个片段表现得更好。AI通过这种人类反馈来调整自己的策略,逐渐学会如何更好地完成任务。
OpenAI Spinning Up,初级入门学习
OpenAI Spinning Up 是一个适合初学者学习强化学习(RL)的开源项目。它提供了一系列教程、示例代码和算法实现,让你可以从零开始学习如何用代码实现强化学习算法。
Spinning Up 能干什么:
- 学习基础知识:通过详细的教程,了解强化学习的基本概念和原理。
- 算法实现:提供了几种常见的强化学习算法的代码实现,你可以直接运行这些代码,看看这些算法是如何工作的。
- 练习与实践:提供了一些练习题和示例,让你可以动手实践,巩固所学知识。
- 研究与开发:对于有兴趣深入研究的同学,Spinning Up 是一个很好的起点,你可以在此基础上进一步开发和实验。
简单来说,Spinning Up 就是一个为想学习强化学习的人提供的入门工具包,包含了学习资料和实践代码。 OpenAI 提供了一些强大的强化学习基准实现,涵盖各种算法的实现以及与 RLHF 相关的实验代码。以下是一些主要的资源和实现:
OpenAI Baselines,探索企业级的实现
OpenAI Baselines 是 OpenAI 提供的一个强化学习库,包含了多种强化学习算法的实现,广泛应用于研究和实际项目中。以下是一些主要的算法:
-
Deep Q-Network (DQN) :
- 基于值函数的强化学习算法,用于解决离散动作空间的任务。
- 实现地址:deepq
-
Proximal Policy Optimization (PPO) :
- 基于策略梯度的强化学习算法,结合了策略优化和信任域方法。
- 实现地址:ppo2
-
Trust Region Policy Optimization (TRPO) :
- 另一种基于策略梯度的强化学习算法,专注于稳定的策略更新。
- 实现地址:trpo_mpi
-
Actor-Critic using Kronecker-Factored Trust Region (ACKTR) :
- 结合了演员-评论家模型和 Kronecker-factored 近似卷积策略优化方法。
- 实现地址:acktr
-
A2C (Advantage Actor-Critic) :
- 一个同步的策略梯度方法,使用优势函数来减少方差。
- 实现地址:a2c
-
Hindsight Experience Replay (HER) :
- 一种用于稀疏奖励环境的策略,通过在回放时修改目标来提高样本效率。
- 实现地址:her
Deep Reinforcement Learning from Human Preferences
OpenAI 在 "Deep Reinforcement Learning from Human Preferences" 论文中提出了通过人类反馈进行深度强化学习的方法。这个项目提供了相关的实验代码,展示了如何通过人类反馈来训练强化学习模型。
-
该项目包含以下关键组件:
- 人类反馈的收集:通过人类比较两个视频片段来获取偏好反馈。
- 偏好模型的训练:使用收集到的人类反馈训练偏好模型。
- 强化学习训练:使用偏好模型生成的奖励信号来训练强化学习代理。
以上这些学习资料看似非常繁杂,实际上都是强化学习在大语言模型对齐中的应用。 对于每一个可能的方案我都会列出实现的代码,并作为学习总结分享出来。