上节课我们讲了Q-learning,为啥讲Q-learning,是因为讲了好久RL,但是看的同学不多,所以我就想通过demo能给大家更具象的认识一个基本的RL到底干了啥。
临时加了一章
但是其实还是没啥人看,我本来想断更的,直到收到读者来信


我觉得还是要继续更新下去
今天我们就从一个很重要的概念讲起,强化学习的无模型和有模型
首先什么是“模型”?
在强化学习里,“模型”通常指一个能预测环境未来状态和奖励的机制。
即:已知当前状态和动作,模型可以算出:
-
下一步可能会到什么状态?
-
会获得什么奖励?
无模型强化学习(Model-free RL)
定义:直接学习动作策略/价值函数,不依赖环境的显式“模型”。
特点:
-
Agent 不试图建模或预测环境本身怎么变化,只根据当前经验做决策。
-
只通过与环境的交互得数据来优化策略或价值估计。
-
代表算法:Q-learning(我们上节课讲的),SARSA,DQN(深度Q网络),Policy Gradient(策略梯度)等。
优点:
-
适用于复杂、不可建模的环境。
-
理论上鲁棒性高,更“通用”。
缺点:
-
数据效率低(需要大量真实交互去学习)。
-
不能模拟虚拟未来(不能作想象中的演练,只能跟环境交互,没有模型来当依据预测),探索效率有限。
有模型强化学习(Model-based RL)
定义:学习环境的模型,或者已知环境模型,然后用该模型去规划动作/策略。
特点:
-
Agent 会(自己学习或已知)获得一个环境转移模型,能预测给定状态和动作的未来走向和奖励。
-
可以在内部“假装玩游戏”,用模拟学到更优策略。
比如象棋AI,可以自己想象:如果我下一步跳马,后面的几步对方会怎么应对,最终会不会赢;可以连续地在脑中模拟不同方案,选出最优路径,然后再在实际环境中执行
-
代表算法:Dyna-Q、基于MCTS(蒙特卡洛树搜索)、AlphaZero、Model Predictive Control等。
优点:
-
数据利用效率高(能用模拟数据做训练/规划)。
-
能提前预判未来,选出更优的路径。
-
在探索上更智能、更高效。
缺点:
-
模型的准确性非常关键,错误模型会误导agent。
-
对环境建模有难度时不适用。
举个例子来说的话:
- 无模型:像一个“只会试错”的小孩,不知道下一个动作会带来什么,只能不断尝试,结果好就记住。
- 有模型:像一个“能在脑海里预测下一步”的小孩,提前计算各种可能性,再选择最优行动。
我们从5个维度去看他俩的区别:

我们如果要干活的话:
- 先看能不能建模(技术可行性)
- 再看试错成本(经济性)
- 最后看计算资源(实用性)
现实中也很难分的太清,大部分复杂任务都是混合方法:
-
用有模型做规划(MCTS、MPC)
-
用无模型学习策略/价值函数(DQN、PPO)
-
典型:AlphaZero、MuZero、自动驾驶的端到端学习+轨迹规划
很多例子确实边界模糊,因为工程实践中很少纯粹用一种方法。
就拿典型中的Alphazero来讲
有模型部分:MCTS
1- 利用围棋规则,在脑内模拟成千上万局
2- "如果我走这步,对手可能走那步,然后我再..."
无模型部分:神经网络(比如策略网络 + 价值网络)
1- 不管规则,直接从棋盘样子学,就比如看棋面,这个黑白子的对弈就代表厉害:
2- 这个局面值多少分?(价值函数)
3- 下一步该走哪?(策略函数)
Alphazero训的时候用这两种方式来强化学习
上次我们介绍了无模型的一个方法,就是Q-learning,这次我们介绍些有模型的方法(后面有模型,无模型穿插着讲吧,因为难度确实不一样)
下面就是我的书稿直接粘了

本章节主要讨论经典的DP算法,DP算法,又叫动态规划,是非常经典的基于模型的算法,基于模型的算法的核心思想:
基于模型的算法首先会通过与环境的交互,学习并构建上述的环境模型 (包括转移模型和奖励模型)。 这个学习过程通常是通过观察状态转移和奖励来完成的。
一旦模型被学习到,算法就可以利用这个模型进行 "思考" 或 "规划",而无需直接与真实环境交互。 这意味着算法可以在 “虚拟环境” 中进行模拟和推演,来预测未来可能发生的事情,并据此选择最优的行动。
基于模型的算法的工作流程大致如下:
1-与环境交互,收集经验数据 (例如状态、行动、奖励、下一个状态的序列)。
2- 使用收集到的数据,学习环境模型 (包括转移模型和奖励模型)。 学习方法可以是监督学习等技术。
3- 使用学习到的模型进行规划 (Planning)。 规划过程的目标是找到一个策略或行动序列,能够在模型预测的环境中最大化累积奖励。
常见的规划方法包括:
动态规划 (Dynamic Programming)(例如价值迭代、策略迭代):如果环境模型已知且精确,可以使用动态规划来求解最优策略。
模型预测控制 (Model Predictive Control, MPC):在模型上模拟未来的多个步骤,并选择当前步最优的行动。
蒙特卡洛树搜索 (Monte Carlo Tree Search, MCTS):通过在模型上进行多次模拟,构建搜索树,并选择最佳行动。
4-在真实环境中执行规划得到的行动。
重复步骤 1-4,不断改进模型和策略。
价值迭代和策略迭代是强化学习中求解最优策略的两种动态规划算法,适用于已知环境模型的场景。
价值迭代通过迭代更新价值函数直到收敛,然后导出最优策略;策略迭代交替进行策略评估和改进,直到策略不再变化。
也有观点认为现代算法(如Actor-Critic)结合了多种方法,模糊了分类界限,但这两种方法仍是经典基础。
价值迭代算法原理
什么是价值迭代?
价值迭代是一种直接计算最优价值函数 V∗(s) 或 Q∗(s,a) 的方法。它基于贝尔曼最优方程(Bellman Optimality Equation),通过迭代更新状态价值函数,直到收敛到最优值,然后从中推导最优策略 π∗(s)。它属于价值函数方法(Value-Based Methods),不显式地维护策略,而是通过选择最佳动作来逐步逼近最优价值函数
步骤如下:
1-初始化:对所有状态 s∈S ,初始化价值函数 V(s) 为任意值(例如 V(s)=0)。设置一个小阈值 θ>0 用于判断收敛。
2-迭代更新:对每个状态,计算如果选择最佳动作,能得到多少即时奖励加上未来折扣后的价值。用公式表示为:

这里 P 是转移概率,R 是奖励,γ 是折扣因子。
计算价值函数的最大变化:

3-收敛判断:如果Δ<θ ,则价值函数已收敛,算法停止。否则,重复步骤 2。
4-找到策略:一旦 V∗(s) 收敛,导出最优策略 π∗(s) :

价值迭代结合了策略评估和策略改进为单一步骤,通过在每个迭代中选择能最大化价值的动作来逼近最优价值函数。
它适用于离散状态和动作空间,如棋盘游戏(如国际象棋、围棋)或网格世界导航。价值迭代在理论上能够保证收敛到最优策略。
价值迭代的每步计算简单,但需要较多迭代次数才能收敛,这在计算资源有限时可能成为瓶颈。
1.2.2.策略迭代算法原理
策略迭代是一种交替进行策略评估(Policy Evaluation)和策略改进(Policy Improvement)的算法。它从一个初始策略开始,逐步改进策略,直到收敛到最优策略 π∗ 。它显式地维护和评估策略,属于策略函数方法(Policy-Based Methods)的早期形式。
步骤如下:
1-初始化:
选择一个任意策略π0 (例如随机策略)。
对所有状态 s∈S ,初始化价值函数 V(s) (例如 V(s)=0)。
2-策略评估:
对当前策略π ,计算其价值函数 Vπ(s) :

这一步可以使用迭代方法(如TD学习)或直接求解方程组,直到 Vπ(s) 收敛。(这快发现我以前书稿的一个时间线漏洞,TD一般更多会在无模型的部分来单开一章讲,用它求解,我后面会讲

,不过事实上 TD 是一种值函数近似/迭代更新的技术,它本身不依赖完整模型,但能在有模型环境里照样用。是否“有模型”取决于整个算法的输入来源,而不是你更新值函数时选的迭代方法)
3-策略改进:
使用计算出的 Vπ(s) ,改进策略:

即,对于每个状态 s ,选择能最大化未来价值的动作,这一步和价值迭代的逻辑是一样的
4-收敛判断:
如果新策略π′ 与旧策略 π 相同,则算法停止,π 为最优策略 π∗ 。否则,将 π←π′ ,返回步骤 2。
策略迭代显式地维护和评估策略,策略评估步骤可能耗费较多计算资源,但策略改进步骤通常较快。
它适用于离散状态和动作空间,策略迭代在理论上也能保证收敛到最优策略。
好的,这章先到这里,我们下次见(我发现重写一遍也是对我原来书稿的另一个维度的打磨,从这个角度上来看,我做这个工作还是有意义的)
2885



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



