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

强化学习之DuelingDQN

注:本文续于《强化学习之DDQN》DuelingDQN的思想是把神经网络中Q价值的输出分成两部分,第一部分是状态价值V,这部分价值由状态

注:本文续于《强化学习之DDQN》

Dueling DQN的思想是把神经网络中Q价值的输出分成两部分,第一部分是状态价值V,这部分价值由状态直接决定和Action无关。第二部分就是动作价值和状态价值的差值A,每一个Action都存在一个差值。这两部分构成了倒数第二层的神经网络,节点数为Action数+1。然后最后一层的Q值就可以直接由V和A相加构成。

Q=V+AQ = V + A Q=V+A
Dueling DQN和DDQN唯一不同的地方是网络结构,因此修改程序时只需要修改Network类即可。这种计算结构使得学习性能得到提高。优点在于与DQN相比,无论动作a如何,都可以逐步学习与V(s)相关的网络连接参数,因此学习的轮数比DQN更少,随着动作选择的增加,优势更加明显。

class Network(torch.nn.Module): def __init__(self,n_in,n_mid,n_out): super(Network,self).__init__() self.fc1 = torch.nn.Linear(n_in,n_mid)self.fc2 = torch.nn.Linear(n_mid,n_mid) self.fc3_adv = torch.nn.Linear(n_mid,n_out) self.fc3_v = torch.nn.Linear(n_mid,1) def forward(self,x): h1 = F.relu(self.fc1(x))h2 = F.relu(self.fc2(h1))adv = self.fc3_adv(h2)# expand函数作用是采用复制的方式扩展一个维度的长度,-1指不改变长度,这里把V复制成和A数量一样多val = self.fc3_v(h2).expand(-1,adv.size(1))# V + A ,然后都减去A的平均值output = val + adv - adv.mean(1,keepdim = True).expand(-1.adv.size(1))return output

在实际操作中,我们通常需要减去一个平均值:

在这里插入图片描述

采用这种方法,虽然使得值函数V和优势函数A不再完美的表示值函数和优势函数(在语义上的表示),但是这种操作提高了稳定性。而且,并没有改变值函数V和优势函数A的本质表示。如果只是简单相加,由于动作类型的不同,具有不同的偏置量,可能无法得到很好的学习,通过在一个节点内的输出加入另一个节点的信息,可以让神经网络在误差传递的过程中得到更加充分的学习。


推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • ICRA2019最佳论文  Making Sense of Vision and Touch: SelfSupervised Learning of Multimodal Representatio
    文章目录摘要模型架构模态编码器自监督预测控制器设计策略学习控制器设计实验结论和展望会议:ICRA2019标题:《MakingSenseofVision ... [详细]
  • 移动传感器扫描覆盖摘要:关于传感器网络中的地址覆盖问题,已经做过很多尝试。他们通常归为两类,全覆盖和栅栏覆盖,统称为静态覆盖 ... [详细]
  • 基于移动平台的会展导游系统APP设计与实现的技术介绍与需求分析
    本文介绍了基于移动平台的会展导游系统APP的设计与实现过程。首先,对会展经济和移动互联网的概念进行了简要介绍,并阐述了将会展引入移动互联网的意义。接着,对基础技术进行了介绍,包括百度云开发环境、安卓系统和近场通讯技术。然后,进行了用户需求分析和系统需求分析,并提出了系统界面运行流畅和第三方授权等需求。最后,对系统的概要设计进行了详细阐述,包括系统前端设计和交互与原型设计。本文对基于移动平台的会展导游系统APP的设计与实现提供了技术支持和需求分析。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • 本文介绍了关于Java异常的八大常见问题,包括异常管理的最佳做法、在try块中定义的变量不能用于catch或finally的原因以及为什么Double.parseDouble(null)和Integer.parseInt(null)会抛出不同的异常。同时指出这些问题是由于不同的开发人员开发所导致的,不值得过多思考。 ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • Hello.js 是一个用于连接OAuth2服务的JavascriptRESTFULAPI库,如Go ... [详细]
  • css如何设置span的宽度
    这篇文章给大家分享的是有关css如何设置span的宽度的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。css设置span宽度 ... [详细]
author-avatar
mobiledu2502879767
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有