《深度强化学习落地指南》读书笔记3--状态空间设计

状态空间设计:特征工程的诱惑

概要:
 作者认为状态空间的质量直接决定了DRL算法能否收敛收敛速度以及最终性能,并且实践经验表面在action-reward保持不变的前提下,增加一个优秀的状态信息带来的性能提升会显著高于组件改进、超参调节等;进一步的作者区分了state和observation两者区别,即state属于理论概念,而obs处于实操层面,由于客观条件、设计者主管局限性的限制,obs通常只包含一部分信息,就会使得MDP退化为POMDP。(本书谈的状态就是指observation的设计)

状态空间设计常见误区

概要:

 基于对状态空间设计的认识,提出两个常见误区:1.过分依赖端到端的特征学习。2.极致的特征工程。
其中过分依赖端到端的特征学习指state中的无用成分有可能使DRL算法学习到虚假的决策相关性并造成局部过拟合;而极致的特征工程,作者主要担忧的是在simulator中过多的设计state,会扩大reality gap。

思考:这里“过分依赖端到端”的特征学习,主要是出于对无用信息干扰DRL的担忧。作者原文中提到尽可能不用“四高”(高噪声、高漂移、高延迟、高误差)信息。即对于特定任务,我们应该了解各个状态信息的含义,并且还需要考虑其精度、稳定性。
二“极致的特征工程”,作者主要是担忧模拟情况下过分调优(对于这个确切的模拟环境表现很好),而实际情况下却不适用。这也就意味着两件事:1.对于没有模拟、真实的区别的环境,去做极致的特征工程是显然可以提升性能的。2.对于有模拟、真实gap的环境,需要不断试错改进状态设计的方案,真如作者所讲并非“一锤子买卖”。

与动作空间和reward函数的协同设计

概要:宏观上,应该现有动作空间和回报函数,后针对性设计状态空间。具体地,状态空间应与动作空间在尺度上保持一致,并且以reward为核心,服务于对长期累计回报的预测和决策相关性的建立。要简洁高效

思考:设计DRL算法的s、a、r时,应当是先有reward(你的目的、优化目标)、action(你能操作什么、决策变量),针对这两个再进行state(你需要知道什么信息)的设计。具体“与动作尺度一致”、“以reward为中心”在下文讨论。

与动作尺度一致

概要:state应该能准确的反映action导致的变化。作者举例了移动1cm而观察尺度为以m为单位;决策以月为单位,观察尺度为以天为单位;两个例子。

思考:“尺度”可以理解为时间空间的尺度。空间可以延伸为量纲的问题,action产生的影响在state上要能体现出来。
时间上,就是action决策的时间和观察state的时间尺度上要吻合(比如决策了今天的空调温度,而观察的尺度显然不能是今天86400s的所有温度值,高噪声,高误差)。

以reward为中心

概要:reward和state要紧密联系。

思考:state的设计要反映reward-state的相关性。就是这俩要协同设计。

状态空间设计四步骤

概要:根据前文,我们知道state设计时一个迭代更新的过程。故分4步骤:任务分析-信息筛选-泛化性考量-验证。

任务分析

概要:分析任务的目标,讲任务目标分解为子目标。针对每个子目标设计回报函数。(并非本节重点)

思考:我们需要先理解任务的目标,然后针对目标设计出一个reward(version1)。

信息筛选

概要:根据反馈时长,分为直接间接信息。直接信息是稠密的,对DRL友好。间接信息具有滞后性,某些间接信息可以转化为直接信息(这里举例为碰撞墙壁的奖励设置问题,从 碰撞惩罚 到 保持安全距离的持续惩罚 的转变)。 作者定义了一种Oracle信息,即显示表达了本应有DRL算法自行学习的隐藏信息(比如当前状态下可以采用的动作的提示)。作者认为能“直白相告”就尽量不要“打哑谜”。

思考:作者提出了三种信息,对于直接、间接,主要是在讲reward-state协同时,尽量用直接信息,而间接信息可以尽量想办法变成直接的信息(让reward不那么稀疏)。而Oracle信息则更像小技巧,即提示一些能帮助算法学习的信息,这些信息可能与reward直接、间接相关。

泛化

概要:使状态分布在跨任务场景下尽可能保持一致。采用1.抽象化预处理2.形式统一。
其中抽象化预处理指基于领域知识对任务逻辑的理解做二次加工,并从中提炼出更加简洁高效、与reward相关性更强的信息。
形式统一指利用冗余模板,使每个位置都有固定的含义。

思考:这里泛化性指的是不会因为某个可变的不重要的信息导致DRL失效,比如下棋的棋盘背景就是这种信息。而且抽象出来更本质的信息能降低神经网络去提取有效特征的难度。
形式统一就是让状态有更强的表达能力。(这条我认为是大家默认会做到的,因为神经网络输入是需要确定的)这种形式统一的表达形式会造成一些padding或者是把原信息下采样(当然action和state是要保持尺度一致的),但能够让连续一段时间的状态堆叠在一起。

效果验证

概要:可以用直接验证、缺省验证、模仿学习验证。
一般,state设计与算法选择是相互正交的。所以可以用收敛块的算法来快速验证state空间。(收敛快不代表性能就好)
直接验证:即利用快速验证方法,看新的state设计的Return(累计reward)
缺省验证:对于已经成功收敛的DRL,可以冻结某个状态信息,观察损失某个信息对决策的影响。
模仿学习验证:有监督的学习(效率远高于DRL)。收集足够多的专家数据,验证state是否包含了专家决策所需要的全部信息,观察模型输出与专家策略的差异,比如Loss、两者性能上的差异。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值