强化学习与合成数据生成:UnityML-Agents深度解析
立即解锁
发布时间: 2025-09-05 02:06:13 阅读量: 352 订阅数: 56 AIGC 


Unity与AI:模拟与合成
# 强化学习与合成数据生成:Unity ML - Agents 深度解析
## 1. 好奇心奖励与超参数设置
在强化学习中,为了激发智能体的好奇心,可以传递与外在奖励相同的超参数。具体如下:
- **好奇心奖励信号超参数**:
- `reward_signals->curiosity->strength`:用于平衡好奇心奖励与其他奖励(如外在奖励)的缩放系数,取值范围在 0.0 到 1.0 之间。
- `reward_signals->curiosity->gamma`:根据奖励实现所需的时间来调整奖励感知价值的第二个缩放系数,与外在奖励的 `gamma` 类似,取值范围也在 0.0 到 1.0 之间。
常见的模型超参数配置还包括:
| 超参数 | 作用 | 取值建议 |
| ---- | ---- | ---- |
| `batch_size` | 控制模型每次更新时模拟的迭代次数 | 若使用连续动作,取值应较大(数千);若仅使用离散动作,取值应较小(数十) |
| `buffer_size` | 根据算法不同有不同作用。对于 PPO 和 MA - POCA,控制在更新模型前收集的经验数量;对于 SAC,对应经验缓冲区的最大大小 | 对于 PPO 和 MA - POCA,应是 `batch_size` 的数倍;SAC 可根据需求设置 |
| `learning_rate` | 对应每次更新对模型的影响程度 | 通常在 1e - 5 到 1e - 3 之间。若训练不稳定,可尝试减小该值 |
部分超参数与所使用的训练器相关。以最常用的 PPO 训练器为例:
- **beta**:激励探索。高值类似于好奇心内在奖励,鼓励智能体尝试新事物;简单环境中宜用低值,可减少训练时间。
- **epsilon**:决定行为模型对变化的接受程度。高值使智能体在发现奖励后能快速采用新行为,但后期行为易变;低值使智能体学习经验需更多尝试,训练时间可能更长,但后期行为更稳定。
- **调度超参数**:如 `beta_schedule` 和 `epsilon_schedule`,可使其他超参数在训练过程中发生变化,例如在训练早期更注重 `beta`,后期降低 `epsilon`。
POCA/MA - POCA 使用与 PPO 相同的超参数,而 SAC 有其专用的超参数。若不清楚所需超参数的含义,可查看 GitHub 上 ML - Agents 各训练器类型的示例文件。
## 2. 算法介绍
Unity ML - Agents 框架允许智能体通过优化以下方式定义的奖励来学习行为:
- **显式(外在奖励)**:通过 `AddReward` 或 `SetReward` 方法,在智能体做对(或做错)事情时给予奖励(或惩罚)。
- **隐式(内在奖励)**:基于所选算法,根据与提供的行为示范的相似度给予奖励,智能体尝试克隆示范行为并根据克隆程度自动获得奖励。
- **训练过程隐式奖励**:通过超参数设置,智能体可因表现出某些属性(如好奇心)而获得奖励。
不同算法的特点如下:
- **近端策略优化(PPO)**:是 Unity 中机器学习的默认选择,尝试近似一个理想函数,将智能体的观察映射到给定状态下的最佳动作。它是通用算法,虽不一定最有效,但通常能完成任务。
- **软演员 - 评论家(SAC)**:一种离策略强化学习算法,可分别定义最优训练行为和最优智能体行为,能减少训练时间,但相比 PPO 等在线策略方法,需要更多内存来保存和更新单独的行为模型。
- **多智能体事后信用分配(POCA 或 MA - POCA)**:多智能体算法,使用集中式评论家对一组智能体进行奖励和惩罚。奖励与基本 PPO 类似,但给予评论家,智能体学习如何为获得奖励做出最佳贡献,且即使在学习过程中被移除,仍能学习其行为对团队奖励的贡献。
```mermaid
graph LR
A[奖励优化方式] --> B[显式(外在奖励)]
A --> C[隐式(内在奖励)]
A --> D[训练过程隐式奖励]
E[算法] --> F[PPO]
E --> G[SAC]
E --> H[POCA/MA - POCA]
```
## 3. Unity 推理引擎与集成
在智能体训练过程中,代表智能体行为的神经网络会不断更新,这通常是一个漫长的过程。训练完成后,智能体可轻松集成到 Unity 游戏或导出用于简单应用,这得益于训练和推理阶段对性能要求的差异。
训练后,智能体行为的神经网络固定,不再更新,只需根据观察结果通过追踪图来确定相应动作,因此推理过程高效,即使在计算资源有限的应用中也可实现。
Unity ML - Agents 推理引擎使用计算着色器实现,运行在 GPU 上,但并非所有平台都支持。幸运的是,Unity ML - Agents 自带 Unity 推理引擎(有时称为 Barracuda),无需自行创建或携带训练所用的底层框架。
若在 ML - Agents 之外训练模型,无法使用 Unity 的推理引擎,虽理论上可创建符合 ML - Agents 期望的常量和张量名称的模型,但官方不支持。对于 ML - Agents 生成的模型,除非智能体有大量视觉观察,否则使用 CPU 进行推理比使用 GPU 更快。
## 4. 使用 ML - Agents Gym 包装器
OpenAI Gym 是开发和探索强化学习算法的开源库。使用 ML - Agents Gym 包装器探索强化学习算法的步骤如下:
1. 激活新环境并安装 `gym_unity` Python 包:
```bash
pip install gym_unity
```
2. 从 Python 脚本中,将 Unity 模拟环境作为 Gym 启动:
```python
fro
```
0
0
复制全文
相关推荐








