## 建模:把世界变成可训练的环境
不是把游戏“变成纯文本”,而是把可交互世界抽象成数字接口。
[[gymnasium]][classic-control] 是环境库。它负责定义:
- 状态 obs:现在世界是什么样
- 动作 action:智能体可以做什么
- 奖励 reward:刚才做得好不好
- 结束 done:这一局是否结束
比如 [[CartPole-v1]] 这个任务,会把“小车倒立摆”抽象成 4 个状态数字和 2 个动作:
- 状态:小车位置、小车速度、杆子角度、杆子角速度
- 动作:向左推 / 向右推
## 策略:让智能体学会怎么行动
| 算法 | 钢琴类比 | 它在学什么 | 直观理解 |
| ------- | ----------------------- | -------------------- | ---------------- |
| DQN | 每次看到谱子和手的位置,判断“按哪个键最划算” | 每个动作的价值 | 给每个可选按键打分,选分最高的 |
| [[PPO]] | 练习一种稳定的演奏习惯,不让每次改动作改得太猛 | 动作选择策略 | 逐步调整“该怎么弹”的概率分布 |
| A2C | 一个自己弹,一个在旁边听并评价这段弹得好不好 | Actor 学行动,Critic 学评价 | 演奏者负责弹,老师负责打分和纠偏 |
[[stable-baselines3]] 是算法库。它已经实现好了常见强化学习算法,比如 [[PPO]]、DQN、A2C。
算法要学的是一个策略 policy:
当前状态 obs -> 选择动作 action
比如在 [[CartPole-v1]] 里,[[PPO]] 要学会:
看到杆子的位置、角度和速度后,判断小车应该向左推还是向右推。
所以整体链路是:
环境给状态 -> 策略选动作 -> 环境给奖励 -> 算法更新策略
## 观测工具
[[tensorboard]] 是**训练可视化工具**。
它用来看训练曲线,比如 reward 有没有上升、loss 有没有异常、训练是否稳定。