马尔可夫决策过程

Python 中的 Gymnasium 强化学习

Fouad Trad

Machine Learning Engineer

MDP

  • 以数学方式建模强化学习环境

图片展示复杂环境(智慧城市)及需提取的组件:状态、动作、奖励、转移概率。

Python 中的 Gymnasium 强化学习

MDP

  • 以数学方式建模强化学习环境

图示:从复杂环境中提取 MDP 组件(状态、动作、奖励、转移概率),用基于模型的强化学习求解。

Python 中的 Gymnasium 强化学习

马尔可夫性质

  • 未来状态仅取决于当前状态与动作

图片显示棋盘及可能走法的箭头。

Python 中的 Gymnasium 强化学习

冰湖作为 MDP

  • 智能体需到达目标且不掉入洞中

图片显示冰湖环境。

Python 中的 Gymnasium 强化学习

冰湖作为 MDP——状态

  • 智能体可占据的位置

图片显示冰湖环境中智能体的三个不同位置。

Python 中的 Gymnasium 强化学习

冰湖作为 MDP——终止状态

  • 导致回合结束

展示冰湖环境中的终止状态的图片。

Python 中的 Gymnasium 强化学习

冰湖作为 MDP——动作

  • 上、下、左、右

展示冰湖动作及其标签:0-左,1-下,2-右,3-上。

Python 中的 Gymnasium 强化学习

冰湖作为 MDP——转移

  • 动作不一定产生期望结果

图片显示智能体在冰湖网格左上角,准备向右移动。

Python 中的 Gymnasium 强化学习

冰湖作为 MDP——转移

  • 动作不一定产生期望结果

图片显示智能体可以向右移动。

Python 中的 Gymnasium 强化学习

冰湖作为 MDP——转移

  • 动作不一定产生期望结果

图片显示智能体也可以向下移动。

Python 中的 Gymnasium 强化学习

冰湖作为 MDP——转移

  • 动作不一定产生期望结果

图片显示智能体也可能停在原地。

Python 中的 Gymnasium 强化学习

冰湖作为 MDP——转移

  • 动作不一定产生期望结果

图片显示当智能体选择向右时,可能向右、向下或停在原地,并有相应概率。

  • 转移概率: 在给定状态与动作下到达某状态的可能性
Python 中的 Gymnasium 强化学习

冰湖作为 MDP——奖励

  • 仅在目标状态给予奖励

图片显示智能体处于目标状态。

Python 中的 Gymnasium 强化学习

Gymnasium 的状态与动作

import gymnasium as gym


env = gym.make('FrozenLake', is_slippery=True)
print(env.action_space)
print(env.observation_space)
print("Number of actions: ", env.action_space.n)
print("Number of states: ", env.observation_space.n)
Discrete(4)

Discrete(16)
Number of actions: 4
Number of states: 16
Python 中的 Gymnasium 强化学习

Gymnasium 的奖励与转移

env.unwrapped.P:字典,键为状态-动作对

print(env.unwrapped.P[state][action])
[
  (probability_1, next_state_1, reward_1, is_terminal_1), 
  (probability_2, next_state_2, reward_2, is_terminal_2), 
  etc.
]
Python 中的 Gymnasium 强化学习

Gymnasium 的奖励与转移——示例

state = 6
action = 0

print(env.unwrapped.P[state][action])
[(0.3333333333333333, 2, 0.0, False), 
(0.3333333333333333, 5, 0.0, True), 
(0.3333333333333333, 10, 0.0, False)]

图片显示动作编号:0-左,1-下,2-右,3-上。

图片显示智能体处于状态编号 6;状态自左上到右下按行编号。

Python 中的 Gymnasium 强化学习

让我们开始练习吧!

Python 中的 Gymnasium 强化学习

Preparing Video For Download...