前言
上一篇文章中介绍了CoppeliaSim的一些基本知识和一个简单的用python去控制CoppeliaSim里面四旋翼无人机运动的一个例子。文章链接
:https://blog.csdn.net/qq_37051669/article/details/115324851
本文将继续介绍如何利用CoppeliaSim的物理环境去实现一个最简单的强化学习。
如何实现强化学习
强化学习(Reinforcement learning)是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益。强化学习与其他机器学习方法最大的不同,在于前者的训练信号是用来评估给定动作的好坏的,而不是通过给出正确动作范例来进行直接的指导。
核心思想:智能体agent在环境environment中学习,根据环境的状态state,执行动作action,并根据环境的反馈 reward(奖励)来指导更好的动作。在监督学习中,监督信号由训练数据提供;而在强化学习中,奖励承担了监督信号的作用,智能体依据奖励进行策略优化。下图展现了强化学习的基本思想:
根据上图,要实现强化学习,我们首先要有一个实验环境,这个环境能给出agent行为带来的变化,即每一步action带来的state变化,能给智能体Agent一个观察到的state,并能根据Agent的行为给出一个评分reward。而对于Agent,他要有根据state输出action的算法,如果是DRL的话,还需要神经网络的model,算法还要能学习不同行为带来的reward影响,知道怎么行动才能获得更多的奖励。
那么,我们要想实现强化学习,我们首先搭建环境:
这是我搭建的一个极简的 环境,里面只有一个无人机和几个小方块,小方块用来当做坐标,我们的目标就是让无人机从初始点通过自己的不断探索学习能到达小方块的点。
我们需要从CoppeliaSim获取一些实时坐标信息,然后控制,控制的方法和上一篇文章中的一样,然后就是搭建环境的reward和强化学习算法!
强化学习算法
我使用的强化学习算法是DDPG算法,论文链接:https://arxiv.org/abs/1509.02971v2,这里就不仔细说DDPG算法了。
实现
1、model.py
2、quadrotor.py
3、train.py
4、replay_memory.py
5、agent.py
代码都已上传Github,需要下载。https://github.com/lzw0515/CoppeliaSim_RL