当前位置: 首页 > news >正文

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

注:本文章为官方文档翻译,如有侵权行为请联系作者删除
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 的数量。

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

相关文章:

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

注:本文章为官方文档翻译,如有侵权行为请联系作者删除 Training Configuration File - Unity ML-Agents Toolkit–原文链接 常见训练器配置 关于训练,您需要做出的首要决定之一是使用哪种训练器:PPO、SAC 还是 POCA。有些训练配置…...

【物联网技术与应用】 实验13:雨滴传感器实验

实验13 雨滴传感器实验 【实验介绍】 雨滴传感器或雨滴检测传感器用于检测是否下雨以及降雨。广泛应用于汽车的雨刷系统、智能照明系统和天窗系统。 【实验组件】 ● Arduino Uno主板* 1 ● USB数据线*1 ● 雨滴传感器* 1 ● 雨滴传感器调理板* 1 ● 面包板*1 ● 9V方型…...

帝国cms电脑pc站url跳转到手机站url的方法

本文讲解一下帝国cms电脑网站跳转到手机动态网站和手机静态网站的方法,笔者以古诗词网 www.gushichi.com为例,为大家介绍操作步骤。方法一:帝国pc站跳转到手机静态站 1、假设我们有帝国cms 电脑网站www.XXX.com,手机网站m.XXX.com &#xf…...

Django models中的增删改查与MySQL SQL的对应关系

在 Django 中,models 提供了一种高层次的抽象来与数据库进行交互,使得开发者可以使用 Python 代码而非直接编写 SQL 来执行增删改查(CRUD)操作。下面将详细介绍 Django 的 ORM(对象关系映射)操作如何对应到…...

双指针——快乐数

一.题目描述 202. 快乐数 - 力扣(LeetCode) 二.题目解析 我们要判断一个数是不是快乐数要通过它的三个性质来进行判断。这个数会一直变化,由它的各个位的平方和重新构成这个数。如果这个数在变化的过程中变成了1,那么就是快乐数…...

Docker 默认安装位置迁移

一、找到 Docker 默认安装位置 [roothost-192-168-0-1 ~]# docker info Client:Version: 26.1.0Context: defaultDebug Mode: falseServer:Containers: 31Running: 31Paused: 0Stopped: 0Images: 128Server Version: 26.1.0Storage Driver: overlay2Backing Filesystem:…...

jmeter跨进程实现变量共享-全局变量

jmeter跨进程实现变量共享-全局变量 例如:登录一次,后面业务进行多线程并发场景 新增一个setUp线程组,在setUp线程组下,添加登录接口 使用json提取器,提取token Authorization $.token 0添加BeanShell 后置处理程序…...

Vue.js组件(6):echarts组件

1 前言 本章主要对常用的echars图表展示进行基本的组件封装。使用该组件前需要在项目中引入echarts。官网:Apache ECharts npm install echarts --save 2 图表组件 2.1 折线图组件 组件属性:chartId,指定图表挂载div的id,注意不…...

yolov3算法及其改进

yolov3算法及其改进 1、yolov3简介2、yolov3的改进2.1、backbone的改进2.1.1、darknet19相对于vgg16有更少的参数,同时具有更快的速度和更高的精度2.1.2、resnet101和darknet53,同样具有残差结构,精度也类似,但是darknet具有更高的速度2.2、FPN2.3、anchor-base与grid-cell…...

Python + 深度学习从 0 到 1(02 / 99)

希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 欢迎关注、订阅专栏 【深度学习从 0 到 1】谢谢你的支持! ⭐ 手写数字分类: Keras MNIST 数据集 手写数字分类…...

HTML+CSS+JS制作在线书城网站(内附源码,含5个页面)

一、作品介绍 HTMLCSSJS制作一个在线书城网站,包含首页、分类页、排行榜页、新书上架页、特惠专区页等5个静态页面。其中每个页面都包含一个导航栏、一个主要区域和一个底部区域。 二、页面结构 1. 顶部导航栏 包含网站Logo、搜索框、用户登录/注册入口、购物车图…...

【FastAPI】中间件

【FastAPI】中间件 一、概述二、作用2.1 日志记录与监控2.2 身份验证与授权2.3 CORS(跨域资源共享)2.4 Gzip压缩2.5 会话管理2.6 自定义功能2.7 执行顺序 三、 总结四、相关链接 一、概述 FastAPI的中间件提供了一种强大的机制,允许开发者在…...

5个实用的设计相关的AI网站

在这个日新月异的数字时代,我们不断面临着新的挑战和机遇。随着人工智能(AI)技术的飞速发展,越来越多的AI工具开始融入到设计相关的工作流程中,极大地提升了工作效率和创作能力。今天,我非常兴奋地向大家介…...

STL 六大组件

C STL(标准模板库)主要由六大组件构成,它们相互协作,为C程序员提供了功能强大且高效的通用数据结构和算法工具,以下是对这六大组件的详细介绍: 1. 容器(Containers) 概述&#xff…...

Python选择题训练工具:高效学习、答题回顾与音频朗读一站式体验

一、引言 随着人工智能技术的不断进步,传统的教学方式已经逐渐向智能化、互动化转变。在众多英语测试题型中,选择题作为一种高效的方式被广泛应用于各类培训与考试中。为了帮助学生高效学习与自测,本篇文章将采用Python编写一款基于 Python …...

Python实现机器学习驱动的智能医疗预测模型系统的示例代码框架

以下是一个使用Python实现机器学习驱动的智能医疗预测模型系统的示例代码框架。这个框架涵盖了数据收集(爬虫)、数据清洗和预处理、模型构建(决策树和神经网络)以及模型评估的主要步骤。 1. 数据收集(爬虫&#xff09…...

AWS Certified AI Practitioner 自学考试心得

学习目标: 考取 AWS Certified AI Practitioner 那什么是 AWS Certified AI Practitioner 认证 是基础级的认证 比较简单 — 学习内容: 1. AWS网站自学网站 极客时间免费课程:http://gk.link/a/12sJL 配合极客时间课程的章节测试检验自…...

JQ中的each()方法与$.each()函数的使用区别

介绍 jquery里的 each() 是一个强大的遍历工具,用于迭代集合中的元素,并为每个元素执行指定的函数‌。它既可以用于遍历 jQuery对象集合,也可以用于遍历普通的数组或对象。 each()对象遍历 语法: $(selector).each(function(in…...

滚珠丝杆与直线导轨的区别

滚珠丝杆和直线导轨是两种常见的精密机械传动装置,它们的作用是实现直线运动,在工业自动化和精密机械领域中扮演着重要的角色。尽管它们都用于实现直线运动,但它们在结构以及性能特点上还是存在一些区别: 一、工作原理 1、滚珠丝…...

【Ovis】Ovis1.6的本地部署及推理

Ovis简介 Ovis是阿里国际AI团队开源的多模态大模型,看新闻介绍效果不错,在多个场景的测试下都能达到SOTA,其中的Ovis1.6-Gemma2-9B在30B参数以下的模型中取得了综合排名第一,赶超MiniCPM-V-2.6等行业优秀大模型。所以我也部署一个…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

管理学院权限管理系统开发总结

文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...