Skip to content

第 21 章 强化学习

强化学习研究的是连续决策问题。它和监督学习、无监督学习最大的区别在于:模型不是只从固定数据集中学习,而是在和环境交互的过程中,根据奖励信号调整自己的行为。

监督学习通常给出标准答案,例如一张图片对应一个类别;强化学习往往没有每一步的标准答案,只有执行动作以后得到的奖励,而且一个动作的好坏可能要过很多步以后才能看出来。

强化学习问题

强化学习中有两个核心对象:智能体和环境。

概念含义
智能体做决策的主体
环境智能体交互的外部系统
状态当前局面的描述
动作智能体可以选择的行为
奖励环境对动作结果的反馈
策略在某个状态下选择动作的方法

一次交互可以写成:

text
观察状态 -> 选择动作 -> 环境转移 -> 得到奖励 -> 进入新状态

强化学习的目标不是让眼前奖励最大,而是让长期累计奖励最大。例如下棋时,某一步可能暂时损失棋子,却为后面取胜创造条件;自动驾驶中,当前减速可能牺牲速度,却能换来更安全的长期结果。

马尔可夫决策过程

马尔可夫决策过程是强化学习最常用的数学模型,通常记为:

(S,A,P,R,γ)

其中:

符号含义
S状态集合
A动作集合
P(ss,a)在状态 s 执行动作 a 后转移到 s 的概率
R(s,a,s)转移过程中得到的奖励
γ折扣因子

马尔可夫性指的是:如果当前状态已经包含了决策所需的信息,那么未来只依赖当前状态和当前动作,不再依赖更早的历史。

P(st+1st,at,st1,at1,)=P(st+1st,at)

这个假设很重要。它让连续决策问题可以用状态转移概率和奖励函数来描述,否则完整历史会越来越长,问题很难计算。

回报和折扣因子

从时刻 t 开始的累计回报记为:

Gt=Rt+1+γRt+2+γ2Rt+3+

γ 是折扣因子,取值通常在 0 到 1 之间。

  • γ 越接近 0,智能体越重视眼前奖励。
  • γ 越接近 1,智能体越重视长期奖励。

折扣因子不是简单的数学技巧,它表达了两个事实:越远的未来通常越不确定;同时在无限长任务中,折扣可以让累计回报保持有限。

策略

策略描述智能体在某个状态下如何选择动作。

确定性策略直接给出动作:

a=π(s)

随机性策略给出动作概率分布:

π(as)=P(At=aSt=s)

在强化学习中,学习的目标往往就是找到一个好策略。好策略不是在每个状态都选择短期奖励最大的动作,而是能让长期回报期望最大。

状态价值函数

状态价值函数表示:从状态 s 出发,并且之后一直按策略 π 行动,期望能得到多少长期回报。

Vπ(s)=Eπ[GtSt=s]

它回答的问题是:这个状态本身有多好。

例如在棋类问题中,一个局面虽然当前没有直接得分,但如果它通向很多胜利路线,那么它的状态价值就高。

动作价值函数

动作价值函数表示:在状态 s 下先执行动作 a,之后再按策略 π 行动,期望能得到多少长期回报。

Qπ(s,a)=Eπ[GtSt=s,At=a]

它回答的问题是:在这个状态下,这个动作有多好。

如果已经知道 Qπ(s,a),选择动作就比较直接:在当前状态下比较不同动作的 Q 值,选择价值高的动作。

贝尔曼方程

价值函数之所以重要,是因为它满足递推关系。一个状态的价值可以分成两部分:

  1. 当前一步得到的奖励。
  2. 下一状态的长期价值。

状态价值函数的贝尔曼期望方程为:

Vπ(s)=aπ(as)sP(ss,a)[R(s,a,s)+γVπ(s)]

这条公式的意思是:状态 s 的价值等于所有可能动作、所有可能下一状态带来的“当前奖励 + 折扣后的未来价值”的加权平均。

最优状态价值函数满足贝尔曼最优方程:

V(s)=maxasP(ss,a)[R(s,a,s)+γV(s)]

和贝尔曼期望方程相比,最优方程把“按当前策略平均选择动作”换成了“选择最好的动作”。

动态规划方法

如果环境模型已知,也就是 P(ss,a)R(s,a,s) 已知,可以使用动态规划求解。

策略迭代包含两步:

  1. 策略评估:在当前策略下计算价值函数。
  2. 策略改进:根据价值函数更新策略。

价值迭代则把评估和改进合在一起,反复使用贝尔曼最优方程更新价值函数。

动态规划方法的限制是:它要求知道环境转移模型,而且状态空间不能太大。真实问题中,环境模型常常未知,状态也可能非常多,所以需要无模型方法。

蒙特卡洛方法

蒙特卡洛方法不需要知道环境转移概率。它通过完整采样一条轨迹,等一局结束后,用实际得到的回报估计价值。

例如从状态 s 出发多次,每次得到一个回报 G,就可以用这些回报的平均值估计 V(s)

它的优点是直观、不需要环境模型;缺点是必须等到一条轨迹结束以后才能更新,方差也可能比较大。

时序差分学习

时序差分学习结合了蒙特卡洛和动态规划的思想:它不需要环境模型,也不必等到整条轨迹结束,而是走一步就更新一次。

状态价值的 TD 更新可以写成:

V(St)V(St)+α[Rt+1+γV(St+1)V(St)]

括号里的部分叫 TD 误差:

δt=Rt+1+γV(St+1)V(St)

它表示“当前估计”和“走一步以后得到的新估计”之间的差。

SARSA

SARSA 是一种基于动作价值函数的时序差分方法。名字来自一次更新中用到的五个量:

(St,At,Rt+1,St+1,At+1)

更新公式为:

Q(St,At)Q(St,At)+α[Rt+1+γQ(St+1,At+1)Q(St,At)]

SARSA 使用的是实际下一步会采取的动作 At+1,因此它是 on-policy 方法。它学习的是当前策略本身的价值。

Q-learning

Q-learning 也是基于动作价值函数的时序差分方法,但它更新时使用下一状态中价值最大的动作:

Q(St,At)Q(St,At)+α[Rt+1+γmaxaQ(St+1,a)Q(St,At)]

Q-learning 是 off-policy 方法。它采样时可以带探索,但更新目标直接朝最优策略靠近。

SARSA 和 Q-learning 的区别可以这样理解:

方法下一步动作来自哪里学到的策略
SARSA实际执行的下一动作当前探索策略
Q-learning下一状态下价值最大的动作最优贪心策略

探索和利用

强化学习必须处理探索和利用的矛盾。

  • 利用:选择当前看起来最好的动作。
  • 探索:尝试不确定的动作,获取更多信息。

常见方法是 ϵ-greedy 策略:以 1ϵ 的概率选择当前最优动作,以 ϵ 的概率随机选择动作。

训练早期通常需要更多探索;训练后期可以逐渐减少 ϵ,让策略更多利用已经学到的价值。

深度强化学习

当状态空间很大时,无法为每个状态和动作都维护一个表格。深度强化学习用神经网络近似价值函数或策略函数。

DQN 用神经网络近似 Q(s,a)。它相比普通 Q-learning 多了两个重要技巧:

技巧作用
经验回放把交互样本存入缓冲区,随机采样训练,减少样本相关性
目标网络用一个更新较慢的网络产生目标值,稳定训练

DQN 的目标值通常写成:

y=r+γmaxaQtarget(s,a)

然后让当前网络的 Q(s,a) 接近这个目标值。

策略梯度和 Actor-Critic

价值方法先学习动作价值,再根据价值选择动作。策略梯度方法则直接参数化策略:

πθ(as)

然后调整参数 θ,让能带来高回报的动作概率变大。

Actor-Critic 结合了两种思路:

部分作用
Actor表示策略,负责选择动作
Critic估计价值,评价动作好坏

Actor 根据 Critic 的评价更新策略,Critic 根据环境反馈更新价值估计。许多现代强化学习算法都可以看作 Actor-Critic 框架的变体。

学习时容易混淆的点

强化学习里最容易混淆的是“奖励”和“价值”。奖励是一步得到的即时反馈,价值是从当前状态或动作出发的长期回报期望。

另一个常见混淆是“有模型”和“无模型”。有模型方法知道或学习环境转移模型;无模型方法不显式建模环境转移,而是直接学习价值函数或策略。

还要注意,强化学习训练不稳定是常态:样本之间相关、奖励稀疏、策略变化会改变数据分布,都会让训练比普通监督学习更难。

参考阅读

Powered by VitePress