Tensorforce PPO 的评估阶段未达到预期效果

问题描述 投票:0回答:1

我构建了一个自定义强化学习环境并使用 PPO 来训练我的代理。以下是训练循环的片段。

environment = Environment.create(environment=networkEnvironment, max_episode_timesteps=8)
#rlAgent = Agent.create(agent='ppo', environment=environment, batch_size=16, learning_rate=1e-3, update_frequency=16, saver=dict(directory='impactAgent', unit='episodes', frequency=20, max_checkpoints=20))
rlAgent = Agent.load(directory='impactAgent', format='checkpoint', environment=environment)

for _ in range(300):

    totalReward = 0
    states = environment.reset()
  
    while not terminal:

        actions = rlAgent.act(states=states)
        states, terminal, reward = environment.execute(actions=actions)
        totalReward = totalReward + reward
        rlAgent.observe(terminal=terminal, reward=reward)

该循环按预期进行训练并收敛于接近最优的策略。然而,每当我想运行评估循环时,它都不使用预期的策略,并且执行得很糟糕,每次都选择一个单一的操作。评估循环如下:

for _ in range(3):
    sum_rewards = 0.0
    states = environment.reset()
    internals = rlAgent.initial_internals()
    terminal = False
    
     while not terminal:
        actions, internals = rlAgent.act(states=states, internals=internals, independent=True, deterministic=True)
        states, terminal, reward = environment.execute(actions)

在一些重要的背景下,代理正在阻止环境中的多阶段攻击,因此最优策略通常不是代理在训练期间理解的单一操作(找到并重复良好的操作序列)。然而,在评估过程中,智能体仅在每个时间步重复单个动作,直到情节完成。选择的动作通常很差,并且不符合训练期间发现的“良好”动作顺序。

我在设置评估时遗漏了什么吗?

python tensorflow reinforcement-learning
1个回答
0
投票

您是否找到了解决方案,因为这与我目前遇到的问题相同?

© www.soinside.com 2019 - 2024. All rights reserved.