在人工智能领域,强化学习是一种通过与环境交互来学习最优策略的机器学习方法。格子游戏作为强化学习的经典教学案例,完美展示了马尔可夫决策过程(MDP)的核心概念。这个看似简单的网格世界,实际上包含了状态、动作、奖励、策略等强化学习的关键要素。
马尔可夫决策过程由五元组(S, A, P, R, γ)构成:
在例题一的4格问题中:
注意:当γ=1时,算法会平等看待所有未来奖励;当γ<1时,会优先考虑近期奖励。实际应用中通常选择0.9到0.99之间的值。
状态估值函数V(s)表示从状态s出发,遵循当前策略π所能获得的期望累计奖励。在格子游戏中,这个值可以理解为"从当前格子到出口的预期总代价"。
计算V(s)的贝尔曼期望方程为:
V(s) = Σ π(a|s) * [R(s,a) + γ * Σ P(s'|s,a) * V(s')]
在等概率随机策略下(25%选择每个方向),这个方程可以简化为:
V(s) = 平均[R + γ * V(s')]
以格子1为例:
策略评估是通过解贝尔曼方程来计算给定策略下的状态估值。下面我们通过例题一和例题二来深入理解这个过程。
给定4格迷宫:
code复制[出口]
[格子1] [格子2]
[格子3] [格子4]
步骤1:建立贝尔曼方程组
对于每个格子,列出其估值方程:
格子1:
V1 = 0.25*(-1+0) + 0.25*(-1+V2) + 0.25*(-1+V1) + 0.25*(-1+V1)
=> V1 = -1 + 0.25V2 + 0.5V1
格子2:
V2 = 0.25*(-1+V1) + 0.25*(-1+V3) + 0.25*(-1+V2) + 0.25*(-1+V2)
=> V2 = -1 + 0.25V1 + 0.25V3 + 0.5V2
格子3:
V3 = 0.25*(-1+0) + 0.25*(-1+V2) + 0.25*(-1+V4) + 0.25*(-1+V3)
=> V3 = -1 + 0.25V2 + 0.25V4 + 0.25V3
格子4:
V4 = 0.25*(-1+V3) + 0.25*(-1+V4) + 0.25*(-1+V4) + 0.25*(-1+V4)
=> V4 = -1 + 0.25V3 + 0.75V4
步骤2:解线性方程组
将方程整理为标准形式:
解这个方程组得到:
V1 = -7, V2 = -10, V3 = -9, V4 = -13
步骤3:验证结果合理性
估值均为负值,符合每次移动都有-1奖励的设置。格子2和格子4的估值更负,因为它们离出口更远,需要更多步数才能到达。
例题二的迷宫布局不同:
code复制[左出口] [格子1] [格子2] [格子3] [右出口]
[格子4]
关键差异:
建立方程时需要注意:
这种布局会产生更有趣的策略选择,比如格子2可能需要选择向左(格子1)还是向右(格子3)移动。
策略提升是通过当前估值函数改进策略的过程,目标是找到更优的策略。
对于每个状态s,选择使Q(s,a)最大的动作a:
Q(s,a) = R(s,a) + γ * Σ P(s'|s,a) * V(s')
在例题一中:
格子1:
Q(1,左)=-1+0=-1
Q(1,右)=-1+V2=-8
Q(1,上)=Q(1,下)=-1+V1=-8
最大Q值为-1(动作:左)
格子2:
Q(2,左)=-1+V1=-8
Q(2,右)=-1+V3=-10
Q(2,上)=Q(2,下)=-1+V2=-11
最大Q值为-8(动作:左)
策略提升定理保证:这样得到的新策略π'一定优于或等于原策略π。
通过贝尔曼最优方程可以直接求解最优策略:
V*(s) = max_a [R(s,a) + γ * Σ P(s'|s,a) * V*(s')]
在例题一中:
格子1:最优动作是左(直接到出口)
V*(1) = -1 + 0 = -1
格子2:可以选择左(格子1)或右(格子3)
V*(2) = -1 + V*(1) = -2
格子3:最优动作是上(到出口)
V*(3) = -1 + 0 = -1
格子4:只能选择上(到格子3)
V*(4) = -1 + V*(3) = -2
策略最优性判断:
例题三展示了更复杂的5×5网格世界,包含:
对于格子A(1,2):
无论选择哪个动作,都会转移到A'(5,2)并获得+10奖励:
V(1,2) = 10 + 0.9 * V(5,2)
这使得A成为一个非常有价值的状态,因为可以立即获得高额奖励。
对于大规模问题,解析解法不现实,通常采用迭代法:
迭代法优势:
在复杂网格中,最优策略通常会:
例如,靠近A的格子可能会优先选择移动到A,以获得+10奖励。
除了基于动态规划的方法,群体智能算法也是解决优化问题的重要工具。
信息素更新规则:
τ_ij = (1-ρ) * τ_ij + Σ Δτ_ij^k
其中:
参数选择经验:
实现伪代码:
code复制初始化信息素矩阵
for 迭代次数 do
for 每只蚂蚁 do
根据信息素和启发式信息选择路径
记录路径长度
end for
更新信息素(增强优秀路径)
挥发信息素
end for
返回最优路径
粒子更新公式:
v_i = w * v_i + c1 * r1 * (pbest_i - x_i) + c2 * r2 * (gbest - x_i)
x_i = x_i + v_i
参数说明:
参数调优技巧:
| 特性 | 动态规划 | 蚁群算法 | 粒子群算法 |
|---|---|---|---|
| 问题类型 | 离散/连续 | 离散 | 连续 |
| 空间复杂度 | 高(存储V表) | 中等 | 低 |
| 收敛速度 | 快 | 慢 | 中等 |
| 适用场景 | MDP问题 | 路径优化 | 参数优化 |
| 实现难度 | 中等 | 较高 | 较低 |
选择建议:
当状态空间增大时,传统的表格型方法会遇到存储和计算瓶颈。解决方案包括:
在未知环境中,需要平衡:
常用策略:
好的奖励函数应该:
例如,在格子游戏中:
结合蒙特卡洛和动态规划的思想:
学习动作-价值函数Q(s,a):
Q(s,a) ← Q(s,a) + α [R + γ max_a' Q(s',a') - Q(s,a)]
特点:
将神经网络与强化学习结合:
应用场景: