创建策略和价值函数表示

  • 行动者和评论者表示
  • 表近似器
  • 深度神经网络近似器
    • 网络的输入和输出维度
    • 构建深度神经网络
    • 创建和配置表示
    • 递归神经网络
  • 自定义基础函数逼近器
  • 创建智能体或指定智能体表示

强化学习策略是一种映射,用于根据对环境的观察来选择智能体采取的行动。 在训练期间,智能体会调整其策略表示的参数以最大化预期的累积长期奖励。

强化学习智能体使用分别称为行动者和批评者表示的函数近似器来估计策略和价值函数。 行动者代表根据当前观察选择最佳行动的策略。 评论者代表价值函数,该函数估计当前保单的预期长期累积奖励。

在创建智能体之前,必须使用深度神经网络,线性基础函数或查找表创建所需的参与者和评论者表示。 您使用的函数逼近器的类型取决于您的应用程序。

有关代理的更多信息,请参见强化学习智能体。

行动者和评论者表示

强化学习工具箱™软件支持以下几种表示形式:

  1. V ( S ∣ θ V ) V(S |θ_V) V(S∣θV​)-根据给定观察值S估计预期累积长期奖励的评论者。您可以使用rlValueRepresentation创建这些评论者。
  2. Q ( S , A ∣ θ Q ) Q(S,A |θ_Q) Q(S,A∣θQ​)-根据给定的观察值S评估所有可能的离散动作的预期累积长期奖励的评论者。您可以使用rlQValueRepresentation创建这些评论者。
  3. Q ( S ∣ θ Q ) Q(S |θ_Q) Q(S∣θQ​)-为给定观察值S估计所有可能的离散动作Ai的预期累积长期奖励的多输出评论者,您可以使用rlQValueRepresentation创建这些评论者。
  4. μ ( S ∣ θ μ ) μ(S|θ_\mu) μ(S∣θμ​)-基于给定观察值S选择动作的行动者。您可以使用rlDeterministicActorRepresentation或rlStochasticActorRepresentation创建这些行动者。

每个表示形式都使用函数逼近器,该函数逼近器具有一组相应的参数 ( θ V , θ Q , θ μ ) (θ_V,θ_Q,θ_μ) (θV​,θQ​,θμ​),这些参数在学习过程中进行计算。

对于离散观察和离散动作数量有限的系统,可以将值函数存储在查找表中。 对于具有许多离散的观察和动作的系统以及连续的观察和动作空间,存储观察和动作是不切实际的。 对于此类系统,您可以使用深度神经网络或自定义(参数中为线性)基础函数来表示行动者和评论者。

下表总结了可以使用Reinforcement Learning Toolbox软件提供的四个表示对象的方式,具体取决于您环境中的动作和观察空间以及要使用的逼近器和智能体。

表近似器

基于查找表的表示形式适用于离散观察和动作数量有限的环境。 您可以创建两种类型的查找表表示形式:

  1. 价值表,存储相应观察值的奖励

  2. Q表,用于存储对应的观察动作对的奖励

要创建表表示形式,请首先使用rlTable函数创建一个值表或Q表。 然后,使用rlValueRepresentation或rlQValueRepresentation对象为表创建一个表示。 要配置表示形式使用的学习率和优化,请使用rlRepresentationOptions对象。

深度神经网络近似器

您可以使用深度神经网络创建行动者和评论者函数逼近器。 这样做使用Deep Learning Toolbox™软件功能。

网络的输入和输出维度

行动者和评论者网络的尺寸必须与训练环境对象中的相应动作和观察规范相匹配。 要获取环境env的动作和观察维度,请分别使用getActionInfo和getObservationInfo函数。 然后访问规范对象的Dimensions属性。

actInfo = getActionInfo(env);
actDimensions = actInfo.Dimensions;obsInfo = getObservationInfo(env);
obsDimensions = obsInfo.Dimensions;

价值函数评论者的网络(例如AC,PG或PPO智能体中使用的网络)必须仅将观察值作为输入,并且必须具有单个标量输出。 对于这些网络,输入层的尺寸必须与环境观察规范的尺寸匹配。 有关更多信息,请参见rlValueRepresentation。

单输出Q值函数评论者的网络(例如Q,DQN,SARSA,DDPG,TD3和SAC代理中使用的网络)必须将观察值和操作都作为输入,并且必须具有单个标量输出。 对于这些网络,对于观察和操作,输入层的尺寸必须与环境规范的尺寸匹配。 有关更多信息,请参见rlQValueRepresentation。

用于多输出Q值函数评论者的网络(例如Q,DQN和SARSA智能体中使用的网络)仅将观察值作为输入,并且必须具有单个输出层,并且输出大小等于离散操作的数量。 对于这些网络,输入层的尺寸必须与环境观测值的尺寸匹配。 规格。 有关更多信息,请参见rlQValueRepresentation。

对于行动者网络,输入层的尺寸必须与环境观察规范的尺寸匹配。

  1. 具有离散动作空间的行动者(例如PG,AC和PPO智能体中的角色)使用的网络必须具有单个输出层,并且输出大小等于可能的离散动作数量。

  2. 具有连续动作空间的确定性行动者(例如DDPG和TD3智能体中的行动者)中使用的网络必须具有单个输出层,其输出大小必须与环境动作规范中定义的动作空间的尺寸相匹配。

  3. 具有连续动作空间的随机角色(例如PG,AC,PPO和SAC智能体中的角色)中使用的网络必须具有单个输出层,其输出大小是环境动作规范中定义的动作空间尺寸的两倍。 这些网络必须有两条单独的路径,第一个产生平均值(必须将其缩放至输出范围),第二个产生标准偏差(必须为非负值)。

构建深度神经网络

深度神经网络由一系列相互连接的层组成。 下表列出了强化学习应用程序中使用的一些常见深度学习层。 有关可用层的完整列表,请参阅深度学习层列表。

强化学习不支持bilstmLayer和batchNormalizationLayer层。

强化学习工具箱软件提供了以下几层,其中不包含可调参数(即,在训练过程中会更改的参数)。

您也可以创建自己的自定义图层。 有关更多信息,请参阅定义自定义深度学习层。

对于强化学习应用程序,您可以通过为每个输入路径(观察或动作)和每个输出路径(估计的奖励或动作)连接一系列层来构建深度神经网络。 然后,您可以使用connectLayers函数将这些路径连接在一起。

您还可以使用Deep Network Designer应用程序创建深度神经网络。 有关示例,请参阅使用深度网络设计器创建代理和使用图像观察进行训练。

创建深度神经网络时,必须为每个输入路径的第一层和输出路径的最后一层指定名称。

以下代码创建并连接以下输入和输出路径:

  1. 观察输入路径observationPath,其第一层名为“ observation”。

  2. 动作输入路径actionPath,第一层名为“ action”。

  3. 估计值函数的输出路径commonPath,它将observationPath和actionPath的输出作为输入。 该路径的最后一层称为“输出”。

observationPath = [imageInputLayer([4 1 1],'Normalization','none','Name','observation')fullyConnectedLayer(24,'Name','CriticObsFC1')reluLayer('Name','CriticRelu1')fullyConnectedLayer(24,'Name','CriticObsFC2')];
actionPath = [imageInputLayer([1 1 1],'Normalization','none','Name','action')fullyConnectedLayer(24,'Name','CriticActFC1')];
commonPath = [additionLayer(2,'Name','add')reluLayer('Name','CriticCommonRelu')fullyConnectedLayer(1,'Name','output')];
criticNetwork = layerGraph(observationPath);
criticNetwork = addLayers(criticNetwork,actionPath);
criticNetwork = addLayers(criticNetwork,commonPath);
criticNetwork = connectLayers(criticNetwork,'CriticObsFC2','add/in1');
criticNetwork = connectLayers(criticNetwork,'CriticActFC1','add/in2');

对于所有观察和动作输入路径,必须将imageInputLayer指定为路径中的第一层。

您可以使用图函数查看深度神经网络的结构。

plot(criticNetwork)


对于PG和AC代理,深层神经网络角色表示的最终输出层是fullyConnectedLayer和softmaxLayer。 为网络指定层时,必须指定fullyConnectedLayer,并且可以选择指定softmaxLayer。 如果省略softmaxLayer,则软件会自动为您添加一个。

确定用于深度神经网络表示的层的数量,类型和大小可能很困难,并且取决于应用程序。 但是,决定函数逼近器特性的最关键因素是它是否能够为您的应用程序逼近最佳策略或折现值函数,也就是说,它是否具有可以正确学习观察,动作 ,和奖励信号。

构建网络时,请考虑以下提示。

  1. 对于连续动作空间,如有必要,请先使用tanhLayer和ScalingLayer绑定动作。

  2. 具有reluLayer层的深层密集网络可以很好地近似许多不同的功能。 因此,它们通常是不错的首选。

  3. 从您认为可以近似最佳策略或价值功能的最小网络开始。

  4. 当您近似强非线性或具有代数约束的系统时,添加更多层通常比增加每层输出数量更好。 通常,逼近器表示更复杂函数的能力仅在层大小上呈多项式增长,但随层数呈指数增长。 换句话说,虽然通常需要更多的数据和更长的训练时间,但是更多的层可以近似于更复杂和非线性的合成函数。 具有较少层的网络可能需要成倍地增加单位才能成功近似相同的功能类别,并且可能无法正确学习和概括。

  5. 对于基于策略的智能体(仅从遵循当前策略时收集的经验中学习的智能体)(例如AC和PG智能体),如果您的网络较大(例如,一个具有32个节点的两个隐藏层的网络),则并行训练会更好, 每个都有数百个参数)。 策略并行更新假定每个工作人员都更新了网络的不同部分,例如当他们探索观察空间的不同区域时。 如果网络较小,则工作者更新可能会相互关联并使训练不稳定。

创建和配置表示

要为您的深度神经网络创建评论者表示,请使用rlValueRepresentation或rlQValueRepresentation对象。 若要为您的深层神经网络创建角色表示,请使用rlDeterministicActorRepresentation或rlStochasticActorRepresentation对象。 要配置表示形式使用的学习率和优化,请使用rlRepresentationOptions对象。

例如,为评论者网络crimeNetwork创建一个Q值表示对象,指定学习率为0.0001。 创建表示时,将环境操作和观察规范传递给rlQValueRepresentation对象,并指定观察和操作连接到的网络层的名称(在本例中为“观察”和“操作”)。

opt = rlRepresentationOptions('LearnRate',0.0001);
critic = rlQValueRepresentation(criticNetwork,obsInfo,actInfo,...'Observation',{'observation'},'Action',{'action'},opt);

创建深度神经网络并配置表示对象时,请考虑使用以下方法作为起点。

  1. 从最小的网络和较高的学习率(0.01)开始。 训练此初始网络以查看智能体是否迅速收敛到不良策略或以随机方式采取行动。 如果出现这些问题中的任何一个,请通过在每个层上添加更多层或更多输出来重新调整网络规模。 您的目标是找到一个足够大的网络结构,学习速度不会太快,并且在最初的训练期后会显示学习的迹象(奖励图的轨迹不断改善)。

  2. 一旦您选择了良好的网络体系结构,较低的初始学习率就可以让您查看智能体是否走上了正确的轨道,并帮助您检查网络体系结构是否满足该问题。 低学习率使调整参数变得容易得多,尤其是对于棘手的问题。

另外,在配置深度神经网络表示时,请考虑以下提示。

  1. 请对DDPG和DQN智能体保持耐心,因为他们可能在早期情节中有一段时间没有学习到任何东西,而且他们通常会在训练过程的早期显示累积奖励下降。 最终,在前几千集之后,他们可以显示学习的迹象。

  2. 对于DDPG和DQN智能体,促进对智能体的探索至关重要。

  3. 对于既有行动者网络又有评论者网络的智能体,请将两种表示形式的初始学习率设置为相同的值。 对于某些问题,将评论者的学习率设置为高于行动者的学习率可以改善学习效果。

递归神经网络

创建用于PPO或DQN智能体的表示形式时,可以使用递归神经网络。 这些网络是深度神经网络,具有sequenceInputLayer输入层和至少一个具有隐藏状态信息的层,例如lstmLayer。 当环境的状态不能包含在观察向量中时,它们可能特别有用。 有关更多信息和示例,请参见rlValueRepresentation,rlQValueRepresentation,rlDeterministicActorRepresentation和rlStochasticActorRepresentation。

自定义基础函数逼近器

自定义(参数中的线性)基本函数逼近器的形式为f = W’B,其中W是权重数组,B是必须创建的自定义基本函数的列向量输出。 线性基函数表示的可学习参数是W的元素。

对于价值函数评论者表示形式(例如,在AC,PG或PPO智能体中使用的那些),f是标量值,因此W必须是与B长度相同的列向量,并且B必须是观察值的函数 。 有关更多信息,请参见rlValueRepresentation。

对于单输出Q值函数评论器表示形式(例如Q,DQN,SARSA,DDPG,TD3和SAC代理中使用的表示),f是标量值,因此W必须是具有相同长度的列向量 B,并且B必须是观察和动作的函数。 有关更多信息,请参见rlQValueRepresentation。

对于具有离散动作空间的多输出Q值函数注释器表示形式(例如Q,DQN和SARSA代理中使用的那些),f是一个向量,其元素数量与可能的动作数量一样多。 因此,W必须是一个矩阵,其列数与可能的动作数一样,行数与B的长度一样。B必须仅是观察值的函数。 有关更多信息,请参见rlQValueRepresentation。
对于具有离散动作空间的角色(例如PG,AC和PPO代理中的角色),f必须是列向量,其长度等于可能的离散动作的数量。

  1. 对于具有连续动作空间的确定性行动者(例如DDPG和TD3代理中的参与行动者),f的维必须与智能体动作规范的维匹配,该规范可以是标量或列向量。

  2. 具有连续动作空间的随机角色不能依赖自定义基础函数(由于只能对标准偏差强制执行正性,因此只能使用神经网络逼近器)。

  3. 对于任何行动者表示,W的列数必须与f中的元素数一样多,并且行的数量必须与B中的元素数一样多。B必须仅是观察的函数。 有关更多信息,请参见rlDeterministicActorRepresentation和rlStochasticActorRepresentation。

创建智能体或指定智能体表示

创建行动者和评论者表示后,您可以创建使用这些表示的强化学习智能体。 例如,使用给定的行动者和评论者网络创建PG智能体。

agentOpts = rlPGAgentOptions('UseBaseline',true);
agent = rlPGAgent(actor,baseline,agentOpts);

有关不同类型的强化学习智能体的更多信息,请参阅强化学习智能体。

您可以分别使用getActor和getCritic从现有智能体获取行动者和评论者表示。

您还可以分别使用setActor和setCritic设置现有智能体的参与者和评论者。 使用这些功能为现有智能体指定表示时,指定表示的输入和输出层必须与原始智能体的观察和操作规范匹配。

MATLAB强化学习工具箱(十三)创建策略和价值函数表示相关推荐

  1. 【MATLAB强化学习工具箱】学习笔记--actor网络和critic网络的结果放在哪里?

    原算例见 [MATLAB强化学习工具箱]学习笔记--在Simulink环境中训练智能体Create Simulink Environment and Train Agent_bear_miao的博客- ...

  2. MATLAB强化学习工具箱(十二)强化学习智能体创建总览

    强化学习智能体创建总览 强化学习介绍 内置智能体 选择智能体类型 自定义智能体 关于强化学习的更多介绍 强化学习介绍 强化学习的目标是训练智能体在不确定的环境中完成任务.智能体从环境中接收观察和奖励, ...

  3. MATLAB强化学习实战(十三) 使用强化学习智能体训练Biped机器人行走

    使用强化学习智能体训练Biped机器人行走 两足机器人模型 创建环境接口 选择和创建训练智能体 DDPG Agent TD3 Agent 指定训练选项和训练智能体 仿真训练过的智能体 比较智能体性能 ...

  4. 什么是强化学习,强化学习在控制系统中的应用以及matlab强化学习工具箱的介绍

    一.Reinforcement Learning Toolbox介绍 强化学习工具箱使用强化学习算法(包括DQN,A2C和DDPG)为训练策略(policy)提供函数和模块.您可以使用这些策略为复杂的 ...

  5. MATLAB强化学习工具箱(十一)训练DDPG智能体控制飞行机器人

    训练DDPG智能体控制飞行器 飞行机器人模型 创建集成模型 动作与观察 创建环境接口 重置函数 创建DDPG智能体 训练智能体 DDPG智能体仿真 本示例说明如何训练深度确定性策略梯度(DDPG)智能 ...

  6. MATLAB强化学习工具箱(一)-在网格环境中使用Q-learning and SARSA

    在网格环境中使用Q-learning and SARSA 案例分析 创建网格世界环境 创建Q learning智能体 训练Q learning 智能体 验证Q learning结果 创建和培训SARS ...

  7. MATLAB强化学习实战(七) 在Simulink中训练DDPG控制倒立摆系统

    在Simulink中训练DDPG控制倒立摆系统 倒立摆的Simscape模型 创建环境接口 创建DDPG智能体 训练智能体 DDPG智能体仿真 此示例显示了如何训练深度确定性策略梯度(DDPG)智能体 ...

  8. matlab强化学习DDPG算法改编/菜鸟理解2——航天器三轴姿态稳定器学习算例

    目录 写在前面 matlab强化学习库简介 航天器三轴姿态稳定器介绍 算法流程 代码/simulink 结果展示与分析 一些心得 写在最后 写在前面 %写在前面: 本人大四狗一名,不是计算机专业,所以 ...

  9. MATLAB强化学习-appdesigner使用

    MATLAB强化学习-appdesigner使用 好像是MATLAB2017a之后都可以使用appdesigner,来代替老的MATLAB的guide. 首先在命令窗口输入:appdesigner打开 ...

最新文章

  1. 【数字信号处理】序列傅里叶变换 ( 序列傅里叶变换与反变换 | 序列绝对可和 与 存在傅里叶变换之间的关系 | 序列傅里叶变换性质 )
  2. Android学习----AndroidManifest.xml文件解析
  3. core webapi缩略图_.Net Core WebApi上传图片的两种方式
  4. 电脑机器人_视频|电话积分换平板电脑和扫地机器人?女子拿回家后……-
  5. mysql问题处理积累
  6. Android ImageView的scaleType(图片比例类型)属性与adjustViewBounds(调整视图边界)属性
  7. 配置了坐标还是找不到serv_你那么努力,为何还是找不到工作?从优势发展观来看个人职业发展...
  8. 怎么把东西去掉修图_很多人花几千块学习商业修图,其实跟把钱扔了一样。?...
  9. Apache JMeter (二)性能测试 入门实例
  10. java a =a-=aa_java 初学 :求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。几个 数相加由键盘控制。...
  11. Extjs ComboBox常用的配置
  12. Springboot2.2对put,detele方法的更改
  13. 移动物联网卡哪里可以办理
  14. PLC-Recorder快速监控多个PLC位的技巧
  15. Update|亚洲精品菜订餐平台「Chowbus」获400万美金新融资,由Greycroft和FJ labs领投...
  16. Ubuntu16.04下使用kalibr标定intel RealSense D435i imu+双目
  17. 新老域名更替时的页面跳转
  18. 【Java 8 新特性】Java Clock tick() 设置时间最小跳动间隔
  19. 创新创业名词解释_“大众创业万众创新”相关名词解释总汇
  20. 台灯a级和aa级和aaa级哪个好?2022最新护眼台灯推荐

热门文章

  1. mysql安装后怎么打开_mysql安装配置和启动
  2. 英语单词-2021.2.14
  3. hp7610扫描到计算机无法激活,惠普打印机为什么扫描不了,显示这个,什么意思,怎么处理?急...
  4. html文件上传 用到美化,文件上传html样式美化
  5. Scrapy框架流程图详解
  6. 我的世界手机有PHP的开服器下载,《我的世界手机版》怎么用电脑开服,pocketminePC版使用教程...
  7. 毒鸡汤 舔狗语录PHP源码
  8. 数学建模之AHP层次分析法
  9. html锁机源码,webkit实现仿Iphone解锁插件
  10. 微信小程序 - 实现 <video> 视频组件自定义封面及播放按钮,给 video 视频播放组件加上封面图、封面标题、封面描述文字、自定义的播放按钮、DIY 封面等(详细示例源码)