matlab显⽰函数表达式_【Matlab】创建策略和价值函数表达
式(PolicyandV。。。
⼀、创建策略和价值函数表达式(Policy and Value Function):
1、函数近似器(Function Approximation)
2、Table Representations
① 使⽤ rlTable创建 value table 或者 Q table ② ⽤ rlRepresentation为表格创建⼀个表达式 (representation)③rlRepresentationOptions配置学习率(learning rate)等参数。
3、Deep Neural Network Representations (可以使⽤深度学习⼯具箱)
3.1 Network Input and Output Dimensions
☆ actor 和 critic ⽹络的维度必须和环境的 observations 和 action 相匹配,获取环境(env)的action和observation的维度,使⽤getActionInfo 和 getObservationInfo ,然后访问 dimension 属性。
actInfo = getActionInfo(env);actDimensions = actInfo.Dimensions;obsInfo = getObservationInfo(env);obsDimensions = observationInfo.Dimensions;
☆ 对于 AC 或者 PG等只需要 observations 作为输⼊的 critic network,输⼊层的维度必须匹配环境观测规范尺⼨(environment observation specifications),critic输出层的维度必须是⼀个标量值函数。
☆ 对于DQN或者DDPG等需要 observations 和 actions作为输⼊的 critic networks,输⼊层的维度必须匹配environment observation and action specifications。Critic 输出层的维度也必须是⼀个标量值函数。
☆ actor networks 输⼊层的维度必须匹配环境观测规范的维度
①如果 actor 有离散的动作空间,他的输出维度必须等于离散动作的数量。
②如果 actor 有连续的动作空间,它的输出维度必须是⼀个标量或者向量值,就像 observation specification中定义的那样。
3.2 Build Deep Neural Network
下表列出强化学习常⽤的深度学习⽹络层
☆ 注意:lstmLayer,bilstmLayer和 batchNormalizationLayer不⽀持强化学习。当然也可以⾃定义⽹络层。
scalingLayer线性缩放或者偏置输⼊数组。对于⾮线性层(tanhLayer 和 sigmoid)输出的缩放和移动(shifting)很有⽤
quadraticLayer从输⼊数组的元素构建⼆次单项式向量。当需要⼀个输出,它的输⼊是⼀些⼆次函数(例如LQR控制器),这个层会⾮常有⽤。
☆ scalingLayer 和 quadraticLayer ⾃定义层不包含可调参数,在训练过程中不可改变。
☆ 每⼀个输⼊路径(input path)通过 connectLayers 函数连接,构成⼀个深度神经⽹络。也可以⽤ Deep Network Designer app创建。对于 observation 和 action 输⼊路径,必须指定路径的第⼀个层是 imageInputLayer层。
observationPath = [ imageInputLayer([4 1 1],'Normalization','none','Name','observation') fullyConnectedLayer(24,'Name','CriticObsFC1') reluLayer('Nam ☆ 通过 plot(criticNetwork) 查看深度神经⽹络的结构。
☆对于 PG 和 AC 代理,深度神经⽹络 actor representation 的最终输出层是⼀个fullyConnectedLayer 和softmaxLayer。必须指
定 fullyConnectedLayer ,因为当你省略softmaxLayer时,系统会⾃动添加⼀个 softmaxLayer。对于任何函数近似器最重要的是该函数能够逼近最优策略或者折扣价值函数(optimal policy or discounted value function),也就是说能否正确获取 observation,action 和reward 三个信号的特征(features)。
☆当构建⽹络的时候必须考虑下⾯⼏点:
① 对于连续的动作空间,⽤ tanhLayer 后⾯接 ScalingLayer 结构限制动作(bound actions)。
② 带有 reluLayers 的深度密集⽹络(Deep dense network)能够很好的近似许多不同的函数。因此可以作为构建⽹络的第⼀选择。
③ 当逼近强⾮线性(strong nonlinearities)系统或者带有代数约束(algebraic constraints)的系统,增加更多的层(more layers)往往好于增加每层输出的数量(increase number of outputs per layer)。增加更多的层提⾼指数搜索能⼒(exponential exploration),增加
每层的输出提⾼多项式探索能⼒(polynomial exploration)。
④ 对于 on-policy 代理,例如 AC 和 PG ,如果⽹络⾮常⼤(例如⽹络具有两个隐藏层,每个隐藏层有32个节点,每个节点有上百个参数)parallel training 训练效率更⾼。On-policy parallel updates 假设每个 worker 更新⽹络的不同部分(例如探索 observation space 不同的区域)。如果⽹络⽐较⼩,worker
更新会互相关联,导致训练不稳定。
3.3 Create and Configure Representation
☆ 为深度神经⽹络创建 actor 或者 critic representation object,使⽤ rlRepresentation 函数。⽤ rlRepresentationOptions 配
置学习率等参数。
☆ 当创建⾃⼰的深度神经⽹络并且配置 representation object,初始考虑使⽤下⾯的⽅法:
① 最开始采⽤最⼩的⽹络和较⼤的学习率(0.01)。训练初始⽹络看⼀下是否代理很快收敛到很差的策略(poor policy)或者以随机的⽅式动作。如果出现这些问题,增加层或者增加输出的数量。你的⽬标是到⼀个⾜够⼤的⽹络结构(⽽不是追求⽹络学习很快),并且在初步训练后显⽰学习的迹象(奖励的改进轨迹)
② 初始通过设置⼩的学习率使得⽹络训练缓慢。通过慢慢训练,可以检查代理是否在正确的轨迹上,这样可以判断⽹络结构是否满⾜问题的要求。对于复杂的问题,优秀的⽹络结构会使调整参数变得容
易。
☆ 当配置深度神经⽹络时考虑下⾯的技巧:
① 对 DDPG和DQN要有耐⼼,因为他们可能在早期阶段⼀段时间内没有学到任何东西,他们通常在训练过程的早期表现出累积奖励的下降。最终,他们可以在头⼏千迭代(episode)之后表现出学习的迹象。
② 对于具有 actor 和 critic ⽹络的代理,设置相同的初始学习率。对于⼀些问题,将 critic 的学习率设置的⼤⼀些可以改善学习效果。
4 Specify Agent Representationsmatlab定义函数表达式
☆ 当创建 actor 和 critic 表达式(representation)以后,可以⽤这些表达式创建⼀个强化学习代理。
☆ 可以通过 getActor 和 getCritic 命令获得已有代理的 actor and critic representations。也可以通过 setActor 和 setCritic 设置已存在代理的 actor and critic 。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论