译自强化学习工具包文档,加入自己的见解。
这个例子展示了使用强化学习设计器在离散动作空间环境中设计和训练DQN代理。
打开强化学习设计器app
通过如下语句打开:
reinforcementLearningDesigner
导入Cart-Pole环境
按下图所示选择导入:
导入后在环境面板里可观察到,点击可修改名字,Preview面板显示所选环境的状态空间和动作空间:
该环境包含一个连续的4维观测空间(杆和车的分别的位置和速度)和一个离散一维动作空间(包含两个可能的力10N或-10N)。
为导入的环境创建DQN代理
在Reinforcement Learning标签页点击New,在弹出的窗口里,修改隐藏层神经元数量为20,默认的环境即为导入的环境,默认的算法即为DQN算法,点击OK。
Agents面板里会新增刚刚创建的代理agent1,并且设计器会自动跳转至agent1的文档。
在超参数选项里,设置学习率为0.0001。(改了效果也不一定好,多跑几次)
可点击DQN Agent标签页里的View Critic Model查看评论家(Q值函数)网络结构。
默认的网络结构如下:
训练代理
在Train标签页配置训练参数,参数含义都比较明了。
点击Train开始训练,训练过程如下:
在训练过程中可随时点击Stop按钮中断训练和Resume恢复训练。
点击Accept储存训练好的代理和结果,随后在Agents面板会自动添加该代理,命名为原代理名加_Trained,在Results面板自动添加一条trainStats。
对代理进行仿真并检查仿真结果
在Simulate标签页配置仿真参数,指定代理为刚训练好的代理,其它参数按需更改,这里先保持默认。然后点击仿真按钮,app弹出仿真会话标签页。仿真完成后,会展示每轮奖励以及所有轮奖励均值和标准差。
点击Inspect Simulation Data分析仿真结果,也可以点击Clear and Inspect Simulation Data预先清除在上一个会话中加载的任何数据。可以在不同的图中选择查看不同的数据。
回到仿真对话窗体,同样点击Accept保存仿真结果,在Results面板自动添加一条experience。
导出代理并保存会话
在Agents面板双击训练好的代理agent1_Trained打开相关文档,然后按下图所示选择导出,导出的代理保存在MATLAB工作区。
当然,也可以直接在Reinforcement Learning选项卡下选择导出需要的代理。若要保存会话,点击Reinforcement Learning选项卡下的Save Session。可以用该设计器再次打开保存的会话。
在命令行仿真代理
首先加载cart-pole环境:
env = rlPredefinedEnv("CartPole-Discrete");
可视化环境:
plot(env)
运行仿真:
xpr2 = sim(env,agent1_Trained);
展示仿真的累计奖励:
sum(xpr2.Reward)
Tips
- 强化学习设计器通过MATLAB工作空间与命令行交互,你可以导入环境或导入及导出代理、神经网络、评论家和行动者以及网络参数。
- 强化学习设计器支持多种代理,包括:DQN、DDPG、TD3、PPO、TRPO、SAC。