强化学习整理

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) \]


补充要点

  1. 探索与利用的平衡

    • $ \epsilon $-贪婪策略是控制探索和利用的一种方法。
    • 随着训练的进行,通常会逐渐减少 $ \epsilon $(称为退火),更多地利用当前的知识。
  2. 学习率 $\alpha $

    • 决定新信息的引入速度。
    • $ \alpha $通常设置为小于 1 的值,并可能随着训练过程逐步减小。
  3. 折扣因子 $ \gamma $

    • 用于平衡短期和长期收益。
    • $ \gamma = 0 $ 只关注当前奖励,$ \gamma \to 1 $ 更注重长期奖励。
  4. 目标

    • 找到使累计奖励(回报)最大的策略。

伪代码

# 初始化
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]\)) 是为了处理 环境的随机性长期累积奖励的不确定性。以下是详细解释:


公式回顾

公式:

\[Q(s, a) = \mathbb{E} \left[ R(s, a) + \gamma \sum_{s'} P(s' \mid s, a) \max_{a'} Q(s', a') \right]. \]

公式的主要组成部分

  1. 随机性来源:
    • \(R(s, a)\):即时奖励可能是随机的。
    • \(P(s' \mid s, a)\):状态转移是随机的。
    • \(\max_{a'} Q(s', a')\):后续动作和回报可能受随机转移的影响。
  2. 目标:
    • \(Q(s, a)\) 是当前状态 \(s\) 和动作 \(a\)长期累积奖励的期望值,即它希望为智能体提供一个在随机环境下的价值评估。

为什么要用期望?

1. 奖励和转移的随机性

强化学习中的环境通常是非确定性的,也就是说:

  1. 即时奖励 \(R(s, a)\)

    • 在某些环境中,同样的状态 \(s\) 和动作 \(a\) 可能对应不同的奖励。例如:
      • 在一个游戏中,攻击敌人可能导致敌人逃跑(小奖励)或击败敌人(大奖励)。
    • 用期望 \(\mathbb{E}[\cdot]\) 可以对奖励的分布进行加权,得到整体的平均效果。
  2. 状态转移 \(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\)的价值为:

\[Q(s, a) = \mathbb{E} \left[ R(s, a) + \gamma \sum_{s'} P(s' \mid s, a) \cdot \max_{a'} Q(s', a') \right]. \]

  • \(\mathbb{E}[\cdot]\) 表示对所有可能路径上的奖励加权求期望。

6. 总结

期望 \(\mathbb{E}[\cdot]\) 的作用在于:

  1. 处理环境中的随机性:
    • 包括即时奖励的随机性 \(R(s, a)\) 和状态转移的随机性 \(P(s' \mid s, a)\)
  2. 评估长期回报的平均效果:
    • 未来的累积奖励可能有多种可能性,期望能更准确地反映动作的整体价值。
  3. 支持智能体的决策:
    • 期望使得智能体的决策更稳健,能够在随机环境中找到长期最优的动作。

总之,期望是强化学习中用来处理随机性和长期价值评估的重要工具。如果没有期望,Q 值函数将无法准确反映动作的平均价值和表现。

Sarsa是on-policy,采样和Q值更新一致

SARSA 中,更新 Q 值时并不是直接使用 $ \epsilon $-贪婪 策略,但更新公式所使用的动作 $ a' $ 确实是基于 $ \epsilon $-贪婪 策略选择的。换句话说,SARSA 的更新依赖于 $ \epsilon $-贪婪 策略选择的结果,因为 SARSA 是一个 On-policy 算法,其更新公式必须与当前的行为策略一致。


SARSA 的更新公式

SARSA 的 Q 值更新公式是:

\[Q(s, a) \leftarrow Q(s, a) + \alpha \big[ r + \gamma Q(s', a') - Q(s, a) \big] \]

公式中的关键部分

  • $ a' $:在下一状态 $ s' $ 中,根据 行为策略 $ \pi(s') $ 选择的动作。
  • 行为策略通常是 $ \epsilon $-贪婪策略
    • 以 $ 1 - \epsilon $ 的概率选择当前 Q 值最大的动作(利用)。
    • 以 $ \epsilon $ 的概率随机选择一个动作(探索)。

因此:

  • 如果在 $ s' $ 中选择的 $ a' $ 是 $ \epsilon $-贪婪策略采样的动作,那么更新公式中的 $ Q(s', a') $ 就是对应于该动作的 Q 值。
  • 这使得 SARSA 的更新与行为策略一致。

具体过程:如何选择 $ a' $ 并更新 Q 值

  1. 在状态 $ s $,选择一个动作 $ a $,通常基于 $ \epsilon $-贪婪策略。
  2. 执行动作 $ a $,观察奖励 $ r $ 和下一状态 $ s' $。
  3. 在状态 $ s' $ 中,通过行为策略选择动作 $ a' $
    • 如果行为策略是 $ \epsilon $-贪婪:
      • $ \epsilon $ 的概率随机选择一个动作。
      • $ 1 - \epsilon $ 的概率选择使 Q 值最大的动作。
  4. 使用更新公式更新 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 特性。

SARSA 中 $ \epsilon $-贪婪 的两个作用

  1. 在动作选择中引入随机性

    • $ \epsilon $-贪婪策略确保了算法能够探索不同的状态-动作对,而不仅仅是选择当前认为最优的动作。
  2. 影响更新公式中的 ( a' )

    • $ a' $ 是在 $ s' $ 中通过 $ \epsilon $-贪婪选择的动作,因此 $ Q(s', a') $ 可能对应一个随机选择的动作的 Q 值,而不是始终是 $ \text{argmax}_a Q(s', a) $。

总结

SARSA 中:

  1. 行为策略(通常为 $ \epsilon $-贪婪)控制了动作选择,包括:
    • 当前状态 $ s $ 中选择的动作 $ a $。
    • 下一状态 $ s' $ 中选择的动作 $ a' $。
  2. 更新公式中的 $ a' $ 是通过行为策略(如 $ \epsilon $-贪婪)选择的。
    • 因此,更新公式中会有一部分随机性(探索部分),也有一部分选择当前 Q 值最大的动作(利用部分)。
  3. 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 中,训练分为以下几个步骤:

  1. 基于当前策略网络选择动作

    • 对于每个状态 $ s $,根据策略网络 $ \pi_\theta(a|s) $ 的输出分布进行随机采样,选择一个动作$ a $。
  2. 执行动作并观察奖励

    • 执行动作 $ a $,并获得环境反馈:即时奖励 $ r $ 和下一状态$ s' $。
  3. 计算优势函数

    • 通过 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) $ 是当前状态的值。
  4. 计算损失并更新策略网络

    • 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 在每一步更新策略网络的参数。
  5. 更新 Critic 网络(值函数)

    • Critic 通过 最小化 TD 误差 来更新值函数 $ V_\phi(s) $。损失函数一般为:

      \[L_{\text{critic}} = (r + \gamma V(s') - V(s))^2 \]

    • 该损失度量了实际奖励和估计奖励之间的差异,Critic 网络通过梯度下降优化来减少这种差异。

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 的损失函数通常为:

\[ L_{\text{critic}} = (r + \gamma V(s') - V(s))^2 \]

  • 通过这个损失函数,Critic 网络通过梯度下降来更新参数 $ \phi $,从而改进值函数的估计。

3. 采样后的更新过程简述

  1. 采样:从策略 $ \pi_\theta(a|s) $ 中随机采样动作 $ a $。
  2. 执行动作:执行动作 $a $,获得奖励 $ r $ 和下一个状态 $ s' $。
  3. 计算优势:计算 优势函数 $ A(s, a) $,基于当前和下一个状态的值函数。
  4. 更新策略(Actor):通过策略梯度 $ \nabla_\theta \log \pi_\theta(a|s) \cdot A(s, a) $ 更新 Actor 网络的参数 $ \theta $。
  5. 更新值函数(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 $。


为什么要随机采样?

  1. 探索与利用的平衡

    • 随机采样自然地实现了 探索,这与基于值的方法(如 Q-Learning 或 $ \epsilon $-贪婪)不同。
    • 即使某些动作的概率相对较低,仍然可能被选中,从而避免过早地固定在某个局部最优解。
    • 在训练过程中,策略会不断调整其输出的概率分布,从而逐渐偏向更有回报的动作(利用),但仍然保留一定的随机性以保持探索。
  2. 通过梯度优化学习

    • 在 A2C 中,目标是通过 策略梯度 更新策略。通过对策略的概率分布进行优化,网络学习到如何分配更高的概率给那些带来更高回报的动作。
    • 通过随机采样,我们可以根据动作带来的实际回报(优势函数)调整策略的参数,从而改善未来的动作选择。

总结

在 A2C 中,$ a \sim \pi_\theta(a|s) $ 代表的是 随机采样。每次选择动作时,都是从当前策略输出的概率分布中进行抽样,而非选择一个固定的动作。这种方法能够自适应地实现探索与利用的平衡,并通过梯度优化逐步改进策略,最终提取出最优的策略。

posted @ 2024-11-17 02:53  GraphL  阅读(12)  评论(0编辑  收藏  举报