热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深度强化学习cs294HW1:ImitationLearning

终于把第一次作业完成了,不过实现效果貌似很差,调不好了就这样吧。Section1第一部分先装环境。没啥好说的。我用的anaconda直接pipins

终于把第一次作业完成了,不过实现效果貌似很差,调不好了就这样吧。


Section 1

第一部分先装环境。没啥好说的。我用的anaconda直接pip install 对应的作业1文件夹里的requirement.txt。其中MuJoCo需要激活个key,可以去官网使用学生邮箱申请一个免费的,时间为一年。

这次要用的6个环境如下,盗图一张:
在这里插入图片描述


Section2

进入正题。这次的作业是完成模仿学习。在gym仿真环境里,依赖于MoJoCo的模拟器。提供了6个环境的专家策略,运行run_expert.py生成对应的状态动作的数据,然后根据这些数据来进行模仿学习。

第一步自然是看懂run_expert.py的代码然后运行啦。将产生的数据放进expert_data文件夹。利用的是默认的参数,20个rollouts,每个最多1000步。因此有20000个对应的状态动作对。当然有的任务里走不到1000步一次rollout。

第二步进行仿真学习:
仿真学习的思想很简单,本质上就是个监督学习。根据给定的状态-动作对数据,拟合那个策略函数,其实就是个回归问题。
在这里插入图片描述
第一步里面已经根据专家策略生成了对应的数据,只需要利用这些数据进行一个回归即可。啪啪啪写一通,大概用2到3层全连接层即可。状态作为x,动作作为对应的y。

然后开始训练。超参什么的也没什么要求,但是我怎么调参训练都得不到太好的效果,很难受。
在这里插入图片描述
这是最开始训练得到的效果,后来调了大半天比这个好很多,但是本质上没啥差别,可能多训练了几轮稍微好点。总之比专家策略的效果差到不知道哪里去了。
不同迭代次数下对应6个环境的模仿学习效果


Section3

看来直接使用模仿学习不太行,不过还有个更好的算法Dagger。Dagger的算法重点在于解决训练集合与应用学到的策略时遇到的状态集合不一致的情况,算法如下:
在这里插入图片描述
其实就是个不断融合数据集的过程,次数足够多之后训练集与会遇到的状态趋于同一个分布。(将测试集加到训练集里的感觉23333)

代码的部分没啥好说的,就是先按BC的算法训练得到一个模型,然后应用到环境中。把应用的时候的状态存下来,使用专家策略policy_fn来对这些状态进行标注(相当于算法图中的3),之后融合数据继续训练。

然而我实在没有调出什么好的效果,只能宣告gg。

在这里插入图片描述
这张图算是6个环境里我的Dagger算法比BC效果好的最明显的一个,然而比专家算法的效果差了实在太多。其中超参设置为batch_size=200,Iteration = 200,epoch = 20。这里的关系不太严谨,对于用来对比的BC算法来说因为只有20000条数据,所以一个epoch用了batch_size*iteration/20000=2轮数据。对于Dagger而言参数设置也是一样,但是每一个epoch之后Dagger算法又会增加20000条新的数据。比如epoch=3时,BC算法迭代了3*200*200条数据,但是总数只有20000条,每条数据都用了6次。DAgger也迭代了3*200*200条数据,但Dagger的数据有60000条,因此每条只用了2次。

我的代码实现在github cs294作业,虽然实现得效果不好,但还是求star。

这里顺便推一下知乎看到的一个实现,他实现的效果很好。强化学习传说。我把网络结构和超参改得和他一样效果还是半死不活,百思不得其解。大概是因为版本的原因吧,他做的是春季的,mojoco版本不太一样。whatever,这次的作业就是这样。


推荐阅读
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文总结了在开发中使用gulp时的一些技巧,包括如何使用gulp.dest自动创建目录、如何使用gulp.src复制具名路径的文件以及保留文件夹路径的方法等。同时介绍了使用base选项和通配符来保留文件夹路径的技巧,并提到了解决带文件夹的复制问题的方法,即使用gulp-flatten插件。 ... [详细]
  • 本文介绍了如何通过conda安装Selenium的wheel文件,包括查看环境、卸载旧版本、下载新版本的wheel文件以及安装操作的步骤。同时提供了使用清华源的方法。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • EzPP 0.2发布,新增YAML布局渲染功能
    EzPP发布了0.2.1版本,新增了YAML布局渲染功能,可以将YAML文件渲染为图片,并且可以复用YAML作为模版,通过传递不同参数生成不同的图片。这个功能可以用于绘制Logo、封面或其他图片,让用户不需要安装或卸载Photoshop。文章还提供了一个入门例子,介绍了使用ezpp的基本渲染方法,以及如何使用canvas、text类元素、自定义字体等。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • 本文介绍了在Windows系统下安装Python、setuptools、pip和virtualenv的步骤,以及安装过程中需要注意的事项。详细介绍了Python2.7.4和Python3.3.2的安装路径,以及如何使用easy_install安装setuptools。同时提醒用户在安装完setuptools后,需要继续安装pip,并注意不要将Python的目录添加到系统的环境变量中。最后,还介绍了通过下载ez_setup.py来安装setuptools的方法。 ... [详细]
  • 本文总结了使用不同方式生成 Dataframe 的方法,包括通过CSV文件、Excel文件、python dictionary、List of tuples和List of dictionary。同时介绍了一些注意事项,如使用绝对路径引入文件和安装xlrd包来读取Excel文件。 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
author-avatar
秋忆道格
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有