强化学习整理
Q-Learning 是off-policy,采样和Q值更新不一致。使用的是值更新
Q-Learning 是一种基于值的强化学习算法,主要通过与环境交互来更新 Q 值,从而找到最优策略。以下是 Q-Learning 的主要步骤和关键组成部分:
1. 初始化
- 初始化 Q 值表:为所有状态-动作对 $ Q(s, a) $ 赋初值(通常为零或小的随机值)。
- 设置超参数:
- $ \alpha $(学习率):决定新学到的值和现有值的权重。
- $ \gamma $(折扣因子):权衡当前奖励和未来奖励的重要性。
- $ \epsilon $(探索概率):用于控制探索与利用之间的平衡。
2. 交互与学习循环
在每个时间步,重复以下过程,直到满足终止条件(如达到目标状态或达到最大迭代次数):
(a) 根据策略选择动作
- 使用 $ \epsilon $-贪婪策略选择动作:
- 以 $ 1 - \epsilon $ 的概率选择当前 Q 值最大的动作(利用)。
- 以 $ \epsilon $ 的概率随机选择一个动作(探索)。
- 动作选择公式:\[a = \begin{cases} \text{argmax}_a Q(s, a), & \text{概率为 } 1 - \epsilon \\ \text{随机动作}, & \text{概率为 } \epsilon \end{cases} \]
(b) 执行动作并观察结果
- 执行动作 $ a $,从环境获得:
- 即时奖励 $ r $。
- 下一个状态 $ s' $。
(c) 更新 Q 值
- 使用 Q-Learning 更新公式:\[Q(s, a) \leftarrow Q(s, a) + \alpha \big[ r + \gamma \max_a Q(s', a) - Q(s, a) \big] \]
- $ Q(s, a) $:当前 Q 值。
- $ r $:即时奖励。
- $ \gamma \max_a Q(s', a) $:从下一状态开始的最大预期未来奖励。
- $ \alpha $:学习率,用于平衡新旧信息。
(d) 更新状态
- 将当前状态更新为 $ s' $。
3. 收敛与策略提取
- 当 Q 值收敛后,可以提取最优策略:\[\pi(s) = \text{argmax}_a Q(s, a) \]
补充要点
-
探索与利用的平衡:
- $ \epsilon $-贪婪策略是控制探索和利用的一种方法。
- 随着训练的进行,通常会逐渐减少 $ \epsilon $(称为退火),更多地利用当前的知识。
-
学习率 $\alpha $:
- 决定新信息的引入速度。
- $ \alpha $通常设置为小于 1 的值,并可能随着训练过程逐步减小。
-
折扣因子 $ \gamma $:
- 用于平衡短期和长期收益。
- $ \gamma = 0 $ 只关注当前奖励,$ \gamma \to 1 $ 更注重长期奖励。
-
目标:
- 找到使累计奖励(回报)最大的策略。
伪代码
# 初始化
Q = 初始化Q值表
for episode in range(最大回合数):
s = 初始化状态
while not 达到终止条件:
# 根据 ε-贪婪策略选择动作
if 随机数 < ε:
a = 随机选择动作
else:
a = argmax(Q[s, a])
# 执行动作,观察奖励和下一个状态
s', r = 执行动作(a)
# 更新Q值
Q[s, a] = Q[s, a] + α * (r + γ * max(Q[s', :]) - Q[s, a])
# 状态更新
s = s'
Q-Learning 的核心是通过更新 Q 值估计每个状态-动作对的预期回报,并最终提取最优策略。它的更新是基于 Bellman 方程的,是强化学习中一种简单而强大的方法。
要用期望表示不同的概率概率平均
在强化学习中,公式中用到 期望(\(\mathbb{E}[\cdot]\)) 是为了处理 环境的随机性 和 长期累积奖励的不确定性。以下是详细解释:
公式回顾
公式:
公式的主要组成部分
- 随机性来源:
- \(R(s, a)\):即时奖励可能是随机的。
- \(P(s' \mid s, a)\):状态转移是随机的。
- \(\max_{a'} Q(s', a')\):后续动作和回报可能受随机转移的影响。
- 目标:
- \(Q(s, a)\) 是当前状态 \(s\) 和动作 \(a\) 的 长期累积奖励的期望值,即它希望为智能体提供一个在随机环境下的价值评估。
为什么要用期望?
1. 奖励和转移的随机性
强化学习中的环境通常是非确定性的,也就是说:
-
即时奖励 \(R(s, a)\):
- 在某些环境中,同样的状态 \(s\) 和动作 \(a\) 可能对应不同的奖励。例如:
- 在一个游戏中,攻击敌人可能导致敌人逃跑(小奖励)或击败敌人(大奖励)。
- 用期望 \(\mathbb{E}[\cdot]\) 可以对奖励的分布进行加权,得到整体的平均效果。
- 在某些环境中,同样的状态 \(s\) 和动作 \(a\) 可能对应不同的奖励。例如:
-
状态转移 \(P(s' \mid s, a)\):
- 同样的状态和动作 \(s, a\) 后,可能转移到多个后续状态 \(s'\)。
- 每个 \(s'\) 的概率由 \(P(s' \mid s, a)\) 描述,需要根据这些概率对可能的未来回报加权求和。
数学解释:
如果动作 \(a\) 导致多个状态 \((s'\),这些状态有不同的概率 \(P(s' \mid s, a)\),未来回报为 \(\max_{a'} Q(s', a')\)。动作 \(a\)的价值为:
- \(\mathbb{E}[\cdot]\) 表示对所有可能路径上的奖励加权求期望。
6. 总结
期望 \(\mathbb{E}[\cdot]\) 的作用在于:
- 处理环境中的随机性:
- 包括即时奖励的随机性 \(R(s, a)\) 和状态转移的随机性 \(P(s' \mid s, a)\)。
- 评估长期回报的平均效果:
- 未来的累积奖励可能有多种可能性,期望能更准确地反映动作的整体价值。
- 支持智能体的决策:
- 期望使得智能体的决策更稳健,能够在随机环境中找到长期最优的动作。
总之,期望是强化学习中用来处理随机性和长期价值评估的重要工具。如果没有期望,Q 值函数将无法准确反映动作的平均价值和表现。
Sarsa是on-policy,采样和Q值更新一致
在 SARSA 中,更新 Q 值时并不是直接使用 $ \epsilon $-贪婪 策略,但更新公式所使用的动作 $ a' $ 确实是基于 $ \epsilon $-贪婪 策略选择的。换句话说,SARSA 的更新依赖于 $ \epsilon $-贪婪 策略选择的结果,因为 SARSA 是一个 On-policy 算法,其更新公式必须与当前的行为策略一致。
SARSA 的更新公式
SARSA 的 Q 值更新公式是:
公式中的关键部分
- $ a' $:在下一状态 $ s' $ 中,根据 行为策略 $ \pi(s') $ 选择的动作。
- 行为策略通常是 $ \epsilon $-贪婪策略:
- 以 $ 1 - \epsilon $ 的概率选择当前 Q 值最大的动作(利用)。
- 以 $ \epsilon $ 的概率随机选择一个动作(探索)。
因此:
- 如果在 $ s' $ 中选择的 $ a' $ 是 $ \epsilon $-贪婪策略采样的动作,那么更新公式中的 $ Q(s', a') $ 就是对应于该动作的 Q 值。
- 这使得 SARSA 的更新与行为策略一致。
具体过程:如何选择 $ a' $ 并更新 Q 值
- 在状态 $ s $,选择一个动作 $ a $,通常基于 $ \epsilon $-贪婪策略。
- 执行动作 $ a $,观察奖励 $ r $ 和下一状态 $ s' $。
- 在状态 $ s' $ 中,通过行为策略选择动作 $ a' $:
- 如果行为策略是 $ \epsilon $-贪婪:
- $ \epsilon $ 的概率随机选择一个动作。
- $ 1 - \epsilon $ 的概率选择使 Q 值最大的动作。
- 如果行为策略是 $ \epsilon $-贪婪:
- 使用更新公式更新 Q 值:\[Q(s, a) \leftarrow Q(s, a) + \alpha \big[ r + \gamma Q(s', a') - Q(s, a) \big] \]
SARSA 和 $ \epsilon$-贪婪 的关系
-
行为策略的作用:
- $ \epsilon $-贪婪策略控制了 SARSA 在状态 $ s' $ 中选择的动作 $ a' $。
- 行为策略的随机性确保了 SARSA 能够探索未访问的状态-动作对。
-
更新公式中的随机性:
- 更新公式中涉及到的 $ Q(s', a') $,其中的 $ a' $ 是行为策略(通常为 $ \epsilon $-贪婪)选择的。
- 由于 $ \epsilon $-贪婪策略可能随机选择动作,因此 SARSA 的更新也可能包含一些随机性。
-
与 Q-Learning 的对比:
- 在 Q-Learning 中,更新公式基于目标策略:\[Q(s, a) \leftarrow Q(s, a) + \alpha \big[ r + \gamma \max_{a'} Q(s', a') - Q(s, a) \big] \]
- 这里直接使用 $ \max_{a'} Q(s', a') $,不依赖于行为策略选择的动作 $ a' $。
- 而 SARSA 中的更新是基于行为策略选择的动作 $ a' $,这体现了它的 On-policy 特性。
- 在 Q-Learning 中,更新公式基于目标策略:
SARSA 中 $ \epsilon $-贪婪 的两个作用
-
在动作选择中引入随机性:
- $ \epsilon $-贪婪策略确保了算法能够探索不同的状态-动作对,而不仅仅是选择当前认为最优的动作。
-
影响更新公式中的 ( a' ):
- $ a' $ 是在 $ s' $ 中通过 $ \epsilon $-贪婪选择的动作,因此 $ Q(s', a') $ 可能对应一个随机选择的动作的 Q 值,而不是始终是 $ \text{argmax}_a Q(s', a) $。
总结
在 SARSA 中:
- 行为策略(通常为 $ \epsilon $-贪婪)控制了动作选择,包括:
- 当前状态 $ s $ 中选择的动作 $ a $。
- 下一状态 $ s' $ 中选择的动作 $ a' $。
- 更新公式中的 $ a' $ 是通过行为策略(如 $ \epsilon $-贪婪)选择的。
- 因此,更新公式中会有一部分随机性(探索部分),也有一部分选择当前 Q 值最大的动作(利用部分)。
- SARSA 的更新过程完全与行为策略一致,体现了它的 On-policy 特性。
最终,尽管训练过程中引入了随机性,SARSA 在收敛后可以提取出一个确定性策略 $ \pi(s) = \text{argmax}_a Q(s, a) $。
A2C(Advantage Actor-Critic)off-policy,采样与更新一致。使用的是策略更新
在 A2C(Advantage Actor-Critic) 中,每一步的动作选择是基于策略网络的概率分布 $\pi_\theta(a|s) $ 进行采样的,而采样的动作将用于更新策略网络。下面详细说明 采样后的更新过程。
1. 训练过程概述
在 A2C 中,训练分为以下几个步骤:
-
基于当前策略网络选择动作:
- 对于每个状态 $ s $,根据策略网络 $ \pi_\theta(a|s) $ 的输出分布进行随机采样,选择一个动作$ a $。
-
执行动作并观察奖励:
- 执行动作 $ a $,并获得环境反馈:即时奖励 $ r $ 和下一状态$ s' $。
-
计算优势函数:
- 通过 Critic 网络(值函数 $ V_\phi(s) \()估计状态的价值,用来计算 **优势函数**\) A(s, a) $,衡量动作 $ a $ 相对于当前状态的好坏。优势函数的常用形式为:\[A(s, a) = Q(s, a) - V(s) \]或者通过 TD 误差 近似:\[A(s, a) \approx r + \gamma V(s') - V(s) \]
- 其中,$ r + \gamma V(s') $ 是估计的下一状态的值加上奖励,$ V(s) $ 是当前状态的值。
- 通过 Critic 网络(值函数 $ V_\phi(s) \()估计状态的价值,用来计算 **优势函数**\) A(s, a) $,衡量动作 $ a $ 相对于当前状态的好坏。优势函数的常用形式为:
-
计算损失并更新策略网络:
- Actor 通过 策略梯度 更新网络的参数。更新目标是 最大化策略的期望回报,即通过梯度上升来更新参数:\[\nabla_\theta J(\pi_\theta) = \mathbb{E}_{s \sim d^\pi, a \sim \pi_\theta} \big[ \nabla_\theta \log \pi_\theta(a|s) A(s, a) \big] \]
- 这个公式的核心是 优势函数 $ A(s, a) $,它反映了选择动作 $ a $ 是否比期望的更好或更差。
- 通过 策略梯度,A2C 在每一步更新策略网络的参数。
- Actor 通过 策略梯度 更新网络的参数。更新目标是 最大化策略的期望回报,即通过梯度上升来更新参数:
-
更新 Critic 网络(值函数):
- Critic 通过 最小化 TD 误差 来更新值函数 $ V_\phi(s) $。损失函数一般为:\[L_{\text{critic}} = (r + \gamma V(s') - V(s))^2 \]
- 该损失度量了实际奖励和估计奖励之间的差异,Critic 网络通过梯度下降优化来减少这种差异。
- Critic 通过 最小化 TD 误差 来更新值函数 $ V_\phi(s) $。损失函数一般为:
2. 详细的更新步骤
策略网络(Actor)的更新
-
每次训练时,Actor 网络根据当前状态 $ s $ 和当前策略 $ \pi_\theta(a|s) $ 选择动作 $ a $。
-
然后,计算该动作的 优势函数 $ A(s, a) $,这个优势函数衡量了当前动作相较于平均水平的好坏。
-
策略梯度损失的核心是:
\[L_{\text{actor}} = - \log \pi_\theta(a|s) \cdot A(s, a) \]- 如果 $ A(s, a) > 0 $(意味着这个动作表现优于平均水平),则增加该动作的概率,促使策略继续选择该动作。
- 如果 $ A(s, a) < 0 $(意味着这个动作表现不如平均水平),则减少该动作的概率,促使策略避免该动作。
-
使用 随机梯度上升 更新策略网络的参数 $ \theta $,以最大化期望回报。
值函数网络(Critic)的更新
- Critic 网络的目标是 最小化 TD 误差,使得估计的状态价值 $ V(s) $ 接近实际的回报 $ r + \gamma V(s')$。
- Critic 的损失函数通常为:
- 通过这个损失函数,Critic 网络通过梯度下降来更新参数 $ \phi $,从而改进值函数的估计。
3. 采样后的更新过程简述
- 采样:从策略 $ \pi_\theta(a|s) $ 中随机采样动作 $ a $。
- 执行动作:执行动作 $a $,获得奖励 $ r $ 和下一个状态 $ s' $。
- 计算优势:计算 优势函数 $ A(s, a) $,基于当前和下一个状态的值函数。
- 更新策略(Actor):通过策略梯度 $ \nabla_\theta \log \pi_\theta(a|s) \cdot A(s, a) $ 更新 Actor 网络的参数 $ \theta $。
- 更新值函数(Critic):通过最小化 TD 误差 $ (r + \gamma V(s') - V(s))^2 $ 更新 Critic 网络的参数 $ \phi $。
4. 总结
A2C 中的训练过程基于 随机采样 和 策略梯度:
- 每一步都会从策略网络 $ \pi_\theta(a|s) $ 中采样动作。
- 然后,策略的更新依赖于 优势函数,这通过 Actor 网络的梯度更新来实现。
- Critic 网络用于估计状态值,并通过最小化 TD 误差来更新值函数。
这个训练过程不仅确保了探索,还通过优势函数帮助策略做出更好的动作选择,从而提高长期回报。
随机采样
是的,$ a \sim \pi_\theta(a|s) $ 表示从策略 $ \pi_\theta(a|s) $ 中随机采样动作。具体来说,在 A2C(Advantage Actor-Critic) 中,动作选择是通过从策略的概率分布中随机采样来实现的,这与像 $ \epsilon $-贪婪策略中通过确定性规则选择动作有所不同。
详细解释
在 A2C 这样的 基于策略的算法 中,策略 $ \pi_\theta(a|s) $ 是通过一个神经网络(Actor)参数化的,表示在状态 $ s $ 下选择动作 $ a $ 的概率。
采样过程
- 对于给定的状态 $ s $,策略网络输出一个动作的概率分布 $ \pi_\theta(a|s) $。
- 然后根据这个概率分布从中 随机采样 一个动作 $ a $,即:\[a \sim \pi_\theta(a|s) \]这意味着,每次选择动作时,选择的动作是从该概率分布中抽取的,而不是直接选择一个特定的动作。
举个例子
假设在某一状态 $ s $ 下,策略网络给出的动作概率分布是:
- $ \pi_\theta(a_1 | s) = 0.7 $
- $ \pi_\theta(a_2 | s) = 0.2$
- $ \pi_\theta(a_3 | s) = 0.1 $
这意味着:
- 动作 $ a_1 $ 被选择的概率是 70%。
- 动作 $ a_2 $ 被选择的概率是 20%。
- 动作 $ a_3 $ 被选择的概率是 10%。
通过 随机采样,每次在这个状态下,动作的选择可能是 $ a_1 \(、\) a_2 $、或 $ a_3 $,并且选择 $ a_1 $ 的概率会大于选择 $ a_2 $ 或 $ a_3 $。
为什么要随机采样?
-
探索与利用的平衡:
- 随机采样自然地实现了 探索,这与基于值的方法(如 Q-Learning 或 $ \epsilon $-贪婪)不同。
- 即使某些动作的概率相对较低,仍然可能被选中,从而避免过早地固定在某个局部最优解。
- 在训练过程中,策略会不断调整其输出的概率分布,从而逐渐偏向更有回报的动作(利用),但仍然保留一定的随机性以保持探索。
-
通过梯度优化学习:
- 在 A2C 中,目标是通过 策略梯度 更新策略。通过对策略的概率分布进行优化,网络学习到如何分配更高的概率给那些带来更高回报的动作。
- 通过随机采样,我们可以根据动作带来的实际回报(优势函数)调整策略的参数,从而改善未来的动作选择。
总结
在 A2C 中,$ a \sim \pi_\theta(a|s) $ 代表的是 随机采样。每次选择动作时,都是从当前策略输出的概率分布中进行抽样,而非选择一个固定的动作。这种方法能够自适应地实现探索与利用的平衡,并通过梯度优化逐步改进策略,最终提取出最优的策略。