提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
RL(reinfocement learning)的典型框架如图所示。这里的POLICY根据我的理解,类似于一个简单的物理模型,用来提供最初的输出,当神经网络的表现足够好时,该物理模型会被取代,之后,POLICY会不断被能产生更大的reward的新的POLICY取代。
|
|sdf |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
Reward
reward用来反应Agent的表现,分为连续reward和离散reward。这里的连续喝离散和仿真中solver的连续和离散不一样。连续的reward随观测和作用量的变化连续变化,离散reward则不连续,典型的离散reward为:某个观测或输出值超过某个阈值,reward为负1。离散reward通常用来帮助agent规避某些不好的区域。而连续reward用来提供平滑的reward, 指导agent更快收敛。
Observation and Action
observation对应神经网络的输入,Action对应神经网络的输出。两者都有两种不同的数据规格,有限集和连续集。有限集表示,只能取确定数组中的某个值,例如,一个神经网络的Action值只能取[-2 0 2]三个数中的一个;连续集则用一个区间表示。
具体的搭建流程
综合研究了Matlab/Simulink中各种搭建教程,Train DQN Agent to Swing Up and Balance Pendulum中的内容最为全面。此外, Water Tank Reinforcement Learning Environment Model也很详细,并且从零创建了Environment, 填补了第一个例子的空白部分。
结合第二个例子,总结在Simulink中实现强化学习共有4个步骤:
-
在Simulink中搭建物理模型,然后拖入RL Agent模块,并连接对应的信号。物理模型要向RL Agent提供观测(observation), 奖励(reward), 结束标志(isdone), 并接受RL Agent的action信号。
-
在Matlab中指定action, observation的规格(specification), 指明他们是连续的还是离散的
-
在Matlab中,使用步骤2中的action, observation信息以及步骤1中的模型建立深度学习的环境,典型的代码为:
env = rlSimulinkEnv(mdl,[mdl '/RL Agent'],observationInfo,actionInfo);
-
设置上述深度学习环境的Reset方程