You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Stable Baselines3自定义2D苹果捕捉环境观测空间优化及训练问题求助

改进PPO训练2D苹果捕捉游戏的方案

针对训练后AI表现极差、停滞在左边缘的问题,可从以下几个关键方向优化:

1. 重构观测空间,消除无效填充干扰

当前用(0,0)填充不存在的苹果会给模型引入冗余噪声,且无法让模型区分"真实苹果"和"填充项",可做如下调整:

  • 拆分状态维度:将观测空间改为Box(0, 1, (11, 3)),每个元素组为[存在标记, x坐标, y坐标]。玩家的存在标记固定为1,不存在的苹果标记为0,真实苹果标记为1,让模型明确识别有效目标。
  • 简化冗余信息:由于玩家仅可左右移动,若玩家的y坐标固定(比如始终在屏幕底部),可移除y坐标,将玩家状态简化为[1, x],苹果状态为[存在标记, x, y],进一步压缩观测维度。
  • 使用相对位置:将苹果的绝对坐标转换为相对玩家的坐标(苹果x - 玩家x,苹果y - 玩家y),并归一化到[-1,1]区间。模型只需关注目标与自身的相对距离,无需学习绝对坐标的分布,大幅降低学习难度。

示例代码(调整观测空间):

# 假设玩家y坐标固定,使用相对位置+存在标记
self.observation_space = Box(-1, 1, (11, 3))
# 构建观测值时:
player_x = ... # 归一化后的玩家x坐标
player_y = ... # 固定的玩家y坐标
observation = []
# 玩家状态:[存在标记, 相对自身x, 相对自身y]
observation.append([1.0, 0.0, 0.0])
for apple in apples:
    if apple.exists:
        rel_x = (apple.x - player_x) / screen_width # 归一化到[-1,1]
        rel_y = (apple.y - player_y) / screen_height
        observation.append([1.0, rel_x, rel_y])
    else:
        observation.append([0.0, 0.0, 0.0])
# 转换为numpy数组后传入模型

2. 优化奖励函数,强化有效反馈

当前的+1/-1奖励过于稀疏,且惩罚可能导致模型陷入"不动"的局部最优,可调整为:

  • 分层奖励:
    • 接住苹果:+5分(大幅强化正确行为)
    • 苹果靠近玩家(比如距离小于屏幕宽度的1/10):+0.1分(引导AI主动移动靠近目标)
    • 苹果掉落出屏幕(未接住):-0.5分(降低惩罚强度,避免模型因恐惧惩罚而停滞)
    • 每存活1步:+0.05分(鼓励持续动作,避免原地不动)
  • 明确惩罚触发条件:仅当苹果掉落出屏幕时扣分,而非未接住就扣分,确保惩罚只针对"未及时移动导致丢失"的行为。

3. 调整PPO核心参数,适配小游戏场景

Stable Baselines3的默认PPO参数针对复杂环境设计,需适配你的简单游戏:

  • 减小轨迹长度:将n_steps从默认2048改为512或1024,缩短每批次的轨迹长度,让模型更快更新策略。
  • 降低学习率:将learning_rate从3e-4调整为1e-4或5e-5,避免模型学习过快导致震荡,无法收敛。
  • 调整折扣因子:将gamma从0.99改为0.95,让模型更关注短期奖励,适配苹果掉落的即时性场景。
  • 强化模型容量:将MlpPolicy的网络结构改为MlpPolicy(net_arch=[128, 128]),增加隐藏层单元数,提升模型对状态的拟合能力。

示例代码(初始化PPO时调整参数):

from stable_baselines3 import PPO

model = PPO(
    "MlpPolicy",
    env,
    n_steps=512,
    learning_rate=1e-4,
    gamma=0.95,
    policy_kwargs={"net_arch": [128, 128]},
    verbose=1,
    tensorboard_log="./ppo_apple_logs/"
)
model.learn(total_timesteps=100000, tb_log_name="first_run")

4. 优化环境细节,避免训练偏差

  • 确保苹果生成位置随机:重置环境时,苹果需在屏幕上方的随机x坐标生成,避免集中在左侧,导致模型误以为左边缘是最优位置。
  • 严格归一化观测数据:确认所有观测值(玩家坐标、苹果坐标)都严格匹配观测空间的定义范围(比如0-1或-1-1),避免数值分布不均影响模型学习。
  • 限制每局最大步数:给环境设置每局最大步数(比如500步),避免单局过长导致模型学习效率低下。

5. 监控训练过程,定位问题

启用TensorBoard监控训练数据:

tensorboard --logdir=./ppo_apple_logs/

重点观察:

  • 奖励曲线:若奖励始终为负或停滞不前,说明奖励函数或观测空间存在问题。
  • 动作分布:若动作始终偏向左移,需检查苹果生成位置、观测空间是否传递了错误的位置信息,或奖励函数是否引导模型向左。

内容的提问来源于stack exchange,提问作者Rozrewolwerowany rewolwer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 13:35:17