强化学习¶
🤖 实践代码 可以参考“动手学强化学习”
引言¶
强化学习最关键的两个概念,就是状态+动作。其他的什么策略、价值函数、奖励函数等等,都是基于这俩概念引申出来的。
先说说状态,状态分为环境的状态和智能体的状态。这俩不一定等价。如果等价,则说明环境是完全可观测的,如果不等价,则说明是部分可观测的
再说动作,动作分为离散动作和连续动作,具体显而易见不解释。
然后就是状态和动作引申出来的一些概念,包括策略、价值函数、模型:
-
策略:
-
随机性策略:输入状态,输出采取某个动作的概率
-
确定性策略:输入状态,输出下一步最有可能的动作
-
价值函数(对未来奖励的预测):
-
π函数:对于给定策略,将所有状态映射都映射为一个价值。(比如一个网格迷宫,状态是位置,那么每个位置都有一个值,就是价值)
-
Q函数:对于给定策略,将当前状态和当前动作映射为一个值,
-
模型:
-
状态转移概率:输入当前状态和动作,输出下一个状态的概率。
- 奖励函数:输入当前状态和动作,输出一个奖励值。
最后就是一些分类,包括基于价值和基于策略的智能体,有模型智能体和无模型智能体。一般机器人抓取操作等强化学习,会采用基于策略的无模型智能体。
其他关键词:探索、利用、学习、规划
马尔科夫决策过程¶
马尔科夫过程、马尔科夫奖励过程、马尔科夫决策过程有所区别。
马尔科夫过程:下一个时刻状态只于当前状态和转移概率有关
马尔科夫奖励过程:马尔科夫链+奖励函数,利用贝尔曼方程,求解当前状态的价值函数。求解方式有蒙特卡洛采用、时序查分、迭代求解法等。贝尔曼方程如下所示:
马尔科夫决策过程:马尔科夫奖励过程+决策。引入了Q函数。贝尔曼方程升级为贝尔曼期望方程。求解需要依赖于备份图。
预测与控制:预测是已知马尔科夫决策过程+策略,预测价值函数,控制是已知马尔科夫决策过程,求解最优价值函数和最优控制策略
-
预测:对应策略评估,不停迭代执行贝尔曼期望方程,然后得到价值函数。常用的表格型免模型预测有蒙特卡洛法、动态规划、时序差分法
-
控制:如果采取策略迭代,则使用的就是贝尔曼期望方程。如果是价值迭代,使用的就是贝尔曼最优方程。
基于策略的算法¶
一般强化学习在LLM或机器人里面应用,都是属于基于策略的算法,本质是先给定一个策略,然后不断优化他使得目标函数最大。
优化策略有如下几种方式:
策略梯度:
策略梯度本质上就是用神经网络去学习策略(\(p_\theta (a_t^n | s_t^n)\)中的\(\theta\)),而学习过程就是用下面的公式去更新\(\theta\)。
核心更新公式如下所示,注意,每次采样N组T时间步的(s,a)对,然后用于更新一次参数。
训练的时候,目标函数实际上就是,在分类模型最大化似然函数的基础上,加一个\(R(\tau^n)\) 的权重。
梯度更新公式优化:
-
添加基线:实际上就是把上面公式的奖励减一个b,使得奖励有负有正。
-
动作加权与奖励折扣:动作加权实际上就是给每个动作乘以不同权重,然后奖励折扣就是时间越久动作奖励越少。更新后的公式如下:
-
\[ \nabla \bar{R}_\theta \approx \frac{1}{N} \sum_{n=1}^{N} \sum_{t=1}^{T_n} \left( \sum_{t'=t}^{T_n} \gamma^{t'-t} r_{t'}^n - b \right) \nabla \log p_\theta (a_t^n | s_t^n) \quad (4.20) \]
-
其中\(\left( \sum_{t'=t}^{T_n} \gamma^{t'-t} r_{t'}^n - b \right)\)就可以紧凑表达为函数\(A^\theta(s_t,a_t)\),通常是用一个叫critic的网络估计出来。
对于梯度更新方式而言,有蒙特卡洛和时序差分两种,蒙特卡洛每回合更新一次,时序差分每步更新一次。
近端策略优化(PPO):
之前PG(同策略)方式,采样完一轮数据之后,才能更新一次\(\theta\),效率极低。因此,PPO采用异策略方式,一轮数据可以更新多次参数,
异策略梯度的梯度公式:
异策略梯度的目标函数(相较于同策略多了一个概率分布比例项):
PPO:通过对目标函数加入KL散度,约束\(\theta\)与\(\theta'\)的相似程度,即不让这俩分布差距太多,更新后的目标函数如下所示:
PPO的两个变种包括近端策略优化惩罚和近端策略优化裁剪。近端策略优化惩罚是通过设置最大最小KL散度,来自动调整系数\(\beta\)。近端策略优化裁剪是不要KL散度,将目标函数修改为如下形式:
深度Q网络¶
本质是一种基于价值的方法,包括状态价值函数(V函数)和动作价值函数(Q函数)两种。
基于策略和基于价值的本质区别在于,基于策略的方式对于一个状态s,会输出所有动作a的概率分布,然后选择概率最大的a。而基于价值的方式,对于一个状态s和动作a,会输出未来期望奖励Q,对所有a计算一个Q,就可以得到当前s状态下最优的动作。
相关改进方式:
- 目标网络
- 探索
- 经验回放
几种进阶变体:
- 双深度Q网络:用两个Q网络,解决奖励函数高估问题
- 竞争深度Q网络:不直接输出Q值,而是分两条路径,分别输出V(s)和A(s,a)
- 优先经验回放
- N步骤更新策略,平衡蒙特卡洛和时序差分
- 噪声网络:不给动作加噪声,而是给网络参数加噪声
- 分布式Q函数:输出所有动作的Q值
连续式动作处理:
- 采样动作
- 梯度上升
- 修改网络架构,是Q网络输出均值、标准差等等
- 采用演员-评论员
演员-评论员算法¶
演员输入状态输出动作,评论员输入状态输出评估分数。
相关算法:
- 优势Actor-critic(A2C)
- 异步Actor-critic(A3C):是同策略算法,只不过平行探索加速效率
- 路径延伸策略梯度:是DQN解决连续动作的一种方式
- 深度确定性策略梯度(DDPG):解决连续动作的一种方式,结合经验回放、演员和评论员均有目标网络等
- 双延迟DDPG(TD3):引入截断、演员-评论员延迟更新梯度、目标策略平滑等方式,优化DDPG
稀疏奖励¶
结合状态和动作的特性,设计稀疏奖励。
相关知识:
- 好奇心:引入内在好奇心模块,结合特征提取,来鼓励机器人探索
- 课程学习:从易到难学习
- 分层学习:上层粗略决策,下层精细决策
模仿学习¶
机器人通过模仿人类行为,进行学习。包括行为克隆(BC)和逆强化学习(IRL)两种。
行为克隆:本质是一个回归问题,让策略跟专家一致,使用数据集聚合策略增强其泛化性(处理专家没遇见的情况)
逆强化学习:首先通过专家学习一个奖励函数,再用这个奖励函数指导智能体学习到最优策略。本质是通过学习专家奖励函数,得到专家策略的隐式表达,然后将该隐式表达传递给要学习的智能体,使得智能体具备专家水平同时保有泛化性。
第三人称视角学习:演示视频是第三人称的,但是机器人自己操作时是第一人称。可以转换为域适应(类似cv里从一个数据域迁移到另一个数据域)问题,采用领域对抗训练来解决。
一些概念区分¶
on-policy vs off-policy
区分在线策略和离线策略,要看算法更新权重所使用的数据,是否是当前策略所采集的策略。一般而言,带有经验回放的算法如DQN、DDPG就是异策略算法,而没有经验回放的如PG算法是同策略。而目前为提升数据利用率,通常采用异策略,特别是机器人领域的RL经常采用带有经验回放的PPO算法。
online-rl vs offline-rl
区分在线RL和离线RL,区别是agent是否与env有交互。离线RL中,最终要训练的agent不会跟环境交互,而是用其他agent与环境交互的数据来训练。而在线RL则agent可以与环境交互获取数据来训练。