1.
What is RL
How do i set it and solve it?
benefits and drawbacks
black box -> machine learning
ML combines 3 Paradigm
Unsupervised Learning:
不需要标签,根据内在特征进行聚类等相似操作;
Supervised Learning:
这就是ML所擅长的,从数据中找出特征进而得到label;
RL与这两个使用静态数据集的学习框架不同;
序列行为实现最优的回报;
可以将policy使用深度神经网络这也是DRL的由来;
RL算法的作用就是基于观测,奖励等去优化策略,以采取最优动作进而获得最大回报;
所以,RL就是一个优化问题:
与其他优化问题区分开来:
关键点:评估状态价值,将能够使得智能体获得更高回报,而不是只是关注即时奖励;
如果不能够评估状态价值,很有可能导致Agent陷入利用(贪婪)的状态,不断在原地打转;
当然,能够估计越来越远的状态价值,并非适合所有任务,对于金融等任务,等你到了那个时间点,可能并非和预测的一样,因此这种情况下,短视就更加重要;
而控制智能体远视和短视,依靠gamma折扣因子;
探索利用平衡
智能体能否冒着短期的风险去找到探索一个更大的奖励,进而填补value函数中更多未知部分;
RL问题和控制问题异同:
最小化cost实际上可以通过最大化-reward来实现,
在RL更新过程中实际上也使用了-loss区别于监督学习这类任务;
不同:在一段时间内RL需要去学习最优策略,而不是说显式求解
so:
总结:这基本上就是一个任务,我们需要在算法层面考虑的
2.Env and Reward Engineering
工作流:
和控制任务不同,强化学习中环境是除agent之外的所有(包括被控制对象的动态特性)
Model-based很好用,可以避免无效的探索,但是目前model-free使用最多,避免对模型建模
仿真环境好处:
传统控制任务已经做好了仿真,
更加具体:
奖励的设计:
问题:
稀疏奖励和指定优化
之后就是策略和算法(取决于环境设置)
维度灾难:
表格的形式很明显无法应对这种状态很多的情况,尤其是连续空间
此时如果有一个value函数能够通过S-A得到,其实也就是说找到一个拟合函数能够获得s-a的value,那么这个V的结构是什么?实际上很难去设计,通过NN去拟合比较符合
3.Policy
前情回顾,有了环境和奖励之后设计策略
本节主要回答两个问题:
1.为什么要用NN来表示函数,而不是表格
2.为什么需要两个网络,AC
1解释了两个原因
如无激活函数多层线性层等价于一层
网络太复杂也不好,但是还是需要设计
更多还是看任务来设计
不是确定性的行为,而是概率(探索利用平衡)
这里说得很好,更新网络就是求解每个参数的权重和bias关于奖励的导数,从而更新。调整到正奖励增长方向
存在问题:
以上是policy-based,下面是value-based
贝尔曼方程(重复这个动作将更新S-A得到真值
缺点:只适合动作空间较小的,如果是连续空间,那不实际,不可能通过使用贝尔曼方程更新一个无限的action空间;
因此提出了AC,这个时候critic只是用了一个动作,而不需要评估所有动作
actor从critic的反馈中学习正确动作,从而了解新动作好坏;评价器从获得的奖励中学习价值函数
部署:离线训练好之后,可以只用策略,但是如果环境复杂,想要持续更新,也可以将RL算法也进行部署
总结
4.样本效率问题
在强化学习(RL)领域,value-based方法(如Q-learning及其变种)与policy-based方法(如REINFORCE、PPO)在样本效率上的差异,源于两者本质的学习机制和使用经验数据的方式不同。下面给出学术且严谨的分析:
1. 样本效率(Sample Efficiency)的定义
样本效率指的是算法利用有限环境交互样本达到良好性能的能力。高样本效率意味着用较少的环境采样数据就能学得较优策略。
2. Value-based 方法的样本效率特点
核心思想:value-based方法通过估计状态-动作价值函数 Q(s,a)Q(s,a) 来间接推导策略,通常策略是贪婪选择 π(s)=argmaxaQ(s,a)\pi(s) = \arg\max_a Q(s,a)。
经验重用:value-based方法,尤其基于离线经验回放(Replay Buffer)技术,能够高效利用历史经验样本。Q-learning及其深度版本DQN通过经验回放和目标网络等技术显著提升了样本利用率。
引导作用强:价值函数提供了关于环境长期回报的直接估计,便于梯度更新方向明确,收敛速度较快。
缺陷:value-based方法对离散动作空间较为适用,连续动作空间处理较复杂;且估计的 QQ 函数存在高方差和偏差,可能导致不稳定。
综上,value-based方法在离散动作环境中往往具备较高的样本效率,原因在于经验回放的多次利用和价值函数的直接反馈。
3. Policy-based 方法的样本效率特点
核心思想:policy-based方法直接优化策略参数 θ\theta,通过最大化期望回报 J(θ)=Eπθ[R]J(\theta) = \mathbb{E}_{\pi_\theta}[R],如策略梯度算法。
采样依赖性强:政策梯度依赖于从当前策略采样生成的轨迹数据,且通常不使用经验回放(因为旧策略轨迹分布与当前策略分布不匹配,导致离策略估计复杂),因此每次更新的数据利用率较低。
高方差问题:策略梯度估计常带有高方差,导致训练不稳定,需采用基线函数、方差减少技术,但仍然制约样本效率。
优势:适用于连续动作空间且支持直接优化随机策略,收敛至局部最优解且更自然地处理策略的随机性和探索。
因此,纯策略梯度方法的样本效率一般低于value-based方法,尤其是在缺乏充分离线经验重用时。
4. 结合方法及改进
Actor-Critic方法:结合value-based和policy-based优势,通过value函数引导策略更新,改善样本效率和稳定性。
经验重用:如PPO等策略优化算法引入了重要性采样和截断策略,部分缓解了策略迭代中样本利用不足问题。
离策略策略梯度:如DDPG、SAC等,结合了经验回放机制,提升了策略梯度方法的样本效率。
5. 本质差异总结
方面 | Value-based | Policy-based |
---|---|---|
样本利用方式 | 支持经验回放,重复利用样本 | 依赖最新策略采样,经验利用较低 |
估计目标 | 状态-动作价值函数 | 策略参数,直接优化策略 |
方差与偏差 | 有偏差较小但估计有偏 | 无偏但方差较大 |
动作空间 | 多用于离散动作空间 | 自然适用于连续动作空间 |
样本效率 | 通常较高,尤其离散空间 | 通常较低,需改进算法提高效率 |
6. 总结
value-based方法通过对价值函数的估计,结合经验回放等技术,能更充分地利用样本,样本效率较高;而policy-based方法直接优化策略参数,通常依赖在线采样,且存在高方差,样本效率相对较低。二者的样本效率差异主要源于数据利用方式、估计目标及算法结构的根本不同。
Actor-Critic(AC)方法通过将value-based与policy-based方法的核心优势结合起来,既提升了学习的稳定性,又改善了样本效率。以下从学术角度详细分析AC结合两者优势的具体体现:
1. Actor-Critic的结构简介
Actor:直接参数化策略 πθ(a∣s)\pi_\theta(a|s),负责生成动作,属于policy-based范畴。
Critic:估计价值函数 Vw(s)V_w(s) 或 Qw(s,a)Q_w(s,a),用于评价Actor动作的质量,属于value-based范畴。
两者交替更新,Actor通过Critic提供的价值估计来指导策略优化。
2. Actor-Critic结合的优势
方面 | 详细描述 |
---|---|
1. 直接策略优化 | Actor采用policy gradient方法直接优化策略,适合连续动作空间,避免了value-based方法中求最大动作值时的复杂性和离散动作限制。 |
2. 低方差梯度估计 | Critic估计状态值或动作值,作为baseline或优势函数,显著降低了策略梯度的方差,提升训练稳定性和收敛速度。 |
3. 改善样本效率 | Critic利用价值函数估计对Actor进行“指导”,避免纯策略梯度方法依赖大量轨迹采样,同时支持部分经验重用,提升样本利用率。 |
4. 引导策略更新方向 | Critic的价值估计给出对策略行为好坏的反馈,Actor依赖这一信息进行梯度更新,避免盲目采样,提高优化效率。 |
5. 支持离策略学习 | 许多AC变体(如DDPG、SAC)结合经验回放机制,实现了离策略学习,进一步提升样本效率。 |
3. 从算法实现角度看
Critic通过时序差分(TD)误差来逼近价值函数,利用单步奖励和下一状态价值实现更新,减少了Monte Carlo方法的高方差问题。
Actor则基于Critic提供的价值评估,计算优势函数(Advantage function),作为策略梯度的权重,实现更有效的策略改进。
两者通过交替优化实现策略和价值的共同提升,使训练过程更为稳定且样本利用更充分。
4. 具体优势总结
价值函数方法优势(Critic) | 策略梯度方法优势(Actor) |
---|---|
能够提供对策略行为的明确价值反馈 | 直接优化策略参数,适合连续动作空间 |
通过经验重用提升样本效率 | 可优化随机策略,提升探索能力 |
时序差分减少估计方差 | 不需要在动作空间执行最大化运算 |
作为基线降低策略梯度估计的方差 | 允许灵活表达复杂策略结构 |
5. 总结
Actor-Critic方法的设计充分融合了value-based的价值估计和policy-based的策略直接优化的优势,通过Critic对策略进行有效评估,降低策略梯度的方差并提高样本利用效率,从而提升了强化学习算法的整体性能和稳定性。
5.例子:双足机器人行走
传统:应对31的环境变量,给出6个维度的action
rl:
可以看到,根据机器人在仿真环境下的行为,不断更新奖励函数,加入相应的项,实现最近似的行为;
这个时候考虑policy
如果神经元不足,很难得到一个有效函数;
如果过多,有可能将花费更多时间 找到拟合函数,并且可能过拟合;
执行器确定输出,RL算法和critic只是帮助确定执行器中的参数;
上述是走直线的任务,我们没办法对其发出指令;
如果我想让机器人去目标点(这就是一个额外逻辑,相当于指令)
而不是只会进行直线任务,计算error在当前位置和参考位置之间的差,去优化奖励
为了更好的训练,加入误差变化率也能得到进一步提升
具体项目中就是将error添加到obs和reward
使用参考信号,保留发送指令的能力
利用领域知识:
RL输出不再是6个指令而是落脚点,在利用这个落脚点根据控制逻辑去进行计算获得相应输出(这一部分由领域知识来设计)
从而保留RL解决更加棘手的问题
为什么用NN也存在一个原因,为了感知环境,会存在很多传感器,其中的数据用NN来处理
通过结合两者有点,让RL更加关注于策略输出,而不需要考虑controller能够实现的部分。理论上看简化了agent但实际上是能够让agent处理更加困难的问题;
6.drawbacks
其实最重要的一大问题就是:泛化,即使环境和策略已经完美,一旦部署实机,很有可能就失效了;
1.一旦有了一个策略,如何去调优
把所有困难压缩成黑盒函数;
传统算法:单一变量
但是基于NN就无法这样做了;需要重新设计;
还有一个大问题就是环境模型的不完美
传统方法,由于我们理解function,可以去修改适应环境
但是对于RL本身环境就不完美,网络也无法理解(黑盒模型)这个时候只能依靠在实际物理环境 训练才能得到好的效果;
解决方法:缩小RL的范围,让其理解自己在做什么
2.如何知道work
测试:
1.传统方法相似环境输出也是相似的,但是RL不会,因为使用了NN,导致很难做到;
2.大尺度的输出导致验证也很困难,无法保证处理其他图像仍然有效;
3.传统方法通过code表明他的正确性,但是对于NN这种没办法有一个formal method
尽管RL面临很多问题:难以验证性能,难以指出错误,难以调整参数;
但也有未来
1.提升系统鲁棒性:每个回合都修改环境参数,让机器人去训练;
2.提升安全性
还有一种方法:让RL去学习传统控制器中的更小的参数;一旦学到了 一组最优增益,就可以去掉NN了,直接利用这组增益去运行;
最后仍然得到一个传统架构:
未来: