接上文:https://blog.youkuaiyun.com/Rsbstep/article/details/146640732?spm=1011.2124.3001.6209
TD learning of optimal action values: Q-learning
Sarsa 能够估计给定策略的动作值,它必须与策略改进步骤相结合,才能找到最优策略。
Q-learning可以直接估计最优动作值,进而得到最优策略。
算法描述
- Q-learning 更新公式
Q-learning算法为
qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−(rt+1+γmaxa∈Aqt(st+1,a))],qt+1(s,a)=qt(s,a),∀(s,a)≠(st,at), \begin{align*} q_{t+1}(s_t, a_t) &= q_t(s_t, a_t) - \alpha_t(s_t, a_t) \Big[ q_t(s_t, a_t) - \big( r_{t+1} + \gamma \max_{a \in \mathcal{A}} q_t(s_{t+1}, a) \big) \Big], \\ q_{t+1}(s, a) &= q_t(s, a), \quad \forall (s,a) \neq (s_t,a_t), \end{align*} qt+1(st,at)qt+1(s,a)=qt(st,at)−αt(st,at)[qt(st,at)−(rt+1+γa∈Amaxqt(st+1,a))],=qt(s,a),∀(s,a)=(st,at),
- 符号含义:
- qt(st,at)q_t(s_t, a_t)qt(st,at):时刻 ttt,状态 sts_tst 下执行动作 ata_tat 的动作值(Q值)。
- αt(st,at)\alpha_t(s_t, a_t)αt(st,at):学习率,控制每次更新的步长。
- rt+1r_{t+1}rt+1:执行动作 ata_tat 后,从状态 sts_tst 转移到下一状态 st+1s_{t+1}st+1 获得的即时奖励。
- γ\gammaγ:折扣因子,衡量未来奖励的重要性。
- maxa∈Aqt(st+1,a)\max_{a \in \mathcal{A}} q_t(s_{t+1}, a)maxa∈Aqt(st+1,a):对下一状态 st+1s_{t+1}st+1 下所有可选动作 aaa 的Q值取最大值,代表对未来最优动作的估计。
- 更新逻辑:
- qt+1(st,at)q_{t+1}(s_t, a_t)qt+1(st,at) 的更新由“当前Q值”减去“学习率 × 误差”构成。误差是当前Q值与 TD目标 的差值。TD目标为 rt+1+γmaxa∈Aqt(st+1,a)r_{t+1} + \gamma \max_{a \in \mathcal{A}} q_t(s_{t+1}, a)rt+1+γmaxa∈Aqt(st+1,a),它融合了即时奖励和对未来最优状态的预估,体现了Q-learning直接逼近最优策略的特性。
- 非更新部分:
- 对于非 (st,at)(s_t, a_t)(st,at) 的状态-动作对 (s,a)(s, a)(s,a),Q值不更新,即 qt+1(s,a)=qt(s,a)q_{t+1}(s, a) = q_t(s, a)qt+1(s,a)=qt(s,a)。
-
与Sarsa的TD目标差异
- Q-learning:TD目标取未来状态所有动作Q值的最大值 maxa∈Aqt(st+1,a)\max_{a \in \mathcal{A}} q_t(s_{t+1}, a)maxa∈Aqt(st+1,a),属于离线策略(不依赖当前策略选择的动作,直接向最优策略逼近)。
- Sarsa:TD目标使用下一状态实际执行动作 at+1a_{t+1}at+1 的Q值 qt(st+1,at+1)q_t(s_{t+1}, a_{t+1})qt(st+1,at+1),属于在线策略(基于当前策略生成的动作更新,更保守)。
两者核心区别在于对未来动作的处理:Q-learning追求最优动作,Sarsa依赖当前策略的动作,这导致Q-learning更激进地探索最优策略,而Sarsa更贴合当前策略的执行路径。
-
从数学角度看,Q-learning做了什么?
它旨在求解
q(s,a)=E[Rt+1+γmaxaq(St+1,a)∣St=s,At=a],∀s,a. q(s, a) = \mathbb{E}\left[ R_{t+1} + \gamma \max_{a} q(S_{t+1}, a) \Big| S_t = s, A_t = a \right], \quad \forall s, a. q(s,a)=E[Rt+1+γamaxq(St+1,a)St=s,At=a],∀s,a.
这是用动作值表达的贝尔曼最优性方程。
off-policy与on-policy
在进一步学习 Q-learning 之前,我们首先介绍两个重要概念:同策略学习(on-policy learning)和异策略学习(off-policy learning)。
在时序差分(TD)学习任务中存在两种策略:
- 行为策略(behavior policy) 用于生成经验样本。
- 目标策略(target policy) 持续向最优策略更新。
同策略(On-policy)与异策略(Off-policy)的对比:
- 当行为策略与目标策略相同时,这类学习称为 同策略学习(on-policy)。
- 当两者不同时,这类学习称为 异策略学习(off-policy)。
off-policy学习的优势:
- 它可以基于其他任意策略生成的经验样本搜索最优策略。
- 作为一种重要的特殊情况,行为策略可以被选为探索性策略。例如,如果我们想估计所有状态-动作对的动作值,我们可以使用探索性策略生成能充分多次访问每个状态-动作对的回合。
Sarsa是on-policy
-
首先,Sarsa 旨在求解给定策略 πππ 的贝尔曼方程:
qπ(s,a)=E[R+γqπ(S′,A′)∣s,a],∀s,a. q_\pi(s, a) = \mathbb{E}\big[ R + \gamma q_\pi(S', A') \mid s, a \big], \quad \forall s, a. qπ(s,a)=E[R+γqπ(S′,A′)∣s,a],∀s,a.
其中 R∼p(R∣s,a)R \sim p(R \mid s, a)R∼p(R∣s,a),S′∼p(S′∣s,a)S' \sim p(S' \mid s, a)S′∼p(S′∣s,a),A′∼π(A′∣S′)A' \sim \pi(A' \mid S')A′∼π(A′∣S′)。- R∼p(R∣s,a)R \sim p(R \mid s, a)R∼p(R∣s,a):奖励 RRR 服从“在状态 sss 下执行动作 aaa 时”的概率分布 p(R∣s,a)p(R \mid s, a)p(R∣s,a)。即给定状态 sss 和动作 aaa,奖励 RRR 的出现概率由 p(R∣s,a)p(R \mid s, a)p(R∣s,a) 描述。
- S′∼p(S′∣s,a)S' \sim p(S' \mid s, a)S′∼p(S′∣s,a):下一个状态 S′S'S′ 服从“在状态 sss 下执行动作 aaa 时”的状态转移概率分布 p(S′∣s,a)p(S' \mid s, a)p(S′∣s,a)。即执行动作 aaa 后,从状态 sss 转移到下一状态 S′S'S′ 的概率由 p(S′∣s,a)p(S' \mid s, a)p(S′∣s,a) 决定。
- A′∼π(A′∣S′)A' \sim \pi(A' \mid S')A′∼π(A′∣S′):下一个动作 A′A'A′ 服从策略 π\piπ 在状态 S′S'S′ 下的动作选择概率分布。即策略 π\piπ 根据当前状态 S′S'S′,以特定概率选择动作 A′A'A′。
-
其次,算法为
qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−(rt+1+γqt(st+1,at+1))], q_{t+1}(s_t, a_t) = q_t(s_t, a_t) - \alpha_t(s_t, a_t) \Big[ q_t(s_t, a_t) - \big( r_{t+1} + \gamma q_t(s_{t+1}, a_{t+1}) \big) \Big], qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−(rt+1+γqt(st+1,at+1))],
其需要 (st,at,rt+1,st+1,at+1)(s_t, a_t, r_{t+1}, s_{t+1}, a_{t+1})(st,at,rt+1,st+1,at+1):- 若给定 (st,at)(s_t, a_t)(st,at),则 rt+1r_{t+1}rt+1 和 st+1s_{t+1}st+1 不依赖任何策略!
- at+1a_{t+1}at+1 是根据 πt(st+1)\pi_t(s_{t+1})πt(st+1) 生成的!
-
πt\pi_tπt 既是目标策略,也是行为策略。
蒙特卡洛学习是on-policy
- 首先,蒙特卡洛(MC)方法旨在求解
qπ(s,a)=E[Rt+1+γRt+2+⋯∣St=s,At=a],∀s,a. q_\pi(s, a) = \mathbb{E}\big[ R_{t+1} + \gamma R_{t+2} + \dots \mid S_t = s, A_t = a \big], \quad \forall s, a. qπ(s,a)=E[Rt+1+γRt+2+⋯∣St=s,At=a],∀s,a.
其中样本是根据给定策略 π\piπ 生成的。 - 其次,蒙特卡洛方法的实现为
q(s,a)≈rt+1+γrt+2+… q(s, a) \approx r_{t+1} + \gamma r_{t+2} + \dots q(s,a)≈rt+1+γrt+2+… - (该方法中)使用一个策略生成样本,这些样本进一步用于估计该策略的动作值。基于动作值,我们可以改进策略。
Q-learning是off-policy
- 首先,Q-learning旨在求解贝尔曼最优性方程
q(s,a)=E[Rt+1+γmaxaq(St+1,a)∣St=s,At=a],∀s,a. q(s, a) = \mathbb{E}\left[ R_{t+1} + \gamma \max_{a} q(S_{t+1}, a) \Big| S_t = s, A_t = a \right], \quad \forall s, a. q(s,a)=E[Rt+1+γamaxq(St+1,a)St=s,At=a],∀s,a. - 其次,算法为
qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−[rt+1+γmaxa∈Aqt(st+1,a)]] q_{t+1}(s_t, a_t) = q_t(s_t, a_t) - \alpha_t(s_t, a_t) \left[ q_t(s_t, a_t) - \left[ r_{t+1} + \gamma \max_{a \in \mathcal{A}} q_t(s_{t+1}, a) \right] \right] qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−[rt+1+γa∈Amaxqt(st+1,a)]] - 该算法需要 (st,at,rt+1,st+1)(s_t, a_t, r_{t+1}, s_{t+1})(st,at,rt+1,st+1)。
- 若给定 (st,at)(s_t, a_t)(st,at),则 rt+1r_{t+1}rt+1 和 st+1s_{t+1}st+1 不依赖任何策略!
- 从 sts_tst 生成 ata_tat 的行为策略可以是任意策略。目标策略将收敛到最优策略。
Q-learning算法的实现
虽然Q 学习是off-policy的,它既可以以off-policy方式实现,也可以以on-policy方式实现。
on-policy版本
对每个情节(episode),执行以下操作:
如果当前状态 sts_tst 不是目标状态,执行:
收集经验 (st,at,rt+1,st+1)(s_t, a_t, r_{t+1}, s_{t+1})(st,at,rt+1,st+1):根据 πt(st)\pi_t(s_t)πt(st) 采取动作 ata_tat,生成 rt+1,st+1r_{t+1}, s_{t+1}rt+1,st+1。
更新 Q 值: qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−[rt+1+γmaxaqt(st+1,a)]]q_{t+1}(s_t, a_t) = q_t(s_t, a_t) - \alpha_t(s_t, a_t) \Big[ q_t(s_t, a_t) - \big[ r_{t+1} + \gamma \max_a q_t(s_{t+1}, a) \big] \Big]qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−[rt+1+γmaxaqt(st+1,a)]]
更新策略:
若 a=argmaxaqt+1(st,a)a = \arg\max_a q_{t+1}(s_t, a)a=argmaxaqt+1(st,a),则
πt+1(a∣st)=1−ϵ∣A∣(∣A∣−1)\pi_{t+1}(a \mid s_t) = 1 - \frac{\epsilon}{|\mathcal{A}|}(|\mathcal{A}| - 1)πt+1(a∣st)=1−∣A∣ϵ(∣A∣−1)
否则
πt+1(a∣st)=ϵ∣A∣\pi_{t+1}(a \mid s_t) = \frac{\epsilon}{|\mathcal{A}|}πt+1(a∣st)=∣A∣ϵ
off-policy版本
对于由 πb\pi_bπb 生成的每个episode {s0,a0,r1,s1,a1,r2,… }\{s_0, a_0, r_1, s_1, a_1, r_2, \dots\}{s0,a0,r1,s1,a1,r2,…},执行:
对于该情节的每个步骤 t=0,1,2,…t = 0, 1, 2, \dotst=0,1,2,…,执行:
更新q值:
qt+1(st,at)=qt(st,at)−αt(st,at)[q(st,at)−[rt+1+γmaxaqt(st+1,a)]]q_{t+1}(s_t, a_t) = q_t(s_t, a_t)-\alpha_t(s_t, a_t) \Big[ q(s_t, a_t) - \big[ r_{t+1} +\gamma \max_a q_t(s_{t+1}, a) \big] \Big]qt+1(st,at)=qt(st,at)−αt(st,at)[q(st,at)−[rt+1+γmaxaqt(st+1,a)]]
更新目标策略:
若 a=argmaxaqt+1(st,a)a = \arg\max_a q_{t+1}(s_t, a)a=argmaxaqt+1(st,a),则 πT,t+1(a∣st)=1\pi_{T,t+1}(a \mid s_t) = 1πT,t+1(a∣st)=1
否则 πT,t+1(a∣st)=0\pi_{T,t+1}(a \mid s_t) = 0πT,t+1(a∣st)=0
Q-learning的例子
任务描述:
- 这些示例中的任务是为所有状态找到最优策略。
- 奖励设置为 rboundary=rforbidden=−1r_{\text{boundary}} = r_{\text{forbidden}} = -1rboundary=rforbidden=−1,且 rtarget=1r_{\text{target}} = 1rtarget=1。折扣率为 γ=0.9\gamma = 0.9γ=0.9,学习率为 α=0.1\alpha = 0.1α=0.1。
真实情况:一个最优策略以及对应的最优状态值。
行为策略与生成的经验(10510^5105步):
off-policy Q-learning找到的策略:
探索的重要性:10510^5105步的episode。如果策略的探索性不足,生成的样本质量就会欠佳。
综合对比
我们介绍的所有算法都可以用一个统一的表达式表示:
qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−qˉt],
q_{t+1}(s_t, a_t) = q_t(s_t, a_t) - \alpha_t(s_t, a_t) \big[ q_t(s_t, a_t) - \bar{q}_t \big],
qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−qˉt],
其中 qˉt\bar{q}_tqˉt 是时序差分(TD)目标。不同的 TD 算法有不同的 qˉt\bar{q}_tqˉt。
Algorithm | Expression of qˉt\bar{q}_tqˉt |
---|---|
Sarsa | qˉt=rt+1+γqt(st+1,at+1)\bar{q}_t = r_{t+1} + \gamma q_t(s_{t+1}, a_{t+1})qˉt=rt+1+γqt(st+1,at+1) |
n-step Sarsa | qˉt=rt+1+γrt+2+⋯+γnqt(st+n,at+n)\bar{q}_t = r_{t+1} + \gamma r_{t+2} + \cdots + \gamma^n q_t(s_{t+n}, a_{t+n})qˉt=rt+1+γrt+2+⋯+γnqt(st+n,at+n) |
Expected Sarsa | qˉt=rt+1+γ∑aπt(a∣st+1)qt(st+1,a)\bar{q}_t = r_{t+1} + \gamma \sum_a \pi_t(a \mid s_{t+1}) q_t(s_{t+1}, a)qˉt=rt+1+γ∑aπt(a∣st+1)qt(st+1,a) |
Q-learning | qˉt=rt+1+γmaxaqt(st+1,a)\bar{q}_t = r_{t+1} + \gamma \max_a q_t(s_{t+1}, a)qˉt=rt+1+γmaxaqt(st+1,a) |
Monte Carlo | qˉt=rt+1+γrt+2+…\bar{q}_t = r_{t+1} + \gamma r_{t+2} + \dotsqˉt=rt+1+γrt+2+… |
通过设置 αt(st,at)=1\alpha_t(s_t, a_t) = 1αt(st,at)=1,蒙特卡洛方法也可以用这个统一表达式表示,因此 qt+1(st,at)=qˉtq_{t+1}(s_t, a_t) = \bar{q}_tqt+1(st,at)=qˉt。