Animal-AI环境实战:基于动物认知的AI智能体测试与强化学习训练
1. 项目概述:为什么我们需要一个“动物级”的AI测试场?
如果你正在研究或开发AI智能体,尤其是那些被期望能像生物一样感知、决策和行动的智能体,你肯定遇到过这个难题:我怎么知道它真的“聪明”?传统的软件测试,比如单元测试或集成测试,面对基于大语言模型(LLM)的、具有非确定性输出的智能体时,常常力不从心。你无法简单地断言“输入A,必须得到输出B”,因为智能体的思考路径(我们称之为“轨迹”)可能千变万化,但最终都能抵达正确的终点。更棘手的是,如何评估它在复杂、动态环境中的长期规划和适应能力?
这正是“Animal-AI环境”项目切入的精准角度。它不是一个普通的游戏模拟器,而是一个基于数十年动物认知心理学实验(如迷宫、工具使用、物体恒存性测试)构建的标准化测试平台。想象一下,你把你的AI智能体扔进一个虚拟实验室,里面的任务不是打怪升级,而是完成一系列小老鼠、乌鸦、章鱼甚至人类婴儿在认知发展研究中会面对的挑战。这个项目的核心价值在于,它提供了一套客观、可量化、且与生物智能基准对齐的评估体系。它回答的不仅是“智能体能做什么”,更是“它的智能在何种程度上接近或模拟了生命体的基本认知能力”。
对于AI研究者、认知科学交叉领域的工作者,以及任何希望构建更鲁棒、更可解释的自主智能体的开发者来说,这个平台都是一个宝藏。它让你能跳出“刷榜”式的性能竞赛,回归到智能的本质问题上进行测试。接下来,我将带你从零开始,深入这个独特的“AI动物园”,完成一次从环境搭建、智能体编程、到实验设计与结果分析的完整实战。
2. 环境搭建与核心概念解析
2.1 平台架构与安装部署
Animal-AI环境本质上是一个基于Unity引擎构建的3D模拟环境,并通过Python接口进行控制。这种设计使得它既能提供丰富的视觉和物理仿真,又能方便地集成到主流的AI研究框架(如PyTorch, TensorFlow, Stable-Baselines3)中。
安装步骤详解:
创建并激活Python虚拟环境(强烈推荐):这是为了避免包依赖冲突。我习惯使用
conda,但venv同样有效。# 使用conda conda create -n animalai python=3.8 conda activate animalai # 或使用venv python -m venv animalai_env source animalai_env/bin/activate # Linux/Mac # animalai_env\Scripts\activate # Windows安装Animal-AI Python包:这是与环境交互的核心库。
pip install animalai这个命令会安装
animalai库及其依赖,包括mlagents(Unity ML-Agents工具包)和gym(OpenAI Gym接口)。下载环境可执行文件:Python库只提供了API,真正的3D环境是一个独立的可执行文件。你需要从Animal-AI的官方GitHub仓库的Release页面下载对应你操作系统(Windows, Linux, Mac)的版本。解压后,你会得到一个包含可执行文件的文件夹(例如
AnimalAI.x86_64)。验证安装:启动环境并运行一个简单测试。
from animalai.envs.environment import AnimalAIEnvironment from animalai.envs.arena_config import ArenaConfig # 1. 指定环境文件路径 env_path = '/path/to/your/AnimalAI.x86_64' # 替换为你的实际路径 # 2. 加载一个最简单的竞技场配置文件(通常随仓库提供) arena_config = ArenaConfig('configs/1-Food.yaml') # 示例配置文件 # 3. 创建环境实例 env = AnimalAIEnvironment( file_name=env_path, arena_configuration=arena_config, play=False, # 训练模式,非玩家手动控制 base_port=5005 # 通信端口,默认即可 ) # 4. 进行一次简单的重置和随机动作测试 behavior_name = list(env.behavior_specs.keys())[0] # 获取默认行为名称 decision_steps, terminal_steps = env.get_steps(behavior_name) env.reset() print("环境启动成功!") env.close()如果能看到环境窗口弹出并顺利关闭,说明安装成功。
注意:首次运行可能会因为端口占用或图形驱动问题报错。确保没有其他ML-Agents环境在运行,并检查你的机器是否支持OpenGL。对于无头服务器(无显示器),需要额外配置虚拟显示(如使用
xvfb)。
2.2 核心概念:竞技场、物体与奖励
理解Animal-AI的三大核心概念,是设计有效实验的关键。
竞技场 (Arena):即测试场景。它是一个封闭的3D空间,所有实验都在此发生。竞技场的布局、物体摆放完全由一个YAML配置文件定义。这带来了极高的灵活性,你可以轻松创建从简单到极其复杂的测试场景。
物体 (Objects):环境中的一切实体都是物体,并具有特定的类型和属性。这是Animal-AI最精妙的设计之一,物体类型直接对应了动物认知实验中的要素:
- GoodGoal (绿色球体):正向奖励物。智能体触碰后获得+1奖励,并通常结束本轮测试。
- BadGoal (红色球体):负向奖励物。触碰后获得-1奖励,并结束本轮。
- Wall (灰色立方体):不可穿越的障碍物。
- Ramp (斜坡):可攀爬的斜面。
- Cardbox (纸箱):可被推动的物体。
- Door (门):需要特定条件(如触碰开关)才能打开的可穿越障碍。
- Switch (开关):触发其他物体状态变化(如开门)的装置。
- DeathZone (死亡区域):掉入即结束本轮且无奖励(或负奖励)的区域。
- ImmobileObject (固定物体):如柱子,用于构建空间结构。
奖励 (Reward):智能体学习的信号。Animal-AI严格遵循“稀疏奖励”设定。只有在完成特定事件(如碰到GoodGoal)时,智能体才会收到一个标量奖励(+1或-1)。这极大地增加了学习难度,因为智能体无法从每一步行动中获得密集的指导信号,必须学会探索和理解事件之间的因果关系——这正是动物学习的关键特征。
配置文件解析示例: 一个典型的YAML配置文件片段如下,它定义了一个简单的“觅食”任务:
arenas: 0: # 竞技场0 t: 0 # 类型0,代表标准竞技场 items: # 放置的物体列表 - name: GoodGoal positions: - [0, 0, 4] # 物体中心坐标 (x, y, z) rotations: - [0, 0, 0] # 旋转角度 sizes: - [1, 1, 1] # 缩放比例 - name: Agent positions: - [0, 0, 0] rotations: - [0, 0, 0] sizes: - [1, 1, 1]这个配置将智能体放在原点,在它前方4个单位的位置放置了一个绿色目标球。智能体的任务就是找到并触碰它。
3. 智能体训练实战:从规则到学习
3.1 方案一:基于规则的基准智能体
在引入复杂的机器学习之前,实现一个简单的基于规则的智能体是绝佳的起点。它能帮你验证环境交互是否正常,并建立一个性能基线。
import numpy as np from animalai.envs.environment import AnimalAIEnvironment from animalai.envs.arena_config import ArenaConfig class RuleBasedAgent: """一个极其简单的随机探索智能体,遇到障碍物时随机转向。""" def __init__(self, action_size): self.action_size = action_size def get_action(self, visual_obs, vector_obs): """ visual_obs: 视觉观察值(像素图像),本例未使用。 vector_obs: 向量观察值,包含速度、与最近物体的相对位置等。 """ # 这里我们实现一个简单的“前进,撞墙则随机转”策略 # 假设vector_obs的某些维度包含了前方是否有碰撞的信息(需查阅具体API) # 此处为演示,我们仅随机行动 action = np.random.randint(0, self.action_size) return [action] # 需要以列表形式返回 # 使用智能体 arena_config = ArenaConfig('configs/1-Food.yaml') env = AnimalAIEnvironment(env_path, arena_config, play=False) behavior_name = list(env.behavior_specs.keys())[0] spec = env.behavior_specs[behavior_name] agent = RuleBasedAgent(spec.action_spec.discrete_size) for episode in range(10): env.reset() decision_steps, terminal_steps = env.get_steps(behavior_name) episode_reward = 0 step = 0 max_steps = 100 while step < max_steps and len(terminal_steps) == 0: # 获取当前观察值(这里简化处理,实际需从decision_steps获取) # 实际编码中,你需要从 decision_steps[behavior_name].obs 提取观察值 action = agent.get_action(None, None) env.set_actions(behavior_name, action) env.step() decision_steps, terminal_steps = env.get_steps(behavior_name) # 从 terminal_steps 获取奖励(如果本轮结束) if len(terminal_steps) > 0: episode_reward = terminal_steps[behavior_name].reward step += 1 print(f"Episode {episode} ended with reward: {episode_reward}") env.close()这个智能体纯粹随机行动,在简单任务中可能偶然成功,但无法解决任何需要记忆或规划的任务。它的价值在于提供了一个“零智能”基线。
3.2 方案二:使用强化学习(PPO算法)训练智能体
要让智能体真正学会解决认知任务,我们需要引入强化学习(RL)。Proximal Policy Optimization (PPO) 是一种稳定、高效的RL算法,非常适合作为入门选择。我们将使用Stable-Baselines3这个强大的库。
步骤拆解:
封装环境:Stable-Baselines3需要Gym风格的环境接口。Animal-AI官方提供了
AnimalAIEnv这个封装器,但我们需要稍作调整以兼容SB3。from stable_baselines3.common.env_checker import check_env from animalai.envs.gym.environment import AnimalAIGym from animalai.envs.arena_config import ArenaConfig # 创建Gym环境 arena_config = ArenaConfig('configs/1-Food.yaml') env = AnimalAIGym( environment_filename=env_path, arena_configuration=arena_config, seed=42, retro=False, n_arenas=1 # 同时运行的竞技场数量,>1可加速训练 ) # 检查环境是否符合SB3规范 check_env(env)定义与训练PPO模型:
from stable_baselines3 import PPO from stable_baselines3.common.callbacks import EvalCallback, StopOnRewardThresholdCallback from stable_baselines3.common.monitor import Monitor import os # 创建日志目录 log_dir = "./ppo_animalai_log/" os.makedirs(log_dir, exist_ok=True) # 用Monitor包装环境以记录训练数据 env = Monitor(env, log_dir) # 定义评估环境(使用相同的配置) eval_env = AnimalAIGym( environment_filename=env_path, arena_configuration=arena_config, seed=43, retro=False, n_arenas=1 ) eval_env = Monitor(eval_env) # 设置评估回调:当平均奖励达到0.9时停止训练 eval_callback = EvalCallback( eval_env, best_model_save_path=log_dir, log_path=log_dir, eval_freq=5000, # 每5000步评估一次 deterministic=True, callback_on_new_best=StopOnRewardThresholdCallback(reward_threshold=0.9, verbose=1), verbose=1 ) # 创建PPO模型 # 关键参数解析: # policy='CnnPolicy': 因为我们的观察包含视觉输入(图像),所以使用CNN策略网络。 # learning_rate=3e-4: 经典的学习率起点。 # n_steps=2048: 每次更新前收集的步数,影响批处理大小和方差。 # batch_size=64: 每次优化时使用的迷你批大小。 # n_epochs=10: 每次更新时对数据进行多少次遍历优化。 # gamma=0.99: 折扣因子,智能体对未来奖励的重视程度。 model = PPO( policy='CnnPolicy', env=env, learning_rate=3e-4, n_steps=2048, batch_size=64, n_epochs=10, gamma=0.99, verbose=1, tensorboard_log=log_dir ) # 开始训练! total_timesteps = 100000 # 训练总步数,对于复杂任务需要更多 model.learn(total_timesteps=total_timesteps, callback=eval_callback, tb_log_name="PPO_1-Food") # 保存模型 model.save(os.path.join(log_dir, "ppo_animalai_final"))加载与测试训练好的模型:
# 加载模型 model = PPO.load(os.path.join(log_dir, "ppo_animalai_final")) # 运行测试回合 obs = env.reset() for i in range(1000): action, _states = model.predict(obs, deterministic=True) # 使用确定性策略进行测试 obs, reward, done, info = env.step(action) # 可以在这里渲染环境图像(如果环境支持) # env.render() if done: print(f"Test episode finished with reward: {reward}") obs = env.reset() break env.close()
实操心得:
- 观察空间:Animal-AI默认提供第一人称视角的84x84 RGB图像作为视觉观察。对于更复杂的任务(如需要记忆物体位置),你可能需要将连续多帧堆叠起来作为输入,或者使用LSTM等网络结构来处理序列。
- 动作空间:通常是离散的(如前进、后退、左转、右转)或连续的(速度、转向角)。从离散动作开始更简单。
- 训练稳定性:稀疏奖励下的RL训练非常不稳定且样本效率低。如果智能体在简单任务(如1-Food)上都学不会,首先检查奖励信号是否正确传递(确保
done和reward在碰到目标时被正确设置)。其次,可以尝试课程学习:从最简单的竞技场开始训练,逐步增加难度(如增加障碍物、距离)。 - 并行化:设置
n_arenas > 1可以创建多个环境实例并行收集数据,这是加速训练最有效的手段之一。
4. 实验设计:复现经典动物认知任务
Animal-AI环境的真正威力在于其预置的、基于动物认知实验的测试集。理解并复现这些任务,是评估智能体认知能力的关键。
4.1 任务分类与实例解析
官方测试集包含了数百个任务,主要分为以下几大类:
偏好与目标导向行为:测试智能体对奖励物的基本识别和趋近能力。
- 示例任务:
1-Food.yaml。最简单的觅食任务。智能体需要从起点直线移动到绿色目标球。 - 评估重点:基础的运动控制、奖励敏感性。规则智能体或经过少量训练的RL智能体应能轻松解决。
- 示例任务:
物体恒存性与空间记忆:测试智能体理解“物体即使看不见也依然存在”以及记住物体位置的能力。
- 示例任务:
Object Permanence系列。例如,目标球被一个不透明的屏风短暂遮挡,智能体需要记住球的位置并绕到屏风后获取。 - 评估重点:工作记忆、空间推理。简单的反应式策略会失败,智能体需要某种形式的内存(如RNN)或构建内部空间地图。
- 示例任务:
工具使用与因果推理:测试智能体利用一个物体去获取另一个物体的能力。
- 示例任务:
Tool Use系列。例如,目标球在一个围栏里,旁边有一个可推动的箱子。智能体需要将箱子推到围栏边,爬上箱子,然后跳进去获取目标。 - 评估重点:多步骤规划、物理交互理解、因果链推理。这是高阶认知能力的体现。
- 示例任务:
延迟满足与抑制控制:测试智能体抵抗即时诱惑以获取更大奖励的能力。
- 示例任务:
Self-Control系列。例如,近处有一个小的绿色目标(+1),远处有一个大的绿色目标(+2)。智能体需要学会忽略近处的小奖励,去获取远处的大奖励。 - 评估重点:价值比较、冲动控制。这直接关联到前额叶皮层功能。
- 示例任务:
社会认知(初步):一些任务涉及多个智能体或模仿学习,但相对基础。
4.2 设计自定义实验
除了使用预设任务,你可以通过编辑YAML配置文件,设计自己的认知实验。
实战:创建一个“绕障觅食”任务假设你想测试智能体的简单路径规划能力。
- 目标:智能体需要绕过一堵L型墙,到达后面的目标球。
- 配置设计:
arenas: 0: t: 0 items: - name: Agent positions: [[-4, 0, -4]] - name: GoodGoal positions: [[4, 0, 4]] - name: Wall positions: [[0, 0, 0]] # 墙的中心点 rotations: [[0, 0, 0]] sizes: [[0.2, 2, 8]] # 薄而长的墙 - name: Wall positions: [[4, 0, 0]] rotations: [[0, 0, 0]] sizes: [[8, 2, 0.2]] # 另一面墙,形成L型 - 训练与评估:使用这个配置文件训练PPO智能体。观察它需要多久学会“绕路”而不是试图“穿墙”。你可以记录成功率和完成步数作为指标。
注意事项:
- 坐标系统:Unity使用左手坐标系,Y轴向上。在配置中,
[x, y, z]对应场景中的位置。建议先在环境中用简单物体测试,确认坐标对应关系。 - 物体尺寸与碰撞体:物体的
sizes参数定义其碰撞箱大小,不一定与视觉模型完全一致。如果智能体看起来“穿模”或无法互动,检查碰撞体设置。 - 随机化:为了泛化能力,可以在配置中为物体的位置、旋转甚至颜色添加随机范围,让智能体学习更通用的策略,而不是记住固定地图。
5. 高级技巧与性能优化
当你的智能体能够解决基本任务后,以下高级技巧可以帮助你挑战更复杂的认知测试,并提升训练效率。
5.1 集成外部记忆与规划模块
原生的端到端RL智能体在处理需要长期记忆和规划的任务时(如物体恒存性)可能力不从心。一个有效的策略是架构搜索,为智能体增加外部记忆组件。
使用LSTM/GRU:在PPO的
CnnPolicy中,可以通过设置policy_kwargs来启用LSTM层。from stable_baselines3 import PPO from stable_baselines3.common.policies import ActorCriticCnnLstmPolicy model = PPO( "CnnLstmPolicy", # 使用内置的CNN+LSTM策略 env, policy_kwargs={ "lstm_hidden_size": 256, # LSTM隐藏层大小 "n_lstm_layers": 1, }, n_steps=512, # 使用LSTM时,n_steps不宜过长 verbose=1 )LSTM能够让智能体在时间序列上整合信息,对于需要记住“刚才目标球被挡在哪里”的任务至关重要。
引入基于模型的规划:更前沿的方法是结合基于模型的RL或蒙特卡洛树搜索(MCTS)。你可以训练一个世界模型(World Model)来预测环境动态,然后让智能体在这个“想象”的模型中进行规划。这虽然实现复杂,但能极大提升在稀疏奖励、长视野任务中的样本效率。
5.2 课程学习与自动课程生成
直接训练智能体解决复杂任务(如多步骤工具使用)几乎不可能成功。课程学习(Curriculum Learning)是必由之路。
手动设计课程:创建一系列从易到难的配置文件。
- 阶段1:
1-Food.yaml(直接可见目标) - 阶段2:
1-Food-Wall.yaml(目标前有一个障碍,需绕行) - 阶段3:
Object-Permanence-1.yaml(目标被短暂遮挡) - 阶段4:
Tool-Use-Push.yaml(需要推动一个物体) - 阶段5:
Tool-Use-Ramp.yaml(需要推箱子上斜坡) 在训练中,当智能体在当前阶段达到某个成功率阈值(如80%)后,自动切换到下一个更难的配置文件。
- 阶段1:
自动化课程生成:手动设计课程费时费力。可以尝试算法化课程学习,例如:
- 反向课程生成:从目标任务开始,通过简化环境(如移除部分障碍、拉近目标距离)自动生成更简单的任务。
- 目标条件RL:将任务目标(如目标球坐标)作为额外输入给智能体。这样,你可以通过采样不同的目标位置,自动生成海量的训练任务,智能体学会的是“如何到达任意指定位置”的通用技能,而非特定任务。
5.3 多模态观察与注意力机制
Animal-AI环境提供的观察不仅仅是RGB图像。通过配置,你还可以获取:
- 射线投射(RayCast)数据:模拟触觉,返回智能体前方射线与物体的距离和标签。这对于在昏暗或视觉模糊的环境中导航非常有用。
- 全局坐标:在某些实验设置中,你可以获取智能体和关键物体的全局坐标(这有点“作弊”,但可用于研究)。
- 智能体内部状态:如速度、方向。
如何利用:你可以将这些向量观察值与视觉图像融合。一种常见做法是使用两个编码器网络:一个CNN处理图像,一个多层感知机(MLP)处理向量,然后将它们的输出拼接起来,再输入到策略网络。这能让智能体同时利用“看到什么”和“感觉到什么”的信息。
更进一步,可以为视觉观察引入注意力机制(如Transformer中的自注意力或视觉注意力)。这能教会智能体在复杂的场景中“聚焦”于关键物体(如绿色的目标球、红色的危险球、可推动的箱子),而不是平等处理所有像素,从而大幅提升学习效率和泛化能力。
6. 结果评估、可视化与常见问题排查
训练完成后,科学地评估智能体的表现与深入分析其行为同样重要。
6.1 核心评估指标
不要只看最终的成功率。一套完整的评估体系应包含:
| 指标 | 描述 | 测量方法 | 意义 |
|---|---|---|---|
| 成功率 | 在N次独立运行中,智能体完成任务的次数比例。 | (成功次数 / 总尝试次数) * 100% | 最直接的性能指标。 |
| 平均步数/时间 | 成功完成任务所花费的平均步数或模拟时间。 | 记录每次成功运行的步数,取平均。 | 衡量效率。步数越少,策略可能越优。 |
| 轨迹可解释性 | 智能体行动序列的合理性与可理解性。 | 人工检查或使用“LLM即评判者”分析行动日志。 | 评估智能体是否使用了符合逻辑的“思考”过程,还是靠运气或死记硬背。 |
| 泛化能力 | 在训练中未见过的、但同类的测试场景中的表现。 | 使用与训练任务布局不同、但逻辑相同的配置文件进行测试。 | 衡量智能体学到的是通用技能还是特定场景的过拟合策略。 |
| 鲁棒性 | 对环境中微小扰动(如物体颜色、位置轻微变化)的敏感性。 | 在测试中引入随机噪声,观察成功率变化。 | 评估策略的稳定性。 |
6.2 可视化与调试工具
- TensorBoard:Stable-Baselines3在训练时会自动记录关键指标(如回合奖励、回合长度、价值损失等)。使用
tensorboard --logdir ./ppo_animalai_log/启动可视化面板,实时监控训练过程。 - 环境渲染与录制:在测试时,启用
env.render()可以实时观看智能体的行为。对于关键测试,可以编写脚本捕获每一帧图像,合成视频。这是分析智能体失败原因最直观的方式。 - 轨迹日志:修改环境或智能体代码,记录每一步的观察、动作、奖励到文件。事后分析这些日志,可以绘制出智能体在场景中的移动路径,或者统计其在不同状态下的动作分布。
- 注意力热图:如果你的模型使用了注意力机制,可以可视化它在每一步关注了图像的哪些区域。这能直观展示智能体的“注意力”是否放在了关键物体上。
6.3 常见问题与排查清单
在实战中,你几乎一定会遇到以下问题。这里是我的排查经验:
问题1:训练完全不收敛,奖励始终为0或负值。
- 检查点1:奖励信号。确认你的竞技场配置文件正确设置了
GoodGoal和BadGoal,并且智能体触碰后能正确触发done和reward。写一个最简单的规则智能体去手动测试一下。 - 检查点2:观察空间。确认智能体接收到的观察值是有意义的。例如,视觉观察是否是一团黑?检查环境窗口是否正常渲染。向量观察是否包含NaN值?
- 检查点3:超参数。PPO对超参数相对鲁棒,但极端值也会导致失败。首先尝试使用默认参数。如果不行,尝试大幅降低学习率(如到
1e-5),并增加n_steps和batch_size。 - 检查点4:任务难度。任务是否太难?立刻退回到最简单的
1-Food.yaml任务。如果在这个任务上都学不会,那问题一定出在环境、奖励或基础训练流程上。
问题2:训练初期有进步,但很快陷入平台期或性能崩溃。
- 可能原因1:探索不足。尝试增加熵系数(
ent_coef,默认0.01),鼓励智能体尝试更多随机动作。 - 可能原因2:过拟合。智能体记住了特定训练场景的“捷径”,但未学会通用策略。在训练中引入动态随机化(如目标位置、墙壁颜色、灯光强度在一定范围内随机变化)。
- 可能原因3:价值函数估计不准。这会导致策略更新方向错误。可以尝试使用更复杂的价值函数网络(如增加层数),或使用GAE(广义优势估计)的
gae_lambda参数进行调优。
问题3:智能体表现出奇怪的行为,比如不停转圈或撞墙。
- 分析:这通常是局部最优解。例如,在稀疏奖励下,智能体发现“什么都不做”或“重复一个安全动作”不会得到惩罚,而探索可能带来负奖励(撞到
BadGoal),因此它选择了最保守的策略。 - 解决方案:
- 重塑奖励:在真正的稀疏奖励之外,添加微小的“塑形奖励”。例如,每向目标方向前进一步给予一个极小的正奖励(如+0.01),这能提供初步的引导。但需谨慎,错误的塑形奖励会导致智能体学会“骗奖励”而非真正解决问题。
- 好奇心驱动探索:为智能体增加一个“好奇心”内在奖励,鼓励它去探索那些预测误差大的状态。可以集成像Random Network Distillation (RND)这样的方法。
- 课程学习:这是最根本的解决方法。确保智能体从足够简单的任务开始,使其能偶然获得成功,体验到正奖励,从而建立起“行动-奖励”的初步联系。
问题4:在服务器(无图形界面)上训练时环境无法启动。
- 解决方案:使用虚拟帧缓冲器
xvfb。
或者,在创建xvfb-run -s "-screen 0 1024x768x24" python your_training_script.pyAnimalAIGym环境时,确保retro参数为False(它不使用旧的视觉接口),并且环境本身支持无头模式。
Animal-AI环境是一个极其精妙的实验平台,它将AI评估从狭隘的性能指标拉回到了认知科学的坚实基础上。通过这个平台,我们不仅是在训练一个能完成任务的程序,更是在尝试为机器注入一些类似生命的、对物理和社会世界的基本理解。这个过程充满挑战,但每一次智能体学会绕过障碍、记住被藏起的物体、或是第一次成功使用工具时,都让我们离理解智能的本质更近了一步。我的经验是,保持耐心,从最简单的任务开始,细致地设计课程和观察空间,并充分利用可视化工具去理解你的智能体“在想什么”。这个领域的探索,才刚刚开始。