
强化学习(RL)的学习笔记
如果动作状态的空间是连续的,则使用Q表可能无法对这种空间进行表述,(连续状态的可能取值是无限多的),感性认识:表达了模型对规则的理解,(同时将reward函数进行可导化);Sarsa:使得sample()行为的reward的平均水平达到最大;其实Q-Learning的思想很简单,就跟把大象放进冰箱是差不多的,Q-Learning:使得maxQ()行为的reward的达到最大;量化Q的方法我们采用T
1. 前言
(1)提问
- 为什么基线中没有使用标准形式的GAE?
- 为什么使用“approx_kl”而不是“old_approx_kl”?
(1)PPO的优点
PPO(Proximal Policy Optimization)算法相比其他强化学习方法有几个显著优点:
- 稳定性和鲁棒性:PPO通过限制策略更新的幅度来避免训练过程中的大幅波动,这增加了算法的稳定性和鲁棒性。这是通过引入一个被称为“信任区域”的概念来实现的,它限制了新策略与旧策略之间的偏离程度。
- 简单的实现:与其他需要复杂计算的强化学习算法(如TRPO)相比,PPO简化了这些计算,使得实现起来更为简单,同时保持了相似的性能,这使得它在实践中更受欢迎。
- 样本效率:PPO在使用每个数据样本方面比一些其他算法更有效,它可以在每次迭代中重复利用数据,从而提高样本的使用效率。
- 适用性广:PPO被证明在连续动作空间的多种环境中有效,这意味着它适用于各种任务,包括机器人控制和游戏等。
- 超参数调整容易:PPO相对于其他算法来说对超参数的选择不那么敏感,这降低了调整参数的难度。
- 高性能:PPO在多个基准测试和任务中显示出了优秀的性能,包括与其他先进的RL算法相比。
(2)策略梯度的优点
- 处理连续动作空间: 策略梯度非常适合于连续动作空间的问题。例如,如果你在控制一个机器人的臂,它的动作是连续的角度变化,策略梯度方法可以学习在任何给定状态下应该施加什么样的扭矩。
- 更好的探索机制:策略梯度方法通常会有更好的探索机制,因为它们可以在选择动作时采取随机性。这种随机性使智能体有可能探索到新的、可能更好的动作。
- 适合非马尔可夫决策过程:策略梯度方法可以在非马尔可夫(非完全可观测)的环境中工作得很好,因为它们不需要像值函数方法那样严格地依赖于状态的马尔可夫性质。
(3)SAC的特点
SAC是基于最大熵的强化学习框架,强调样本效率和良好的探索机制。
2. 学习资料
2.1 Hung-yi Lee(李宏毅)RL course
请参见《【RL】《Hung-yi Lee(李宏毅)RL course》的学习笔记》
Machine Learning 2017 (Hung-yi Lee, NTU) 23-1~23-3
3. RL面临的挑战
奖励延迟(Reward Delay)
Reward Delay 是指在行为和由该行为引起的奖励之间存在时间延迟。这种延迟使得学习过程复杂化,因为学习算法需要能够将行为与可能在很长一段时间后才出现的结果联系起来。
李宏毅老师用 Space Invader 讲解 Reward Delay:
- 但是如果machine只知道開火以後就得到reward
- 它最後learn出來的結果它只會瘋狂開火
- 對它來說往左移、往右移沒有任何reward它不想做
- Reward delay
- In space invader, only “fire” obtains reward
- Although the moving before “fire” is important
- In Go playing, it may be better to sacrifice immediate reward to gain more long-term reward
4. 常见概念和术语
4.1 常见单词
Episode:一局游戏
TD:Temporal-Difference
PPO:Proximal Policy Optimization,近端策略优化
4.2 常见符号
符号 | 含义 |
---|---|
π \pi π | 策略(决策规则),“pi”代表“policy” |
π ⋆ \pi^{\star} π⋆ | 理想策略(最优策略) |
v ∗ v_* v∗ | 在最优策略下的价值 |
q q q | 代表英文单词 “quality”。在强化学习中, q q q用于表示动作价值函数(Action-Value Function),也称为Q函数 |
4.3 符号规范:参照【CS285】
4.4 State:状态
4.5 Observation:agent获取到的环境信息的表示形式
4.5 在强化学习中,Observation是State本身或其投影
4.6 Policy:对应于"Actor-Critic"方法中的"Actor"部分
4.7 Markovian:马尔科夫性
这里我们参照了 Claude-3.5-Sonnet-200k教授的表述;
我们认为Markovian与observation的逻辑关系可以表达如下:
If (observation = full state)
Then (任务是Markovian的)
Claude-3.5-Sonnet-200k:
也就是说,"observation = full state"是任务成为Markovian的充分条件;
但不是必要条件;
4.8 Reward:“即时奖励 r t r_t rt”
南溪:
这里单词看起来就跟“Real-time reward”很映衬,在日常表达中也可以这么说;
不过在写论文时,还是建议使用"immediate reward"这个最标准的说法。
4.9 Return:回报
Return是指智能体从某一时刻开始,未来所有奖励的累积总和。根据任务有限或无限,有不同的计算方式:
- 有限阶段任务(Episodic Tasks)
总回报为未来有限步的奖励之和:
G t = r t + 1 + r t + 2 + ⋯ + R T G_t = r_{t+1} + r_{t+2} + \dots + R_T Gt=rt+1+rt+2+⋯+RT
其中 T T T是终止时刻。 - 无限阶段任务(Continuing Tasks)
为避免无限累积,引入折扣因子(discount factor) γ ∈ [ 0 , 1 ) \gamma \in [0,1) γ∈[0,1):
G t = R t + 1 + γ R t + 2 + γ 2 r t + 3 + … G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2r_{t+3} + \dots Gt=Rt+1+γRt+2+γ2rt+3+…
折扣因子 γ \gamma γ权衡即时奖励与远期奖励的重要性。
4.9 Value:基于历史经验预测的表现的平均值
4.10 Value Function: V ( s ) V(s) V(s)
GPT4:
状态值函数是一个预期值,而不是上限,它基于当前策略和环境来预测从现在开始长期看能够获得的总回报。
4.11 Q-function: Q ( s , a ) Q(s, a) Q(s,a)
在s下采取a估计会获得的奖励。
4.12 V ( s ) V(s) V(s)和 Q ( s , a ) Q(s, a) Q(s,a)都是基于历史经验的现实评判
南溪:
如果比喻来说, Q ( s , a ) Q(s, a) Q(s,a)函数和 V ( s ) V(s) V(s)函数的估计是“客观的”,它们就像是开了上帝视角一样,会根据以往时间长河中的历史经验,用冷静客观的方式,来给出对当前局势价值的判断和估计。
4.13 V π ( s t ) = E a [ Q π ( s , a ) ] V^\pi\left(\mathbf{s}_t\right)=E_{\mathbf{a}}\left[Q^\pi\left(\mathbf{s}, \mathbf{a}\right)\right] Vπ(st)=Ea[Qπ(s,a)]
DeepSeek-R1:
- 值函数 V π ( s ) V^{\pi}(s) Vπ(s)是当前策略下所有动作Q值的平均分。
- 如果某个动作得分(Q值)高于平均分(V值),说明它是“好动作”,需被更频繁选择。
4.14 Advantages:优势
优势是每个时刻t的一个标量值
4.15 Critic
- Input:环境的观察值(observation)
- Output:是一个标量值(value),表示对当前状态的价值评估
5. 设计模式
5.1 Imitation Learning:模仿学习
GPT4-AllTools:模仿学习是一种让机器通过观察和复制专家行为来学习特定任务的技术。就像是当我们小时候学习骑自行车或做饭时观察父母的动作并尝试效仿他们一样。
5.2 行动者+评论家(Actor+Critic)
GPT4-AllTools:
在机器学习的强化学习任务中,行动者负责做决定并采取行动,而评论家则评估这些行动,并指导行动者如何调整策略以做得更好。通过这种合作,行动者学会更好地完成任务。
在我看来Actor和Critic有着这样的特点:
- Actor——本能者
- Critic——经验者
Note:我感觉Critic有着将reward规则进行可导化的作用。
Actor-Critic方法的本质在于将策略学习(由Actor负责)和价值学习(由Critic负责)进行解耦,以实现更加灵活和可控的训练过程。
6. 理论学习
6.1 Sample函数:探索行动的策略
Sample函数在训练过程中对应着“样本增广”的作用;
6.2 Direct policy differenciation [video]
6.3 Gradient Ascent
Note:如果比赛胜利的话,就从参数上提升此次动作序列(sequence)出现的概率 θ \theta θ。
θ new ← θ old + η ∇ R ˉ θ o l d \theta^{\text {new}} \leftarrow \theta^{\text {old }}+\eta \nabla \bar{R}_{\theta^{old}} θnew←θold +η∇Rˉθold
∇
R
ˉ
θ
≈
1
N
∑
n
=
1
N
R
(
τ
n
)
∇
log
P
(
τ
n
∣
θ
)
=
1
N
∑
n
=
1
N
R
(
τ
n
)
∑
t
=
1
T
n
∇
log
p
(
a
t
n
∣
s
t
n
,
θ
)
=
1
N
∑
n
=
1
N
∑
t
=
1
T
n
R
(
τ
∘
n
)
∇
log
p
(
a
t
n
∣
s
t
n
,
θ
)
\begin{aligned} \nabla \bar{R}_\theta & \approx \frac{1}{N} \sum_{n=1}^N R\left(\tau^n\right) \nabla \log P\left(\tau^n \mid \theta\right)=\frac{1}{N} \sum_{n=1}^N R\left(\tau^n\right) \sum_{t=1}^{T_n} \nabla \log p\left(a_t^n \mid s_t^n, \theta\right) \\ & =\frac{1}{N} \sum_{n=1}^N \sum_{t=1}^{T_n} R\left(\tau_{\circ}^n\right) \nabla \log p \left(a_t^n \mid s_t^n, \theta\right)\end{aligned}
∇Rˉθ≈N1n=1∑NR(τn)∇logP(τn∣θ)=N1n=1∑NR(τn)t=1∑Tn∇logp(atn∣stn,θ)=N1n=1∑Nt=1∑TnR(τ∘n)∇logp(atn∣stn,θ)
∇
log
p
(
a
t
n
∣
s
t
n
,
θ
)
=
∇
p
(
a
t
n
∣
s
t
n
,
θ
)
p
(
a
t
n
∣
s
t
n
,
θ
)
\nabla \log p\left(a_t^n \mid s_t^n, \theta\right) = \frac{\nabla p\left(a_t^n \mid s_t^n, \theta\right)}{p\left(a_t^n \mid s_t^n, \theta\right)}
∇logp(atn∣stn,θ)=p(atn∣stn,θ)∇p(atn∣stn,θ)
关于从直觉上理解这里为什么要除以 p ( a t n ∣ s t n , θ ) p\left(a_t^n \mid s_t^n, \theta\right) p(atn∣stn,θ)
Q:请问,可以从直觉上解释 why divided by p ( a t n ∣ s t n , θ ) p\left(a_t^n \mid s_t^n, \theta\right) p(atn∣stn,θ)吗?
ChatGPT4:
- 从直觉上来说, ∇ log p ( a t n ∣ s t n , θ ) \nabla \log p\left(a_t^n \mid s_t^n, \theta\right) ∇logp(atn∣stn,θ)中的除以 p ( a t n ∣ s t n , θ ) p\left(a_t^n \mid s_t^n, \theta\right) p(atn∣stn,θ)这一步出现在对数概率的梯度中,它可以被解释为一种“归一化(Normalization)”过程。
- 在策略梯度方法中,我们希望调整参数 θ \theta θ以增加好动作的概率,并减少坏动作的概率。为了做到这一点,我们需要考虑动作的概率:如果一个好动作已经有很高的概率被选择,我们不需要太大幅度地增加它的概率;而如果一个好动作目前只有很小的概率被选择,我们可能希望更显著地增加其被选中的概率。
- 通过计算概率的对数梯度,我们实际上是在计算“相对于动作概率的变化率”。这样,对于那些已经很可能发生的动作,我们只进行小幅度的调整;而对于不太可能发生但却是好动作的情况,我们会做出更大的调整。
5.3 Policy Gradient [video]
5.4 Actor-Critic架构:估计状态值函数 V ( s ) V(s) V(s)提供反馈
7. 常见算法概述
7.1 Sarsa和Q-Learning:最初的强化学习算法
7.1.1 基于Q-Learning的强化学习:使用Q表进行动作选择
其实Q-Learning的思想很简单,就跟把大象放进冰箱是差不多的,
基本的步骤是:
- 观察环境,得到observation;
- 根据obs查询Q表格,选择Q值最大的action;
- 执行该动作。
7.1.2 Sarsa和Q-Learning的预期目标
其实这两种算法的目标不同,导致了结果不同:
- Sarsa:使得sample()行为的reward的平均水平达到最大;
- Q-Learning:使得maxQ()行为的reward的达到最大;
7.2 DQN:用神经网络取代Q表格
为什么要用神经网络取代Q表呢?
如果动作状态的空间是连续的,则使用Q表可能无法对这种空间进行表述,(连续状态的可能取值是无限多的),
于是我们将“状态-Q值”看作是一种映射,也就是说:使用函数映射的思想来描述“状态-Q值”的映射关系;
既然是函数映射,于是我们的DNN就闪亮登场了~
7.3 GAE
Claude-3.5-sonnet-cursor:
GAE是在单条轨迹上,通过智能地组合不同时间跨度的TD误差来得到更好的优势估计的方法!
8. 构建流程
8.1 评价函数:使用渐进式方法建立评价函数
8.2 重复训练:训练5次取评测结果的均值
9. 更新流程
9.1 观察agent表现:理解目前存在的问题
更多推荐
所有评论(0)