【强化学习基础(2)】被动强化学习:学习价值函数

文章目录

    • 核心观点
    • 一、什么是被动强化学习?
      • [1.1 被动学习的定义](#1.1 被动学习的定义)
      • [1.2 被动学习的目标](#1.2 被动学习的目标)
      • [1.3 被动学习的例子](#1.3 被动学习的例子)
    • 二、直接效用估计
      • [2.1 直接效用估计的思想](#2.1 直接效用估计的思想)
      • [2.2 直接效用估计的过程](#2.2 直接效用估计的过程)
      • [2.3 直接效用估计的局限性](#2.3 直接效用估计的局限性)
    • 三、自适应动态规划
      • [3.1 自适应动态规划的思想](#3.1 自适应动态规划的思想)
      • [3.2 学习转移模型](#3.2 学习转移模型)
      • [3.3 使用动态规划求解](#3.3 使用动态规划求解)
      • [3.4 自适应动态规划的优势和局限](#3.4 自适应动态规划的优势和局限)
    • 四、时序差分学习
      • [4.1 时序差分学习的思想](#4.1 时序差分学习的思想)
      • [4.2 时序差分更新规则](#4.2 时序差分更新规则)
      • [4.3 时序差分学习的优势](#4.3 时序差分学习的优势)
      • [4.4 时序差分学习的收敛性](#4.4 时序差分学习的收敛性)
    • 五、三种方法的比较
      • [5.1 学习效率](#5.1 学习效率)
      • [5.2 计算成本](#5.2 计算成本)
      • [5.3 适用场景](#5.3 适用场景)
      • [5.4 实际应用](#5.4 实际应用)
    • 六、被动学习的实际意义
      • [6.1 为主动学习打基础](#6.1 为主动学习打基础)
      • [6.2 理解环境](#6.2 理解环境)
      • [6.3 评估策略](#6.3 评估策略)
    • 七、总结

核心观点

被动强化学习是智能体在固定策略下,通过观察环境反馈学习状态价值函数的过程。它不需要主动选择动作,只需要跟随既定策略,观察结果,然后更新对状态价值的估计。

想象一下,你是一个新手司机,跟着教练学习开车。教练告诉你"按照这个路线开",你不需要决定走哪条路,只需要按照指示开车,观察路况,学习"这条路好不好走"。

这个观点的核心在于:被动学习是主动学习的基础。在被动强化学习中,智能体有一个固定的策略来决定其行为,它不需要决定"应该做什么",只需要学习"当前状态有多好"。这就像你按照既定的路线开车,不需要决定走哪条路,只需要观察路况,学习"这条路好不好走"。

被动强化学习是理解强化学习的重要基础。通过被动学习,智能体可以学会评估状态的价值,为后续的主动学习(选择最优动作)打下基础。从直接效用估计到自适应动态规划,再到时序差分学习,被动强化学习提供了多种学习方法,每种方法都有其适用场景和优缺点。

一、什么是被动强化学习?

1.1 被动学习的定义

被动强化学习(Passive Reinforcement Learning)是指智能体有一个固定的策略π(s),它按照这个策略行动,学习状态的价值函数U(s)。价值函数表示"从状态s开始,按照策略π,期望能获得多少累积奖励"。

在被动学习中,智能体不知道环境的转移模型P(s'|s, a)和奖励函数R(s, a, s')。它只能通过观察来学习:执行动作,观察结果状态和奖励,然后更新对状态价值的估计。

这就像你按照既定路线开车,不知道路况如何,只能通过实际开车来观察"这条路好不好走"。你不需要决定走哪条路(策略已定),只需要学习"当前路况的价值"。

1.2 被动学习的目标

被动学习的目标是学习效用函数U^π(s),定义为从状态s开始,按照策略π,期望的折扣奖励总和。数学上,这可以表示为: U π ( s ) = E [ Σ t = 0 ∞ γ t R ( S t , π ( S t ) , S t + 1 ) ] U^π(s) = E[Σ_{t=0}^∞ γ^t R(S_t, π(S_t), S_{t+1})] Uπ(s)=E[Σt=0∞γtR(St,π(St),St+1)],其中γ是折扣因子,R是奖励函数。

这个公式的意思是:从状态s开始,按照策略π行动,每一步都会获得奖励,但未来的奖励会打折扣(γ^t),价值函数就是所有折扣奖励的期望值。折扣因子γ通常小于1,表示"未来的奖励不如现在的奖励重要"。

1.3 被动学习的例子

为了更好地理解被动学习,我们来看一个简单的例子:4×3世界。这是一个网格世界,智能体从某个位置开始,按照固定策略移动,目标是到达终点(+1奖励)或陷阱(-1惩罚)。每一步移动都有小的负奖励(-0.04),鼓励智能体尽快到达终点。

在这个例子中,智能体有一个固定的策略(比如"总是向上或向右移动"),它按照这个策略行动,观察每次移动的结果(新状态和奖励),然后学习"每个位置的价值是多少"。通过多次尝试,智能体逐步学会"靠近终点的位置价值高,靠近陷阱的位置价值低"。

二、直接效用估计

2.1 直接效用估计的思想

直接效用估计(Direct Utility Estimation)是最简单的方法:直接将状态的效用定义为从该状态开始的期望总奖励(reward-to-go)。每次试验(trial)为每个访问的状态提供一个数值样本。

这就像你多次走同一条路线,每次都记录"从这条路开始,最终获得了多少奖励",然后取平均值。如果这条路通向好地方,平均值就高;如果通向坏地方,平均值就低。

2.2 直接效用估计的过程

直接效用估计的过程很简单:智能体按照固定策略执行多次试验,每次试验都记录从每个访问状态开始的总奖励,然后在试验结束后,计算每个状态的平均奖励作为效用估计。

例如,在一次试验中,智能体从状态(1,1)开始,经过(1,2)、(1,3)、(2,3)、(3,3),最终到达(4,3)获得+1奖励。那么状态(1,1)的样本就是这次试验中获得的总奖励(考虑折扣后)。通过多次试验,计算所有样本的平均值,就得到了状态(1,1)的效用估计。

2.3 直接效用估计的局限性

直接效用估计虽然简单,但有一个关键问题:它忽略了状态之间的依赖关系。实际上,状态的效用依赖于后续状态的效用。根据贝尔曼方程,U^π(s) = Σ_{s'} P(s'|s, π(s))[R(s, π(s), s') + γU^π(s')],这意味着状态的效用不仅取决于当前奖励,还取决于后续状态的效用。

直接效用估计忽略了这种依赖关系,将每个状态独立处理,就像假设"这条路的价值只取决于这条路本身,不取决于它通向哪里"。这导致学习效率低,需要更多的试验才能收敛,因为它在搜索一个比必要更大的假设空间。

三、自适应动态规划

3.1 自适应动态规划的思想

自适应动态规划(Adaptive Dynamic Programming, ADP)是一种更聪明的方法:智能体学习状态的转移模型,然后使用动态规划来解决相应的马尔可夫决策过程(MDP),从而利用状态效用之间的约束。

这就像你不仅记录"这条路通向哪里",还学习"从这条路走,会以什么概率到达哪些地方",然后使用这些信息来计算"这条路的价值"。这样可以利用状态之间的依赖关系,提高学习效率。

3.2 学习转移模型

在完全可观察的环境中,学习转移模型很简单:这是一个监督学习任务,输入是状态-动作对(s, a),输出是后续状态s'。转移模型P(s'|s, a)可以用表格形式表示,通过累积计数直接估计。

例如,在状态(3,3)执行"向右"动作,观察4次,其中2次到达(3,2),2次到达(4,3),那么P((3,2)|(3,3), Right) = 1/2,P((4,3)|(3,3), Right) = 1/2。通过不断观察和计数,智能体逐步学会环境的转移模型。

3.3 使用动态规划求解

一旦学会了转移模型和奖励函数,就可以将它们代入贝尔曼方程,求解每个状态的效用。对于固定策略,这些贝尔曼方程形成一个线性方程组,可以用线性代数包求解。

另一种方法是"修改的策略迭代":每次模型更新后,使用简化的价值迭代过程更新效用估计。这种方法通常更快,因为模型的变化通常很小,之前的效用估计可以作为好的初始值。

3.4 自适应动态规划的优势和局限

自适应动态规划的优势是:它利用状态之间的约束关系,学习效率高,收敛快。通过学会转移模型,智能体可以"思考"所有可能的结果,而不仅仅是观察到的结果。

但自适应动态规划也有局限性:它受限于学习转移模型的能力。对于大的状态空间(比如西洋双陆棋有10^20个未知数),学习完整的转移模型变得不切实际。而且,每次模型更新都需要重新计算效用,计算成本较高。

四、时序差分学习

4.1 时序差分学习的思想

时序差分学习(Temporal Difference Learning, TD)是另一种方法:它不直接求解贝尔曼方程,而是使用观察到的转移来更新观察到的状态的效用,强制它们满足约束方程。

这就像你每次走一步,就立即更新"上一步的价值估计",让它与"这一步的价值估计"保持一致。你不需要等到试验结束,也不需要学习完整的转移模型,只需要在每一步都进行小的调整。

4.2 时序差分更新规则

时序差分学习的更新规则是: U π ( s ) ← U π ( s ) + α [ R ( s , π ( s ) , s ′ ) + γ U π ( s ′ ) − U π ( s ) ] U^π(s) ← U^π(s) + α[R(s, π(s), s') + γU^π(s') - U^π(s)] Uπ(s)←Uπ(s)+α[R(s,π(s),s′)+γUπ(s′)−Uπ(s)],其中α是学习率参数。这个公式的意思是:将状态的效用估计向"当前奖励加上后续状态折扣效用"的方向调整。

这个更新规则中的项R(s, π(s), s') + γU^π(s') - U^π(s)被称为"时序差分误差"(TD error),表示"当前估计与观察到的结果之间的差异"。更新旨在减少这个误差,让估计更准确。

4.3 时序差分学习的优势

时序差分学习的优势是:它简单,每次观察只需要少量计算,不需要转移模型。它可以在线学习,每走一步就更新一次,不需要等到试验结束。这使得它特别适合实时学习场景。

时序差分学习与自适应动态规划有密切关系:两者都旨在实现效用估计的局部一致性。区别在于:时序差分只基于观察到的后续状态进行调整(方程22-3),而自适应动态规划基于所有可能的后续状态进行调整,按概率加权(方程22-2)。当时序差分对许多转移进行平均时,这种差异会减小。

另一个关键区别是:时序差分每次观察的转移只进行一次调整,而自适应动态规划进行尽可能多的调整,以保持效用估计U和转移模型P之间的一致性。这使得自适应动态规划学习更快,但计算成本更高。

4.4 时序差分学习的收敛性

如果学习率α是访问状态次数的递减函数(如图22-4所示),U^π(s)将收敛到正确值。这意味着:状态被访问得越多,学习率越小,更新越谨慎,最终收敛到真实值。

时序差分学习的学习曲线显示:在4×3世界问题中,经过大约100次试验,效用估计就能收敛到接近真实值。对于很少被访问的状态(如(2,1)和(3,2)),它们分别在第14次和第23次试验才被"发现"连接到+1退出状态,说明探索的重要性。

五、三种方法的比较

5.1 学习效率

直接效用估计的学习效率最低,因为它忽略了状态之间的依赖关系,需要更多的试验才能收敛。自适应动态规划的学习效率最高,因为它利用状态之间的约束关系,可以快速收敛。时序差分学习的学习效率介于两者之间,它不需要完整的转移模型,但仍然利用状态之间的依赖关系。

5.2 计算成本

直接效用估计的计算成本最低,只需要记录和平均奖励。时序差分学习的计算成本较低,每次观察只需要一次更新。自适应动态规划的计算成本最高,需要学习转移模型,并在每次模型更新后重新计算效用。

5.3 适用场景

直接效用估计适合状态空间小、状态之间依赖关系弱的场景。自适应动态规划适合状态空间中等、可以学习转移模型的场景。时序差分学习适合状态空间大、无法学习完整转移模型的场景,或者需要在线学习的场景。

5.4 实际应用

在实际应用中,时序差分学习是最常用的方法,因为它平衡了学习效率和计算成本。它不需要完整的转移模型,可以在线学习,适合大规模、复杂的环境。自适应动态规划适合可以学习转移模型、需要快速收敛的场景。直接效用估计很少单独使用,通常作为其他方法的基准。

六、被动学习的实际意义

6.1 为主动学习打基础

被动学习是主动学习的基础。通过被动学习,智能体学会了"评估状态",知道了"哪些状态好,哪些状态不好"。这是后续主动学习(选择最优动作)的基础。只有知道了状态的价值,智能体才能选择能到达高价值状态的动作。

6.2 理解环境

被动学习帮助智能体理解环境。通过观察和更新,智能体逐步学会环境的转移模型(在自适应动态规划中)或状态价值(在时序差分学习中)。这种理解是后续决策的基础。

6.3 评估策略

被动学习可以用来评估策略。给定一个策略,智能体可以通过被动学习来评估"这个策略有多好"。这对于策略改进和策略搜索非常重要。

七、总结

被动强化学习是智能体在固定策略下,通过观察环境反馈学习状态价值函数的过程。它的核心在于:智能体不需要决定"应该做什么",只需要学习"当前状态有多好"

被动强化学习有三种主要方法:直接效用估计(简单但效率低)、自适应动态规划(高效但需要转移模型)、时序差分学习(平衡效率和成本)。每种方法都有其适用场景和优缺点。

记住:被动学习是主动学习的基础。只有学会了评估状态,智能体才能选择最优动作。通过理解被动学习的原理和方法,我们可以更好地应用强化学习来解决实际问题。

参考:《人工智能:现代方法(第四版)》

相关推荐
逢考必过@k1 小时前
6级550学习ing
学习
陈天伟教授3 小时前
基于学习的人工智能(7)机器学习基本框架
人工智能·学习
Z***G4794 小时前
网络爬虫学习:借助DeepSeek完善爬虫软件,实现模拟鼠标右键点击,将链接另存为本地文件
爬虫·学习·计算机外设
我命由我123455 小时前
微信开发者工具 - 模拟器分离窗口与关闭分离窗口
前端·javascript·学习·微信小程序·前端框架·html·js
DKPT5 小时前
ZGC和G1收集器相比哪个更好?
java·jvm·笔记·学习·spring
Main. 246 小时前
从0到1学习Qt -- 常见控件之显示类控件
qt·学习
e***19356 小时前
爬虫学习 01 Web Scraper的使用
前端·爬虫·学习
二川bro10 小时前
多模态AI开发:Python实现跨模态学习
人工智能·python·学习
石像鬼₧魂石10 小时前
Netcat,网络瑞士军刀(新手学习备用)
学习