想象一下,你要记住世界上所有城市的位置和价值。如果使用表格,你需要为每个城市创建一个条目,这显然不可能。但如果你学会了"城市的价值取决于它的地理位置、人口、经济等因素",你就可以用这些因素来估计任何城市的价值,即使你从未去过那个城市。这就是泛化的思想。
在强化学习中,状态空间可能非常大。比如西洋双陆棋有10^20种可能的棋盘状态,即使每秒访问1000个状态,也需要10^10年才能访问所有状态。显然,我们不可能访问所有状态,必须学会泛化:从未访问过的状态中学习,理解"相似状态应该有相似价值"。
核心观点
强化学习中的泛化是通过函数近似将价值函数或Q函数表示为参数化函数,使智能体能够从未访问过的状态中学习,并处理巨大的状态空间。深度强化学习使用深度神经网络作为函数近似器,在复杂任务中取得了突破性进展。
这个观点的核心在于:泛化让强化学习从"记忆"变为"理解"。在表格表示中,智能体只能记住访问过的状态,无法处理未访问过的状态。通过函数近似,智能体可以学习状态的"特征",理解"相似状态应该有相似价值",从而泛化到新状态。
深度强化学习是函数近似的自然延伸。当线性函数近似不够时,深度神经网络可以提供强大的非线性函数近似能力,直接从原始输入(如图像)学习特征表示。这使得强化学习可以处理更复杂、更高维的任务,如Atari游戏、围棋、机器人控制等。
一、为什么需要泛化?
1.1 表格表示的局限性
在小的状态空间中,我们可以使用表格来表示价值函数或Q函数:为每个状态(或状态-动作对)存储一个值。这就像为每个城市创建一个条目,记录它的价值。
但在大的状态空间中,表格表示变得不切实际。比如西洋双陆棋有10^20种状态,我们不可能为每个状态创建一个条目。即使可以,访问所有状态也需要天文数字的时间。
1.2 泛化的必要性
泛化让智能体能够从未访问过的状态中学习。通过函数近似,智能体可以学习状态的"特征"(如位置、速度、距离目标等),理解"具有相似特征的状态应该有相似价值",从而估计未访问状态的价值。
这就像你学会了"靠近终点的位置价值高",那么即使你从未访问过某个具体位置,只要你知道它"靠近终点",就可以估计它的价值。这种泛化能力让强化学习可以处理巨大的状态空间。
1.3 函数近似的优势
函数近似将价值函数或Q函数表示为参数化函数,用少量参数(如20个)近似大量状态值(如10^20个)。这使得智能体可以用更少的参数学习,并且能够泛化到未访问过的状态。
Tesauro的西洋双陆棋程序(1992)就是一个例子:它只探索了游戏状态空间的极小部分,但通过函数近似,学会了玩整个游戏。这证明了函数近似的强大。
二、函数近似基础
2.1 线性函数近似
最简单的函数近似是线性函数近似: U ^ ( s ) = θ 1 f 1 ( s ) + θ 2 f 2 ( s ) + . . . + θ n f n ( s ) Û(s) = θ₁f₁(s) + θ₂f₂(s) + ... + θₙfₙ(s) U^(s)=θ1f1(s)+θ2f2(s)+...+θnfn(s),其中fᵢ(s)是状态s的特征,θᵢ是参数。这就像用特征的加权和来估计状态价值。
例如,在4×3世界中,我们可以使用简单的线性函数近似: U ^ ( x , y ) = θ 0 + θ 1 x + θ 2 y Û(x, y) = θ₀ + θ₁x + θ₂y U^(x,y)=θ0+θ1x+θ2y,其中x和y是状态的坐标(特征)。如果(θ₀, θ₁, θ₂) = (0.5, 0.2, 0.1),那么Û(1,1) = 0.8。
2.2 近似直接效用估计
近似直接效用估计将直接效用估计与函数近似结合。智能体在状态空间中生成轨迹,从给定状态到终止的奖励总和作为监督学习的训练样本。
在线学习算法在每次试验后更新参数。例如,如果估计 U ^ ( 1 , 1 ) = 0.8 Û(1,1) = 0.8 U^(1,1)=0.8,但观察到的总奖励是0.4,就需要减少估计。误差函数是 E t ( s ) = ( U ^ θ ( s ) − u t ( s ) ) 2 / 2 E_t(s) = (Û_θ(s) - u_t(s))² / 2 Et(s)=(U^θ(s)−ut(s))2/2,其中u_t(s)是观察到的总奖励。
参数更新规则基于误差函数的梯度: θ i ← θ i + α [ u t ( s ) − U ^ θ ( s ) ] ∂ U ^ θ ( s ) / ∂ θ i θᵢ ← θᵢ + α[u_t(s) - Û_θ(s)] ∂Û_θ(s) / ∂θᵢ θi←θi+α[ut(s)−U^θ(s)]∂U^θ(s)/∂θi。对于线性函数近似器 U ^ θ ( s ) = θ 0 + θ 1 x + θ 2 y Û_θ(s) = θ₀ + θ₁x + θ₂y U^θ(s)=θ0+θ1x+θ2y,更新规则是: θ 0 ← θ 0 + α [ u t ( s ) − U ^ θ ( s ) ] , θ 1 ← θ 1 + α [ u t ( s ) − U ^ θ ( s ) ] x , θ 2 ← θ 2 + α [ u t ( s ) − U ^ θ ( s ) ] y θ₀ ← θ₀ + α[u_t(s) - Û_θ(s)],θ₁ ← θ₁ + α[u_t(s) - Û_θ(s)]x,θ₂ ← θ₂ + α[u_t(s) - Û_θ(s)]y θ0←θ0+α[ut(s)−U^θ(s)],θ1←θ1+α[ut(s)−U^θ(s)]x,θ2←θ2+α[ut(s)−U^θ(s)]y。
2.3 泛化的效果
泛化的效果是:改变参数θ以响应两个观察状态之间的转移,也会影响其他状态的Û值。这就是泛化的核心思想:通过共享参数,所有状态的价值估计相互影响,使得智能体可以从访问过的状态学习,泛化到未访问过的状态。
例如,如果Û(1,1) = 0.8但u(1,1) = 0.4,那么θ₀、θ₁、θ₂都会减少0.4α,这不仅减少了(1,1)的误差,也影响了所有其他状态的估计。这种共享使得函数近似可以泛化。
2.4 函数近似的效果
函数近似可以导致更快的学习,如果假设空间是合适的。在小的4×3世界中,线性函数近似的改进有限;但在大的10×10世界中(+1奖励在(10,10)),改进更明显。
但如果真实效用函数不适合线性近似,性能会很差。比如,在10×10世界中,如果奖励在(5,5),真实效用函数是"金字塔状"的,线性近似Û(x, y) = θ₀ + θ₁x + θ₂y会表现很差。
改进线性函数近似的方法是:引入状态的非线性函数作为特征。例如,f_k(x, y) = √((x-x_g)² + (y-y_g)²),测量到目标的距离。有了这样的特征,线性函数近似器可以表现良好。
三、近似时序差分学习
3.1 TD学习的函数近似
近似时序差分学习将这些思想应用到时序差分学习器。智能体调整参数以减少连续状态之间的时序差分。
对于效用函数的TD学习,更新规则是:θᵢ ← θᵢ + α[R(s, a, s’) + γ Û_θ(s’) - Û_θ(s)] ∂Û_θ(s) / ∂θᵢ。对于Q值函数的Q学习,更新规则是:θᵢ ← θᵢ + α[R(s, a, s’) + γ max_a’ Q_θ(s’, a’) - Q_θ(s, a)] ∂Q_θ(s, a) / ∂θᵢ。
3.2 收敛性保证
对于被动TD学习与线性函数近似器,可以证明收敛到最接近真实函数的近似。但对于主动学习和非线性函数(如神经网络),这样的结果很难获得,参数甚至可能发散。
这就像线性函数近似有理论保证,但非线性函数近似(如神经网络)的收敛性更难保证。这是深度强化学习面临的一个挑战。
3.3 灾难性遗忘
灾难性遗忘(Catastrophic Forgetting)是函数近似的一个严重问题。例如,自动驾驶汽车学会了在道路中央行驶,但可能后来"忘记"了边缘的危险,导致事故。
这发生是因为价值函数在安全的中央区域变得平坦,线性特征可能导致汽车滑出。当智能体专注于学习某些区域时,可能忘记其他区域的知识。
3.4 经验回放
经验回放(Experience Replay)是解决灾难性遗忘的方法。算法存储和回放过去的轨迹,确保价值函数对于状态空间中很少访问的部分仍然准确。
这就像你定期复习学过的知识,防止忘记。通过回放过去的经验,智能体可以保持对所有区域的知识,而不仅仅是当前关注的区域。
四、深度强化学习
4.1 为什么需要深度神经网络?
探索线性函数之外的近似器有两个主要原因:某些效用或Q函数不存在好的线性近似;在新领域中很难找到必要的特征。
这两个点最终源于同一个问题:如果特征本身是U(s)或Q(s, a),那么将U或Q表示为特征的线性组合总是可能的。但找到这样的特征通常很困难。
深度神经网络(参考第21章)作为有效的非线性近似器,即使使用原始输入数据也能工作。这使得它们成为强化学习中函数近似器的自然选择,导致了"深度强化学习系统"。
4.2 深度神经网络作为函数近似器
深度网络是复杂的参数化函数,参数是跨层的权重。这些网络的梯度计算(对于方程22-11和22-12)类似于监督学习,使用反向传播(第21.4节)。
深度强化学习已经取得了显著成就(第22.7节):掌握了各种电子游戏,击败了人类围棋世界冠军,训练机器人完成复杂任务。这些成就证明了深度神经网络在强化学习中的强大能力。
4.3 深度强化学习的挑战
但深度强化学习也面临挑战:很难达到一致的良好性能,对训练数据和真实环境之间的差异很敏感,商业应用仍然有限。这些都是当前研究的热点问题。
深度强化学习仍然是一个活跃的研究领域,需要更多的理论分析和实践改进。
五、奖励函数设计
5.1 稀疏奖励问题
在真实世界环境中,奖励通常是稀疏的。比如足球机器人,需要在数十万条控制命令中识别出单一的错误动作。这就像在很长的序列中找到关键的一步,非常困难。
稀疏奖励导致"信用分配"(Credit Assignment)问题:智能体很难知道哪些动作导致了最终的成功或失败。如果奖励只在最后给出,中间的所有动作都得到零奖励,智能体很难学习。
5.2 奖励塑形
奖励塑形(Reward Shaping)是来自动物训练的方法,提供"伪奖励"来鼓励"进步"。例如,奖励机器人触摸球或将球推向球门,而不仅仅是最终得分。
这就像训练小狗:不仅奖励最终完成动作,还奖励中间步骤(如"坐下"、“握手”),帮助小狗更快地学习。伪奖励可以加速学习,但存在智能体优化伪奖励而不是真正目标的风险。
5.3 势函数方法
根据第17章,有一种方法可以修改奖励函数而不改变最优策略。新的奖励函数是: R ′ ( s , a , s ′ ) = R ( s , a , s ′ ) + γ Φ ( s ′ ) − Φ ( s ) R'(s, a, s') = R(s, a, s') + γΦ(s') - Φ(s) R′(s,a,s′)=R(s,a,s′)+γΦ(s′)−Φ(s),其中Φ(s)是势函数。
势函数可以构造为反映期望的部分状态,如达到子目标或到终止状态的距离。例如,对于足球机器人,Φ(s)可以奖励控球和减少到对手球门的距离,加速学习而不妨碍机器人在危险情况下学习防守。
5.4 奖励设计的平衡
奖励设计需要在"加速学习"和"保持目标一致性"之间找到平衡。太多的伪奖励可能导致智能体优化错误的目标;太少的伪奖励可能导致学习太慢。
好的奖励设计应该:反映真正的目标、提供足够的中间反馈、不会导致次优策略。这需要领域知识和实验来找到合适的平衡。
六、分层强化学习
6.1 为什么需要分层?
分层强化学习(Hierarchical Reinforcement Learning, HRL)是处理长动作序列的另一种方法,通过将它们分解为更小、可管理的段。这就像将复杂任务分解为简单子任务,逐步完成。
HRL与HTN规划方法(第11章)有相似之处。例如,在足球中,得分可以分解为子任务:获得控球、传球、接球、运球、射门。每个子任务可以进一步细化为低级动作。
6.2 分层结构
HRL智能体从一个"局部程序"开始,定义智能体行为的分层结构。智能体的编程语言扩展为包括未指定的选择,这些选择在学习过程中被学习。
例如,一个简单的局部程序允许智能体在当前状态s的可执行动作集A(s)中选择任何动作。更复杂的例子是"控球者"玩家的局部程序:如果球在我控制下,选择{传球、控球、运球};否则选择{停留、移动、拦截球}。
6.3 选择状态和MDP
在HRL中,状态是"联合状态空间"中的选择状态σ = (s, m),其中s是物理状态,m是机器状态。选择状态是机器程序计数器在智能体程序中的选择点的状态。
HRL解决的MDP的元素是:状态是联合状态空间中的选择状态;动作c是局部程序确定的可行选择;奖励函数ρ(σ, c, σ’)是选择状态σ和σ’之间物理转移的期望奖励;转移模型P(σ, c, σ’)明确定义:如果采取物理动作a,它来自物理模型P(s’|s, a);如果发生计算转移(如调用子程序),转移由编程语言规则确定性地定义。
6.4 分层学习的优势
HRL是学习复杂行为的有效方法。在"keepaway"游戏中,HRL显著提高了控球时间。低级别的选择对智能体的内部状态和上下文敏感,这使得HRL可以学习细粒度的控制。
HRL中奖励函数的设计特别有益。对于像"PASS-TO"这样的程序,奖励可以基于到目标和对手的距离。注意,"传球"和"目标"是内部构造,不是客观物理世界的一部分,这使得HRL可以学习抽象的行为。
七、总结
强化学习中的泛化是通过函数近似将价值函数或Q函数表示为参数化函数,使智能体能够从未访问过的状态中学习。它的核心在于:从"记忆"变为"理解"。
函数近似包括线性函数近似和非线性函数近似(如深度神经网络)。线性函数近似简单但有理论保证,非线性函数近似强大但收敛性更难保证。
深度强化学习使用深度神经网络作为函数近似器,在复杂任务中取得了突破性进展。但它也面临挑战:灾难性遗忘、收敛性保证、对数据差异的敏感性等。
奖励函数设计和分层强化学习是处理稀疏奖励和长动作序列的重要方法。奖励塑形可以加速学习,但需要保持目标一致性。分层强化学习可以将复杂任务分解为简单子任务,提高学习效率。
记住:泛化让强化学习可以处理巨大的状态空间,但需要合适的函数近似器和特征设计。通过理解函数近似、深度强化学习、奖励设计和分层强化学习的原理,我们可以更好地应用强化学习来解决实际问题。
参考:《人工智能:现代方法(第四版)》

被折叠的 条评论
为什么被折叠?



