使用Keras和深度确定性策略(DDPG)来玩TORCS

2023-11-09

背景

DQN的一大局限性是输出/动作是离散的,而车辆转向是连续的。使DQN适应连续域的一种明显方法是简单的离散化操作空间。然而只是简单地离散化操作空间会受到‘维度的诅咒’问题。
深度确定性策略由三种技术结合:1)确定性策略梯度算法(输出的是每个动作的概率)2)演员评论者方法(会定义另一个网络对动作的好坏进行评价)3)DQN网络(输出的是动作的价值)

策略网络

定义一个策略网络,该网络将采用游戏状态,并决定车辆应该做什么。基于策略的强化学习。其中策略可以认为是代理的行为,即从状态映射到操作的函数。

确定性与随机性策略

确定性策略是看到一个特定的状态输入,然后采取特定的行动。但有时确定性策略不起作用就需要采取随机性策略。

如何找到策略,则需要采用强化技术。当AI撞到路边,获得负奖励,此时神经网络会调整参数。再数学语言中定义这些策略为目标函数。

演员评论家算法

本质上是一种混合方法,将基于策略梯度的方法和值函数方法组合起来。策略函数称之为参与者,而值函数称之为批评者。本质上,演员产生动作一个给定环境的当前状态,而批评家则发出信号来批评演员的行为。使用连续Q学习(SARSA)作为批评者,使用策略梯度方法作为执行者模型。

演员网络

使用了两个隐藏层,300和600个隐藏单元,输出包括三个连续动作。
转向的激活函数是tanh,加速度和制动则是sigmoig。
使用keras的merge将三个输出组合出来

评论家网络

使用了2个隐藏层,包括300个和600个隐藏单位。评论家网络将状态和动作作为输入。

目标网络

使用目标网络用于计算目标值,通过让这些目标网络缓慢跟踪学习的网络来更新这些目标网络的权重。
目标值被限制换道变化,大大提高了学习的稳定性。

DDPG代码

以数组形式接收传感器的输入、传感器的输入将被输入到神经网络中,网络将输出三个实数、该网络将通过深度确定性策略梯度进行多次训练,以最大化未来的预期回报。

将来函数:最大化纵向速度,最小化横向速度,AI不偏离轨道中心

探索算法的设计

奥恩斯坦-乌伦贝克过程
一个具有均值还原性质的随机过程。

体验回放

在训练网络时随机迷你批次,而不是大多数最近过渡,这将大大提高稳定性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Keras和深度确定性策略(DDPG)来玩TORCS 的相关文章

随机推荐

  • java实用类之正则工具类

    正则工具类 public class PatternUtil 匹配邮箱正则 private static final Pattern VALID EMAIL ADDRESS REGEX Pattern compile A Z0 9 A Z0
  • EL文件上传

    一 通过时间修改与文件上传 weixin 43985399的博客 CSDN博客查询并添加相应的文件 二 编辑前端页面
  • [操作系统]3.内存管理

    和前面两篇是差不多的思路 仅为快速复习操作i系统基础知识点 例题暂无 考试不要参考 知识点来自王道操作系统 1 内存管理的基本要求和设定 内存管理主要完成的功能有 内存空间的分配和回收 地址转换 把逻辑地址转化为内存物理地址 内存空间的扩充
  • LUT学习了解

    知乎 LUT Lookup Table 颜色查找表 通过LUT可以将一组RGB值输出为另一组RGB值 从而改变画面的曝光与色彩 如果我们规定 当原始R值为0时 输出R值为5 当原始R值为1时 输出R值为6 当原始R值为2时 输出R值为8 当
  • Android开机服务启动流程

    在Android系统启动时候 会解析init rc文件 然后根据里面的定义 启动各种服务 如netd zygote servier manager等等 但这些服务之间其实是有依赖关系的 而且当其中的某个服务启动失败时 有时候会影响后续的服务
  • 火爆!GitHub 标星 144k 的前后端学习路线,2021 年最新整理,看完后不再迷茫不再徘徊

    正在光顾 CSDN 的你 好呀 我是沉默王二 上周在欣赏阮一峰老师的 科技周刊 时 发现了一个牛逼的学习路线 在 GitHub 上已经标星 144k 了 简直火爆 里面不仅涵盖了前端和后端的学习路线 还有运维的学习路线 作为一名程序员 如果
  • 计算机组成原理实验一报告——运算器

    一 实验目的 了解和掌握Am2901运算器的组成结构和工作原理 认识和掌握TEC 2机运算器的组成和工作原理 认识和掌握TEC 2机运算器相关控制信号的含义和使用方法 二 实验原理 Am2901运算器 1 Am2901 芯片内部组成结构 A
  • 276_Python_桌面的一个TXT文档里的内容,插入到Word文档的指定位置

    在当前Word文档的第几段插入内容 当你需要将一个TXT文档的内容插入到Word文档的特定位置时 你可以使用Python的docx库来处理Word文档 以及内置的文件操作功能来读取TXT文档 首先 确保你已经安装了docx库 如果没有 可以
  • 敏捷--寻求更小发布集

    鱼骨思维 核心主线 优先级模型 差异化功能 具有明显竞争优势的功能特性 搅局功能 瞄准并用于叫板差异化产品的功能特性 快速低价或者强势营销的方式进入市场 降成本功能 可以降低组织成本的功能 基础功能 参与市场竞争的必要性基础功能 mvp理解
  • FFmpeg降低编码延迟记录

    背景 最近使用FFmpeg编码时 264 265的软编和NVIDIA硬编 有不同程序的缓存 具体表现就是调用avcodec send frame多次后才能调用avcodec receive packet一次 自测x264缓存了40帧 h26
  • Linux_Vs2017 error pthread

    解决办法 右键 gt 属性 添加pthread
  • 深入理解python中的None对象

    1 None None是python中的一个特殊的常量 表示一个空的对象 空值是python中的一个特殊值 数据为空并不代表是空对象 例如 等都不是None None和任何对象比较返回值都是False 除了自己 gt gt gt L gt
  • eclipse中将Maven Dependencies Libraries移除后的恢复办法

    参考文章 转载地址 在eclipse中 如果你不小心在properties gt Java Build Path中将Maven Dependencies Libraries 移除了怎么恢复呢 解决办法 1 右键你的项目 gt Maven g
  • 传输层 —— FTP

    一 FTP 二 FTP工作原理
  • C++学习(四九零)add_library生成动态库和静态库

    1 静态库 add library hello library STATIC src hello cpp 2 动态库 注意这里是SHARED 而不是DYNAMIC add library hello library SHARED src h
  • mac下使用docker安装mysql

    拉取mysql镜像 docker pull mysql 拉取完后大致是这样的控制台输出 因为我这里已经拉取过了 这时候我们查看一下镜像是否拉取下来 查看镜像拉取状态 docker container ls 在这里我们可以看到我的镜像是在5天
  • 函数的声明和定义

    C语言中一个完整的函数由函数首部和函数体构成 而且定义函数时两者都是必不可少的 函数声明表示有这么个函数了 函数定义就是具体实现了 举个例子 函数声明 int fun int a int b 函数定义 int fun int a int b
  • 目标跟踪算法三:Modeling and Propagating CNNs in a Tree Structure for Visual Tracking (VOT2016冠军)

    目标跟踪算法三 Modeling and Propagating CNNs in a Tree Structure for Visual Tracking VOT2016冠军 文章链接 https arxiv org pdf 1608 07
  • 跟着英雄刷算法-因式分解和枚举

    补上前天落下的 题目一 int kthFactor int n int k int cnt 0 for int i 1 i lt n i if n i 0 k if 0 k return i return 1 题目二 int closest
  • 使用Keras和深度确定性策略(DDPG)来玩TORCS

    背景 DQN的一大局限性是输出 动作是离散的 而车辆转向是连续的 使DQN适应连续域的一种明显方法是简单的离散化操作空间 然而只是简单地离散化操作空间会受到 维度的诅咒 问题 深度确定性策略由三种技术结合 1 确定性策略梯度算法 输出的是每