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

训练RL智能体后选用何种策略?以SAC Minitaur为例

TensorFlow Agents SAC Minitaur教程策略文件解析与推理阶段指南

各策略文件的核心作用

  • collect_policy:用于采集训练数据的探索策略,SAC作为离策略算法,该策略会从动作分布中采样(带随机噪声),保证智能体对环境的探索能力,采集到的经验会存入回放池供训练使用。
  • greedy_policy:用于评估的确定性最优策略,直接输出动作分布的均值(无探索噪声),训练过程中会定期用它评估智能体的性能,验证训练效果。
  • policy:智能体的核心策略网络实例,是collect_policy和greedy_policy的基础。SAC的核心策略包含actor(输出动作分布)和critic(评估动作价值)网络,另外两个策略都是基于这个核心网络衍生的变体——collect_policy加入了采样逻辑,greedy_policy则是取分布均值的确定性输出逻辑。

策略更新的逻辑说明

  • checkpoints:持续更新是因为它存储的是核心policy的模型变量权重,训练过程中每一步权重都会更新,所以检查点会持续保存最新的模型状态,用于后续恢复训练。
  • collect_policy、greedy_policy、policy的更新:这三个策略共享核心的模型变量,当checkpoints里的权重更新时,三者的实际行为会同步更新。你看到的“仅在训练启动时更新”是因为它们的结构逻辑(比如采样、确定性输出规则)是初始化时就固定的,后续只是共享的权重在变化,所以文件本身不会频繁修改,但运行时的策略行为是随权重动态更新的。

推理阶段的策略选型与加载步骤

选型建议

推理阶段要获得稳定的最优效果,应选用greedy_policy,它输出的是无探索噪声的确定性最优动作,适合部署时的推理场景。

加载方法

  1. 初始化与教程一致的策略结构:先构建和训练时相同的SAC智能体及关联策略。
  2. 加载检查点权重:从/tmp/policies/checkpoints目录下读取最新的检查点,将权重恢复到核心policy中。
  3. 直接使用greedy_policy:由于greedy_policy是核心policy的变体,权重恢复后,它会自动使用最新的最优权重进行推理。

示例代码:

# 初始化与训练时一致的智能体和策略
agent = sac_agent.SacAgent(
    time_step_spec=env.time_step_spec(),
    action_spec=env.action_spec(),
    actor_network=actor_net,
    critic_network=critic_net,
    # 其他参数与教程保持一致
)
greedy_policy = agent.greedy_policy

# 加载最新检查点
checkpoint_dir = "/tmp/policies/checkpoints"
checkpoint = tf.train.Checkpoint(agent=agent)
latest_checkpoint = tf.train.latest_checkpoint(checkpoint_dir)
if latest_checkpoint:
    checkpoint.restore(latest_checkpoint).expect_partial()

# 推理时使用greedy_policy
observation = env.reset()  # 环境观测输入
action = greedy_policy.action(observation)

内容的提问来源于stack exchange,提问作者Daniel von Eschwege

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:49:12