在迷宫环境中使用图像目标导向深度强化学习笔记(一)

新一年新收获,预祝大家2020年工作顺利,身体健康。

此部分作为一个节点,下面大部分时间用于期末复习,打算考完试再继续这一块的工作。

之前接触过一部分这方面知识,当时感觉用到的机会不是很大,所以就没好好学,真的后悔了,对莫烦博客经过一个星期左右的学习就仓促的下手实践,对于很专业的知识我也不是有太深的理解,如果有错误,望大家积极指正批评。

进入正题:

这里我打算复现一下李飞飞老师指导的一位博士生论文,论文可以在斯坦福大学的官网上可以找到。但是没有源码,很难受,看来要自己实现了。

简述一下这个课题的内容:机器人在未知环境中探索,寻找到目标位置。这里利用到了深度强化学习的知识,给机器人一幅目标点的图像以及机器人拥有自己摄像头的实时输入的图像。通过深度强化学习在仿真环境中训练出来模型,然后在实体上跑。

我的环境描述:我用的莫烦的DQN的迷宫环境,我们知道这个环境是把机器人在环境中的位置作为输入的,输出为4个动作分别为上、下、左、右。现在我把输入变成了一幅图像即迷宫环境的截图,经过神经网络输出四个动作值。

提问:这里有人可能想目标图像呢????

解答:这里暂时没有输入目标图像,看过论文之后你们就可以知道我这是单线程去跑,这里我没加目标图像,到没到目标点这个问题,大家不要忘记了,环境我自己写的机器人在神魔位置我还能不知道吗?

准备过程(不会贴代码的):

1. 建立神经网络:

一共七层神经网络最后三层为全连接神经网络,最后输出为四个值。这部分我是利用tensorflow建立的,神经网络输入为(100,100,3)的图像数据。

2. 获得输入数据

利用python脚本截取屏幕上的特定位置特定大小的图片,即为当时迷宫状态的图像。经过处理成为三维矩阵作为神经网络的输入。

3. 记忆库的存储

记忆库中包含此时状态、奖励、动作、下一时刻状态。我们知道第一个数据和第四个数据是三维数组,所以我们将奖励和动作变成三维数据,进行水平叠加以后的形状为(100,300,3)。

4. 训练从记忆库取值

利用分解函数将(100,300,3)分解为3个(100,100,3)的数据。

5. 奖励设置

这里我给的奖励为到目标位置给100(有点狠,其他值还没来得及测试,以后会改的),掉入黑洞的奖励为-10,平常移动时会计算一个机器人距离目标点的距离然后乘以一个系数作为一个奖励,还有一种情况就是当机器人贴墙以后继续往撞墙,这是我们给的奖励是-10,改变很大,这个问题是之前我数据不收敛的一个重要原因。

6. 迷宫环境改变

在迷宫环境中,计算了机器人通过传过的action到达到哪个位置,实际上机器人确实已经在那个位置,但是环境没有更新,环境回落后于真实动作,这里我将更新动作加在了根据action移动之后,这样动作和环境就一同被更新了。这里一定要改,要不然你的记忆库那两个状态实际是两个一样的三维数组。

 

接下来就是训练数据了(这里我得到了两幅图像):

在迷宫环境中使用图像目标导向深度强化学习笔记(一)

解释一下,x代表机器人走了多少步,y表示当游戏从新开始以后机器人经过多少步到达目标点。

在迷宫环境中使用图像目标导向深度强化学习笔记(一)解释一下,x代表走了多少步,y表示每50步机器人到达目标点的次数。

训练数据量不够大,没有足够的说服性。

有想法的可以加QQ进行交流:1599015354