马尔可夫决策过程(Markov Decision Process, MDP)
马尔可夫性(Markov Property)
马尔可夫性是指”未来仅取决于现在,而与过去无关”,数学表达式为:
马尔可夫奖励过程(Markov Reward Process, MRP)
最大累计回报(Return,)
回报是从 t 时刻开始,直到过程结束(或无限远)所获得的全部折扣奖励之和:
-
如果 γ≈0,智能体变”近视”,只看重眼前利益。
-
如果 γ≈1,智能体变”远见”,更看重未来的长期收益。
状态价值函数(State Value Function, )
价值函数用于衡量一个状态的”好坏”。它的定义是该状态下回报的期望值:
使用这个公式衡量一个状态的好坏,只能靠”硬算”未来的所有奖励之和。这需要有全局的视野,使得在数学和计算上都会遇到巨大的阻碍。后来人们使用 贝尔曼方程 去解决这一问题。
数学表达
一个马尔可夫奖励过程通常由一个四元组表示:
-
S (State space):有限的状态集合。
-
P (Transition probability matrix):状态转移概率矩阵。
-
R (Reward function):奖励函数,表示在状态 s 时能获得的即时奖励期望:
-
γ (Discount factor):折扣因子,γ∈[0,1],用于平衡当前奖励与未来长期奖励的权重。
马尔可夫决策过程数学表示
策略(Policy, )
策略是智能体(Agent)的”行为指南”。它可以是确定性的,也可以是随机性的:
随机性策略:,即在状态下选择动作的概率分布。
数学表达
一个标准的马尔可夫决策过程通常由一个五元组 来表示:
-
S (State space):有限的状态集合。
-
A (Action space):有限的动作集合。
-
P (Transition probability matrix):状态转移概率,表示在状态 s 采取动作 a 后,转移到状态 s ′的概率:
-
R (Reward function):奖励函数,表示在状态 s 采取动作 a 转移到 s′ 后获得的即时收益:
- γ (Discount factor):折扣因子,,用于平衡当前奖励与未来长期奖励的权重。
贝尔曼方程 (Bellman Equation)
在没有贝尔曼方程之前,如果你想知道一个状态有多”好”,你需要模拟从这个状态开始直到任务结束的所有可能路径,然后把所有的奖励加起来。
这会产生两个致命的问题:
-
计算量爆炸:随着步数增加、路径数量成指数级增长(类似棋类游戏)。
-
无限循环:如果任务没有终点,你根本算不完未来的奖励。
它将一个需要”看透未来”的全局优化问题,转化为了一个”只需看眼前一步”的局部递归问题
数学表达
现在计算一个状态的价值只需要知道下一个状态的价值是多少,而不需要进行全局视野。
时序差分学习(TD Learning)
贝尔曼方程本质上是一个静态等式,它告诉我们,在理想状态下,当前状态的价值应该刚好等于期望的即时奖励加上未来的折现价值。
但是在实际的任务中,我们面临两个问题:
-
不知道期望:我们不知道环境的所有可能性,只能通过”采样”获得一个实际结果。
-
初始值不准:最开始我们的是随机初始化的,等式两边根本不相等。
为了解决这些问题,TD Learning引入了 学习率α 的概念,把等式变成了迭代公式:
其中,将称为 “TD Erro”
举例深入理解
假设你正在为一个包含 5 个节点(服务器)的局部网络设计一个智能路由算法,目标是让数据包以 最低延迟 从起始节点 到达目标节点 。
1. 场景建模
-
状态 (S):网络中的 5 个路由器节点。
-
动作 (A):选择将数据包转发给哪一个邻居节点。
-
奖励 (R):每经过一条链路,由于存在延迟,奖励为负值。
-
普通链路:R = -1。
-
拥堵链路:R = -10。
-
到达目标:R = 0(过程结束)。
-
-
不确定性 (P):网络是不稳定的,即使你选择了某条路径,由于链路抖动,数据包有 20% 的概率会被误传到另一个错误的节点。
2. 传统方式的困境:蒙特卡洛(Monte Carlo)穷举
在传统思维中,我们要评估节点 的价值,必须进行大量的”全路径模拟”。
计算过程:
-
采样路径 1:,总回报。
-
采样路径 2(遇到拥堵和错误转向):,总回报。
-
计算平均值:经过 1000 次这样的随机模拟,求出 的期望价值。
这种方式的致命缺点:
-
计算极其冗余:如果 和 都经过 到达,传统方式会分别在两者的采样中重复计算 这段路程。
-
无法应对 “无限循环”:如果网络中存在环路(如 ),采样可能会陷入死循环,导致永远算不出结果。
3. 贝尔曼方式:迭代传播(Value Iteration)
贝尔曼方程通过”空间换时间”和”局部一致性”,将问题拆解。它不急着去跑通全路径,而是在每个节点建立一个”价值档案”。
第 0 轮(初始化):
所有节点都不知道自己离终点多远。
第 1 轮(发现终点):
只有紧挨着终点 的节点(假设是)感知到了奖励。
根据贝尔曼更新规则:
此时,依然是。
第 2 轮(价值回传):
连接 的节点(比如)开始更新。
第 轮(全网收敛):
就像往水池里丢了一块石头(终点奖励),价值信息像涟漪一样,每经过一次迭代就向外扩散一圈。最终, 会通过邻居的”价值档案”计算出自己的最优价值,而无需亲自跑完一万次模拟。
4. 时序差分学习方式:边走边修正
在 TD 看来,它既不需要上帝视角,也不需要像蒙特卡洛那样等数据包真的到家。
初始状态: 你对网络的初次印象非常模糊(随机初始化),假设你认为 V(S1)=−5,V(S2)=−5。
动作发生: 数据包从 S1 出发,经过链路到达了 S2。
关键瞬间:
1. 观察到的现实: 这一段链路花了 1 毫秒延迟(R=−1)。
2. 新的发现: 当你到达 S2 时,你低头看了一眼 S2 的”价值档案”,上面写着 V(S2)=−5。
3. 产生冲突(TD Error):
-
旧的看法: 站在 S1 时,你以为价值是 −5。
-
新的依据: 走了一步后,你发现 S1 的价值应该是
这一步的开销(-1) + 下一站的预估(-5),也就是 −6。 -
修正: 现实比你想象的更糟糕(误差为 −1)。你不会立刻把 V(S1) 改成 −6,而是用学习率 α(假设为 0.1)轻轻修正: