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

news/2024/6/18 19:57:41 标签: 深度强化学习, 迷宫

新一年新收获,预祝大家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


http://www.niftyadmin.cn/n/1365767.html

相关文章

Oracle性能调整指南

1. 简介. 3 2. 读者. 3 3. 调整目标. 3 4. 调整活动. 4 5. 设想. 5 6. 调整途径. 5 7. 参考资料. 5 8. Oracle的物理组织. 5 9. 输入/输出集. 6 9.1 磁盘竞争. 6 9.2 数据文件和复做日志. 7 9.3 表和索引. 7 9.4 表/索引分区. 8 9.5 碎片回滚和…

MVC模式下的数据绑定

很怀念Webform下的基于模板的数据绑定。 查了下文档,HtmlHelper并没有相关的直接支持,需要自己在html里迭代生成数据列表。 既然HtmlHelper用的不是很爽,何必舍近求远,要知道ViewPage继承于Page的啊。对于View的局部使用webform的…

A versatile WPF TreeView control

Link:http://www.hardcodet.net/2008/01/wpf-treeview转载于:https://www.cnblogs.com/rgqancy/archive/2010/11/03/WPFTreeView.html

tensorflow保存参数

# 前面的代码是模型的定义代码 saver tf.train.Saver() # 生成saver with tf.Session() as sess: sess.run(init) # 模型的初始化 # # 模型的训练代码,当模型训练完毕后,下面就可以对模型进行保存了 # saver.save(s…

MEF查询组合容器

查询组合容器当查询一个简单实例时返回null或者一个以上时会出异常。 GetExportedValue&#xff08;&#xff09;&#xff1b; var container new CompositionContainer(new AssemblyCatalog(typeof(Program).Assembly));Root partInstance container.GetExportedValue<Ro…

Linux系统下使用windows软件(wine)

这里介绍Wine官方给出的在Ubuntu环境下的安装方法&#xff1a; #如果你使用的是64位Ubuntu&#xff0c;则先要开启32位安装环境&#xff1a; sudo dpkg --add-architecture i386 #然后需要下载一个PGP公钥以识别软件仓库&#xff1a; wget -nc https://dl.winehq.org/wine-bui…

C#数字图像处理学习(一)

开始学习数字图像处理方面的知识了&#xff0c;用了三天的时间写了一个简单的处理&#xff0c;包括图像的向下扫描&#xff0c;交叉飞入&#xff0c;百叶窗&#xff0c;马赛克等效果&#xff0c;找了一些图片测试了一下&#xff0c;还勉强可以用&#xff0c;不过不怎么理想。而…

ubuntu使用 AppImage实现QQ和TIM的使用

https://github.com/askme765cs/Wine-QQ-TIM 可直接下载&#xff1a; Wine-QQ:http://yun.tzmm.com.cn/index.php/s/XRbfi6aOIjv5gwjWine-TIM:http://yun.tzmm.com.cn/index.php/s/5hJNzt2VR9aIEF2 下载完毕&#xff1a; 在Ubuntu中使用AppImage类型文件 右键--属性---权限…