项目简介:Cartpole
Cartpole 项目是一个基于强化学习的解决方案,专注于 OpenAI 提供的 Cartpole 环境。在这个环境中,一个杆子通过一个未激活的关节连接到小车上,小车则在一个无摩擦的轨道上移动。对小车施加+1或-1的力来控制整个系统。初始状态下,杆子处于竖直状态,目标是通过控制力使杆子不倒下。每个时间步杆子依然竖直时会获得+1的奖励。当杆子偏离垂直超过15度,或者小车距离中心超过2.4个单位时,本次尝试结束。
DQN(深度Q学习)
在这一项目中,运用了标准的深度Q学习算法(DQN)和经验回放机制来解决问题。
超参数
- GAMMA(折扣因子):0.95
- 学习率:0.001
- 记忆库大小:1000000
- 批量大小:20
- 最大探索率:1.0
- 最小探索率:0.01
- 探索衰减率:0.995
模型结构
- 第一层全连接层:输入为4个神经元,输出为24个神经元,激活函数为Relu
- 第二层全连接层:输入为24个神经元,输出为24个神经元,激活函数为Relu
- 第三层全连接层:输入为24个神经元,输出为2个神经元,激活函数为线性函数
- 损失函数使用均方误差(MSE)
- 优化器采用Adam
性能表现
在CartPole-v0环境中,“解题”的标准是连续100次尝试中获得的平均奖励达到195.0。项目中通过多次实验,展示了模型训练后的效果。
示例试验
项目展示了一个成功试验的动画,通过不断调整小车的运动来保持杆子的竖直状态,从而长时间获得奖励。
试验表现图表
通过曲线图项目展示了模型在试验中的表现如何逐渐趋向稳定,并最终达到“解题”的标准,符合CartPole的要求。
作者
本项目由 Greg (Grzegorz) Surma 创作。更多关于作者的信息可以通过其个人网站、GitHub 和博客进一步了解。