作者 | 假如给我一只AI 编辑 | 自动驾驶之心
原文链接:https://zhuanlan.zhihu.com/p/20949520788
点击下方卡片,关注“自动驾驶之心”公众号
>>点击进入→自动驾驶之心『大语言模型』技术交流群
本文只做学术分享,如有侵权,联系删文
本文中各方法的分布:

一、强化学习理论基础
Q值: 代表智能体选择某个动作后,一直到最终状态奖励总和的期望, Q值评价动作。
V值:代表智能体在这个状态下,一直到最终状态的奖励总和的期望,V值评价状态。

如何在不知道真实环境分布的情况下估算V值,已经诞生了多种方法,大体归纳为基于价值、基于策略两种:
1.1)基于价值的方法
代表:MC(Monte-Carlo,蒙特卡洛)方法、TD(Temporal-Difference,时序差分),基于TD的变体包括SARSA、Q-learning、DQN)
MC方法
思路:通过样本回合(episode,也叫trajectory,即轨迹)的完全体验来估计状态值函数V(s)。具体来说,它使用从一个状态开始到回合结束的真实收益来进行估计。
缺点:算法要求采样必须走到最终状态;面对巨大的状态空间,小概率能到达最终状态。
TD方法
思路:不必等待一个完整的回合结束才能进行更新,而是可以在每个时间步进行增量更新。
延展方法:SARSA、Q-learning、DQN。

TD方法的变体之——SARSA(State-Action-Reward-State-Action)
思路:SARSA算法更新的是状态-动作价值函数(Q值),通过五元组(当前状态S、当前动作A、收到的奖励R、下一个状态S’、下一个动作A’)来进行学习。SARSA被称为“on-policy”算法,因为它更新的Q值是基于当前策略选择的动作。
TD方法的变体之——Q-learning
思路:采用Q表(Q-table)来存储状态-动作对的价值。通过不断更新Q表来学习一个最优策略,使得Agent能够在环境中最大化累积奖励。这是一种“off-policy”算法,即更新Q值时不依赖于当前执行的策略。它使用贪心策略来更新Q值,即选择下一个状态中的最大Q值进行更新。Q表是一个二维表格,其中:行代表环境中的所有可能状态s;列代表在每个状态下所有可能的动作a;表中的每个元素 Q(s,a)表示在状态s采取动作a后的预期累积奖励。
缺点:它只能解决离散的、有限状态、有限动作空间的任务。
选取action的策略——greedy-epsilon(又叫ε-greedy):即以概率1−ε选择当前已知的最优动作(即利用)。这通常是基于当前的Q值或策略评估选出的动作。以概率ε随机选择一个动作(即探索),以确保算法有机会尝试不同的动作,可能发现更优的策略。其实从下图中Q-learning的公式就可以看出,即形式如Q=(1-α)Q+αG=Q+α(G-Q)。

Q-learning方法的改进版本之——DQN(Deep Q-Network)
思路:使用神经网络解决Q-learning中状态不连续的问题。在DQN中,Q值函数不是用表格存储,而是用神经网络来近似。神经网络Q(s,a;θ)参数化Q值函数,其中θ是神经网络的参数。计算细节包括:经验回放(Experience Replay)、目标网络(Target Network)、损失函数(Loss)等,如下图。


DQN代码学习:https://github.com/louisnino/RLcode/blob/master/tutorial_DQN.py
1.2)基于策略的方法
代表:PG(Policy Gradient,策略梯度)、AC、PPO(Proximal Policy Optimization,近端策略优化)
PG方法
思路:利用reward奖励直接对选择行为的可能性进行增强和减弱,好的行为会被增加下一次被选中的概率,不好的行为会被减弱下次被选中的概率。
缺点:数据使用效率低(每次收集的数据只用一次就丢弃了,即on-policy);采用蒙特卡洛的思想,每次要走到最后,太慢了。




PG代码见https://github.com/louisnino/RLcode/blob/master/tutorial_PG.py,其执行逻辑梳理如下:

Actor-Critic(AC)方法
思路:为了解决PG中采用蒙特卡洛必须走到最后的状态才计算G值,改为TD的思路。但是,PG需要计算G值,那么在TD中,我们应该怎样估算每一步的Q值呢?即神经网络。AC采用两个神经网络:Actor网络负责对网络输入状态S输出策略&选择动作,Critic网络负责计算每个动作的分数。
缺点:仍然是一个在线策略,即on-policy。

AC代码学习见https://github.com/louisnino/RLcode/blob/master/tutorial_AC.py,其执行逻辑梳理如下:

PPO方法
用AC来解决连续型控制问题。方法是输入avg和var,构造一个正态分布来表示策略。
如何实现:神经网络可以直接输出mu和sigma,就能获得整个策略的概率密度函数。
avg表示平均数,也就是整个正态分布的中轴线,avg的变化,表示整个图像向左右移动。
var表示方差,当sigma越大,图像越扁平;sigma约小,图像越突出,而最大值所在的位置,就是中轴线。
概念:从离散问题到连续问题
概念:两种策略
行为策略:不是当前策略,用于产出数据。
目标策略:会更新的策略,是需要被优化的策略。
如果两个策略是同一个策略,那么称为On Policy=在线策略;如果不是同一个策略,那么称为Off Policy=离线策略。
概率:重要性采样(Important-sampling)
目标:用行为策略获取的数据,能够更新目标策略,把AC从在线策略,变成离线策略。
含义:目标策略出现动作a的概率 除以 行为策略出现a的概率。
概念:N步更新
之前的TD叫做TD(0),而N步更新为TD(n),可以看成TD(0)其实是TD(n)的一种特殊情况。
实际上我们只需要计算最后的V(s'),根据这个估算的V(s'), 我们反推经过的所有state的V值。这个其实和PG估算G的过程是一样的,只不过我们并不需要走到最后,而是中途截断,用网络估算。

PPO代码学习见https://github.com/louisnino/RLcode/blob/master/tutorial_PPO.py,其执行逻辑梳理如下:

训练流程的1-4步代码解读分别见下面四幅图:




快速背诵:收(收集轨迹数据)、计(计算折扣回报)、策(策略迭代优化)
1.3)PG->AC->TRPO->PPO->DPO方法演进公式对比

二、LLM的PPO模型
首先,看下PPO算法的四个模型:

LLM中实际使用的公式:

需要采样经验(Experience)数据的原因:

代码参考Open_RLHF库的PPO实战:https://github.com/OpenRLHF/OpenRLHF/blob/main/openrlhf/trainer/ppo_trainer.py
三、LLM的DPO(Direct Preference Optimization)模型
背景:目前RLHF的流程太复杂,不仅需要单独训练reward模型,还需要从LLM的输出采样。
优势:DPO通过理论证明,可以不需要引入reward模型,就可以完成LLM的偏好训练。实验证明,在生成情感、摘要、单论对话质量方面,DPO比基于PPO的RLHF更好。
DPO最终公式见表1-2,推导过程如下:
step1:明确目标
一个是Reward最大化,一个是positive的样本得分大于negative样本得分。因此,公式推导采用的策略是先最大化Reward,在带入"positive的样本得分大于negative样本得分"公式。
step2:表征positive的样本得分大于negative样本得分

step3:Reward最大化


step4:带入step2

代码参考Open_RLHF库的DPO实战:https://github.com/OpenRLHF/OpenRLHF/blob/main/openrlhf/trainer/dpo_trainer.py
四、LLM的GRPO(Group Relative Policy Optimization)模型
背景(PPO的缺点):
需要训练一个与策略模型大小相当的价值模型(Critic模型),这带来了巨大的内存和计算负担;
在 LLM 的上下文中,通常只有最后一个 token 会被奖励模型打分,这使得训练一个在每个 token 上都准确的价值函数变得困难。
GRPO的优势:
避免了像 PPO 那样使用额外的价值函数近似,而是使用"同一问题下多个采样输出的平均奖励"作为基线。
1)优化目标

2)优势函数计算

② 国内首个自动驾驶学习社区
『自动驾驶之心知识星球』近4000人的交流社区,已得到大多数自动驾驶公司的认可!涉及30+自动驾驶技术栈学习路线,从0到一带你入门自动驾驶感知(端到端自动驾驶、世界模型、仿真闭环、2D/3D检测、语义分割、车道线、BEV感知、Occupancy、多传感器融合、多传感器标定、目标跟踪)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、大模型,更有行业动态和岗位发布!欢迎扫描加入

③全网独家视频课程
端到端自动驾驶、仿真测试、自动驾驶C++、BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合、多传感器标定、多传感器融合、多模态3D目标检测、车道线检测、轨迹预测、在线高精地图、世界模型、点云3D目标检测、目标跟踪、Occupancy、CUDA与TensorRT模型部署、大模型与自动驾驶、NeRF、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习)
④【自动驾驶之心】全平台矩阵