ML-Agents:训练配置文件(一)

news2024/12/26 6:04:28

注:本文章为官方文档翻译,如有侵权行为请联系作者删除
Training Configuration File - Unity ML-Agents Toolkit–原文链接

常见训练器配置

关于训练,您需要做出的首要决定之一是使用哪种训练器:PPO、SAC 还是 POCA。有些训练配置是两种训练器都通用的(我们现在将对此进行回顾),而其他训练配置则取决于训练器的选择(我们将在后续章节中进行回顾)。

环境描述
trainer_type(默认值 = ppo)要使用的训练器类型:pposacpoca
summary_freq(默认值 = 50000)在生成和显示训练统计数据之前需要收集的经验数。这决定了 Tensorboard 中图表的粒度。
time_horizon(默认值 = 64)在将每个Agent的经验添加到经验缓冲区之前,需要收集多少步经验。当在情节结束前达到此限制时,将使用价值估计来预测Agent当前状态的总体预期奖励。因此,此参数在偏差较小但方差较大的估计(长期范围)和偏差较大但变化较小的估计(短期范围)之间进行权衡。如果情节中奖励频繁,或者情节过大,则较小的数字可能更为理想。这个数字应该足够大,以捕捉Agent动作序列中的所有重要行为。

典型范围:32-2048
max_steps(默认值 = 500000)在结束训练过程之前必须在环境中(或如果并行使用多个,则在所有环境中)采取的总步骤数(即收集的观察结果和采取的行动)。如果您的环境中有多个具有相同行为名称的Agent,则这些Agent采取的所有步骤都将计入相同的max_steps计数。

典型范围:5e5-1e7
keep_checkpoints(默认值 = 5)要保留的模型检查点的最大数量。检查点会在由 checkpoint_interval 选项指定的步骤数之后保存。一旦达到最大检查点数量,则在保存新检查点时会删除最旧的检查点。
even_checkpoints(默认值 = false)如果设置为 true,则忽略checkpoint_interval并根据keep_checkpointsmax_steps在整个训练过程中均匀分布检查点,即checkpoint_interval = max_steps / keep_checkpoints。在训练过程中记录Agent行为时非常有用。
checkpoint_interval(默认值 = 500000)训练器在每个检查点之间收集的经验数。keep_checkpoints在删除旧检查点之前,最多可保存检查点数。每个检查点都会将.onnx文件保存在results/文件夹中。
init_path(默认值 = None)从之前保存的模型初始化训练器。请注意,之前的运行应该使用与当前运行相同的训练器配置,并使用相同版本的 ML-Agents 保存。

您可以提供文件名或检查点的完整路径,例如{checkpoint_name.pt}./models/{run-id}/{behavior_name}/{checkpoint_name.pt}。如果您想从不同的运行初始化不同的行为或从较旧的检查点初始化,则提供此选项;在大多数情况下,使用--initialize-fromCLI 参数从同一运行初始化所有模型就足够了。
threaded(默认值 = false)允许环境在更新模型时进行迭代。这可能导致训练速度加快,尤其是在使用SAC的情况下。在使用自我博弈时,为了获得最佳性能,请将此设置设置为 false
hyperparameters -> learning_rate(默认值 = 3e-4)梯度下降的初始学习率。对应于每个梯度下降更新步骤的强度。如果训练不稳定且奖励未持续增加,通常应将此值减小。

典型范围:1e-5-1e-3
hyperparameters -> batch_size每次迭代中使用的经验数。这应该始终比buffer_size小几倍。如果您使用的是连续操作,这个值应该较大(以1000为数量级)。如果您只使用离散的操作,则该值应该较小(以10为数量级)。

典型范围:(连续 - PPO):512- 5120;(连续 - SAC):128- 1024;(离散、PPO 和 SAC):32- 512
hyperparameters -> buffer_size(PPO默认为10240, SAC默认为50000

PPO:在更新策略模型之前要收集的经验数。对应于我们在学习或更新模型之前应该收集多少经验。
这个值应该batch_size大好几倍。通常,较大的buffer_size对应于更稳定的训练更新。

SAC :经验缓冲区的最大大小 - 比您的情节长数千倍,以便 SAC 可以从旧经验和新经验中学习。

典型范围:PPO:2048- 409600;SAC:50000-1000000
hyperparameters -> learning_rate_schedule(默认值 = PPO:linear ;SAC:constant)决定学习率如何随时间变化。对于PPO,我们建议将学习率逐渐降低至max_steps,以便学习更稳定地收敛。然而,对于某些情况(例如训练时间不确定),可以禁用此功能。对于SAC,我们建议保持学习率不变,以便代理可以在其Q函数自然收敛之前继续学习。

linear线性衰减学习率,在 max_steps 处达到 0,同时constant在整个训练过程中保持学习率不变。
network_settings -> hidden_units(默认值 = 128)神经网络隐藏层中的单元数。对应于神经网络每个全连接层中的单元数。对于简单问题,其中正确的操作是观察输入的直接组合,这个值应该较小。对于问题复杂,动作是观察变量之间复杂交互的情况,这个值应该较大。

典型范围:32-512
network_settings -> num_layers(默认值 = 2)神经网络中的隐藏层数。对应于在观察输入之后或在视觉观察的CNN编码之后存在的隐藏层数。对于简单问题,较少的隐藏层可能训练得更快、更高效。对于更复杂的控制问题,可能需要更多的隐藏层。

典型范围:1-3
network_settings -> normalize(默认值 = false)是否对向量观测输入应用归一化。这种归一化基于向量观测的移动平均值和方差。归一化在具有复杂连续控制问题的情况下可能有所帮助,但在具有更简单的离散控制问题的情况下可能有害。
network_settings -> vis_encode_type(默认 = simple) 用于对视觉观察进行编码的编码器类型。

simple(默认)使用由两个卷积层组成的简单编码器。
nature_cnn使用Mnih 等人提出的由三个卷积层组成的CNN 实现。
resnet使用由三层堆叠结构组成IMPALA Resnet,每层包含两个残差块,因此其网络结构比其他两个要大得多。
match3是一个较小的 CNN(Gudmundsoon 等人),可以捕捉更细微的空间关系,并针对棋盘游戏进行了优化。
fully_connected 使用一个没有卷积层的单个全连接稠密层作为编码器。

由于卷积核的大小,每种类型的编码器都有最小观察大小限制 - simple : 20x20, nature_cnn : 36x36, resnet : 15 x 15, match3 : 5x5. fully_connected 没有卷积层,因此没有大小限制,但因为它的表示能力较弱,因此应该仅用于非常小的输入。请注意,使用 match3 的 CNN 处理非常大的视觉输入可能会导致观察编码非常大,从而可能减慢训练速度或导致内存问题。
network_settings -> conditioning_type(默认值 = hyper)使用目标观测值的策略条件类型。

它将目标观测视为常规观测,(默认情况下)使用带有目标观测作为输入的HyperNetwork来生成一些策略的权重。请注意,当使用 hyper 时,网络的参数数量会大大增加。因此,建议在使用此 conditioning_type时减少 hidden_units 的数量。

鉴于作者水平有限,本文可能存在不足之处,欢迎各位读者提出指导和建议,共同探讨、共同进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2265659.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《Posterior Collapse and Latent Variable Non-identifiability》

看起来像一篇很有用的paper,而且还是23年的 没看完 后边看不懂了 Abstract 现有的解释通常将后验崩塌归因于由于变分近似而使用神经网络或优化问题。 而本文认为后验崩塌是潜在变量不可识别性的问题(a problem of latent variable non-identifiability) 本文证明了…

申请腾讯混元的API Key并且使用LobeChat调用混元AI

申请腾讯混元的API Key并且使用LobeChat调用混元AI 之前星哥写了一篇文章《手把手教拥有你自己的大模型ChatGPT和Gemini等应用-开源lobe-chat》搭建的开源项目,今天这篇文章教大家如何添加腾讯云的混元模型,并且使用LobeChat调用腾讯混元AI。 申请腾讯混…

Navicat通过ssh连接mysql

navicat 通过ssh连接mysql 对搭建完的mysql连接时,通过ssh连接的方法 需要确保mysql默认端口3306没有被防火墙阻拦 第一步 第二步 35027448270)] 需要注意的是乌班图系列的默认root的ssh是禁止的,应该用别的账户登录

【NACOS插件】使用官网插件更换NACOS数据库

说明 nacos 2.3.1默认支持mysql和derby数据库,如果想要支持其他数据库,可以通过使用插件方式实现。对于该插件的使用,官方说明文档较为粗略(不过也没问题,实际上整个过程就是很简单,只是使用者想复杂了),网…

mysql基础(jdbc)

1.Java连接数据库步骤 1.注册驱动 Class<?> driverManagerClass.forName("com.mysql.cj.jdbc.Driver"); 2.获取连接 Connection conDriverManager.getConnection("jdbc:mysql://localhost:3306/studymysql","root","123456"); …

ROM修改进阶教程------修改刷机包init.rc 自启用户自定义脚本的一些基本操作 代码格式与注意事项

在很多定制化固件中。我们需要修改系统的rc文件来启动自己的一些脚本。但有时候修改会不起作用,其具体原因在于权限与代码格式的问题。博文将系统的解析代码操作编写的注意事项与各种权限分别。了解以上. 轻松编写自定义启动脚本. 通过博文了解💝💝💝 1-------💝💝…

硬件模块常使用的外部中断

对于STM32来说&#xff0c;想要获取的信号是外部驱动的很快的突发信号 例1&#xff1a;旋转编码器的输出信号&#xff1a; 可能很久都不会拧它&#xff0c;不需要STM32做任何事情但是一拧它&#xff0c;就会有很多脉冲波形需要STM32接收信号是突发的&#xff0c;STM32不知道什…

3D布展平台主要有哪些功能?有什么特点?

3D布展平台是一种利用3D技术和虚拟现实&#xff08;VR&#xff09;技术&#xff0c;为用户提供线上虚拟展览和展示服务的平台。这些平台通常允许用户创建、设计和发布3D虚拟展厅&#xff0c;从而提供沉浸式的展览体验。以下是对3D布展平台的详细介绍&#xff1a; 一、主要功能 …

大恒相机开发(2)—Python软触发调用采集图像

大恒相机开发&#xff08;2&#xff09;—Python软触发调用采集图像 完整代码详细解读和功能说明扩展学习 这段代码是一个Python程序&#xff0c;用于从大恒相机采集图像&#xff0c;通过软件触发来采集图像。 完整代码 咱们直接上python的完整代码&#xff1a; # version:…

VTK知识学习(27)- 图像基本操作(二)

1、图像类型转换 1&#xff09;vtkImageCast 图像数据类型转换在数字图像处理中会频繁用到。一些常用的图像算子(例如梯度算子)在计算时出于精度的考虑&#xff0c;会将结果存储为float或double类型&#xff0c;但在图像显示时&#xff0c;一般要求图像为 unsigned char 类型,…

在跨平台开发环境中构建高效的C++项目:从基础到最佳实践20241225

在跨平台开发环境中构建高效的C项目&#xff1a;从基础到最佳实践 引言 在现代软件开发中&#xff0c;跨平台兼容性和高效开发流程是每个工程师追求的目标。尤其是对于 C 开发者&#xff0c;管理代码的跨平台构建以及调试流程可能成为一项棘手的挑战。在本文中&#xff0c;我…

网络协议入门

一、概述 1、模型 为了减少协议设计的复杂性&#xff0c;大多数网络模型均采用分层的方式来组织。每一层都有自己的功能&#xff0c;就像建筑物一样&#xff0c;每一层都靠下一层支持。每一层利用下一层提供的服务来为上一层提供服务&#xff0c;本层服务的实现细节对上层屏蔽…

集成RabbitMQ+MQ常用操作

文章目录 1.环境搭建1.Docker安装RabbitMQ1.拉取镜像2.安装命令3.开启5672和15672端口4.登录控制台 2.整合Spring AMQP1.sun-common模块下创建新模块2.引入amqp依赖和fastjson 3.新建一个mq-demo的模块1.在sun-frame下创建mq-demo2.然后在mq-demo下创建生产者和消费者子模块3.查…

sentinel笔记10- 限流规则持久化(下)

上一篇整理过单向的持久化&#xff0c;sentinel笔记9- 限流规则持久化&#xff08;上&#xff09;-CSDN博客 本篇进行sentinel 改造&#xff0c;实现双向同步。 1 下载Sentinel源码 https://github.com/alibaba/Sentinel 2 dashboard 改造 2.1修改dashboard项目的pom.xml &…

微服务篇-深入了解 XXL-JOB 分布式任务调度的具体使用(XXL-JOB 的工作流程、框架搭建)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 XXL-JOB 调度中心概述 1.2 XXL-JOB 工作流程 1.3 Cron 表达式调度 2.0 XXL-JOB 框架搭建 2.1 XXL-JOB 调度中心的搭建 2.2 XXL-JOB 执行器的搭建 2.3 使用调度中心…

【jenkins插件】

1) 2) 3) 4) 5) 6) 参考: 知识库/运维/Jenkins/01-安装/13-插件.md zfoo/java-developer-document - 码云 - 开源中国

孔雀鱼和斑马鱼能一起养吗?

在观赏鱼的世界里&#xff0c;孔雀鱼和斑马鱼都是备受鱼友喜爱的热门品种。它们独特的外形和相对容易的饲养条件&#xff0c;使得不少养鱼新手跃跃欲试将它们混养在一起&#xff0c;但这其中实则有诸多因素需要考量。 从生存环境来看&#xff0c;孔雀鱼和斑马鱼有一定的兼容性…

踏踏实实练SQLday1

踏踏实实练SQLday1 1连续登录1.1查询连续登录3天以上的用户第一步去重第二步-开窗rownumber&#xff0c;用date减一下&#xff0c;对结果进行分组 -- over()开窗函数知识图谱第三步 1.2查询连续登录最大天数用户1.3某个用户连续登录天数注意先where一下这个用户的数据过滤出来.…

UM-Net:基于不确定性建模的息肉分割方法,对ICGNet的重新思考|文献速递-生成式模型与transformer在医学影像中的应用

Title 题目 UM-Net: Rethinking ICGNet for polyp segmentation with uncertainty modeling UM-Net&#xff1a;基于不确定性建模的息肉分割方法&#xff0c;对ICGNet的重新思考 01 文献速递介绍 结直肠癌&#xff08;CRC&#xff09;是男性中第三大最常见的恶性肿瘤&…

C语言项目 天天酷跑(上篇)

前言 这里讲述这个天天酷跑是怎么实现的&#xff0c;我会在天天酷跑的下篇添加源代码&#xff0c;这里会讲述天天酷跑这个项目是如何实现的每一个思路&#xff0c;都是作者自己学习于别人的代码而创作的项目和思路&#xff0c;这个代码和网上有些许不一样&#xff0c;因为掺杂了…