我正在使用一种基于模型的单智能体强化学习方法来进行自主飞行。
在这个项目中,我使用模拟器来收集训练数据(状态、动作、结束状态),以便Locally Weighted Linear Regression算法可以学习MODEL。
向量由一个STATE:[Pitch , Yaw , Roll , Acceleration]定义,用于定义无人机在空间中的位置。当提供给POLICY时,它还有另一个特性[WantedTrajectory]
ACTION也是由一个向量定义的:[PowerOfMotor1 , PowerOfMotor2 , PowerOfMotor3 , PowerOfMotor4]
根据所取轨迹的准确性来计算REWARD:给定起始空间状态、所需轨迹和结束空间状态,实际所采取的轨迹越接近所需轨迹,奖励的负值就越小。
policy iteration的算法如下:
start from a state S0
loop
1) select the best action according to the Policy
2) use LWLR to find the ending state
3) calculate reward
4) update generalized V function
endloop;这样,所采取的动作还取决于所需的轨迹(由用户选择),代理自主地选择4个马达的功率(尝试采用所需的轨迹并具有更大、更少的负奖励),并且策略是动态的,因为它依赖于更新的值函数。
唯一的问题是按如下方式选择POLICY (S =俯仰、偏航、侧滚、加速度、WantedTrajectory):
π(S) = argmax_a ( V( LWLR(S,a) ) )(因此,在所有动作中,来自此状态的动作将导致智能体处于具有最大值的状态),由于动作空间非常大,因此计算成本很高。
有没有办法根据已经泛化的值函数来泛化POLOCY?
发布于 2016-02-27 20:05:19
我认为使用策略梯度的actor-critic方法将对您有用。
在这种情况下,您可以使用基于值函数的目标函数来调整的参数化策略。还有一些进一步的改进,比如使用advantage函数等。
David Silver制作了一个不错的视频,你可能会发现它很有用:
https://www.youtube.com/watch?v=KHZVXao4qXs&index=7&list=PL5X3mDkKaJrL42i_jhE4N-p6E2Ol62Ofa
https://stackoverflow.com/questions/32213173
复制相似问题