机器学习深度学习【免费下载链接】dopamineDopamine is a research framework for fast prototyping of reinforcement learning algorithms.项目地址https://gitcode.com/gh_mirrors/do/dopamine点击查看免费下载Dopamine 是面向强化学习RL算法快速原型验证的研究框架本指南围绕仓库根目录下 docs/README.md 展开系统讲解如何用内置入口脚本训练 DQN、C51、Rainbow、IQN 与 SAC 等智能体如何用 gin 配置文件统一管理超参数如何理解并利用检查点checkpoint与日志logging机制以及如何基于扁平的类层级直接修改和扩展智能体。读完本文你将能够独立运行一个完整的 Dopamine 实验、读懂每一次迭代产生的文件并基于现有代码快速定制自己的 RL 算法。仓库文件组织Dopamine 仓库按职责划分为若干顶层目录理解这一布局是后续实验与扩展的基础目录内容dopamine/jaxJAX 实现的智能体DQN、Rainbow、IQN、Quantile、PPO、SAC、Full Rainbow与网络定义dopamine/tfTensorFlow 实现的智能体DQN、Rainbow、IQN与对应的圆形/优先经验回放缓冲dopamine/discrete_domains离散动作域Atari、Cartpole、Acrobot 等的实验运行代码、训练入口与环境预处理dopamine/continuous_domains连续控制域MuJoCo 等的实验运行代码与训练入口dopamine/colab实验结果的读取、绘图工具以及示例 Colab 笔记本tests全部单元测试与集成测试其中 dopamine/colab 下的load_statistics.ipynb、agents.ipynb、tensorboard.ipynb是官方提供的交互式示例分别演示统计结果可视化、扩展/新建智能体以及从 Colab 中启动 TensorBoard。各模块的逐符号 API 说明见 docs/api_docs 目录。训练智能体三种实验入口Dopamine 为三类环境分别提供了独立的训练入口脚本均基于 absl flags 解析命令行参数核心参数为base_dir实验数据存放根目录与gin_filesgin 配置文件列表。在 Atari 2600 上训练 DQN标准 Atari 2600 实验的入口是 dopamine/discrete_domains/train.py。运行基础 DQN 智能体python -um dopamine.discrete_domains.train \ --base_dir /tmp/dopamine_runs \ --gin_files dopamine/tf/agents/dqn/configs/dqn.gin路径说明原文档中的dopamine/agents/dqn/configs/dqn.gin在当前仓库中的实际位置为dopamine/tf/agents/dqn/configs/dqn.ginJAX 版本配置则位于dopamine/jax/agents/dqn/configs/下文统一使用仓库内的真实路径。默认配置下该实验将持续 2 亿帧200 million frames。训练启动后命令行会周期性输出最新训练回合的统计信息[...] I0824 17:13:33.078342 140196395337472 tf_logging.py:115] gamma: 0.990000 I0824 17:13:33.795608 140196395337472 tf_logging.py:115] Beginning training... Steps executed: 5903 Episode length: 1203 Return: -19.入口脚本 定义了三个命令行参数base_dir必需、gin_files可多次传入多个配置文件、gin_bindings可多次传入形如DQNAgent.epsilon_train0.1的覆盖绑定。主流程依次调用 run_experiment.py 中的load_gin_configs(gin_files, gin_bindings)加载配置、create_runner(base_dir)创建实验 Runner最后执行runner.run_experiment()。若想快速迭代、观察日志与检查点生成过程可通过 gin 减小两个关键参数它们在配置文件中以 agent steps 为单位Runner.training_steps每次迭代的训练步数Runner.evaluation_steps每次迭代的评估步数。二者共同决定完成一个迭代所需的总步数而检查点与日志文件正是在每个迭代结束时生成的因此调小它们可以显著加快你熟悉文件产物的循环。在非 Atari 离散环境Cartpole / Acrobot上训练仓库为 Cartpole 和 Acrobot 提供了开箱即用的样例配置无需 Atari ROM 即可体验完整流程。例如在 Cartpole 上用默认设置训练 C51python -um dopamine.discrete_domains.train \ --base_dir /tmp/dopamine_runs \ --gin_files dopamine/tf/agents/rainbow/configs/c51_cartpole.gin在 Acrobot 上训练 Rainbowpython -um dopamine.discrete_domains.train \ --base_dir /tmp/dopamine_runs \ --gin_files dopamine/tf/agents/rainbow/configs/rainbow_acrobot.gin这两个环境由 dopamine/discrete_domains/gym_lib.py 封装为标准 Gym 环境配置示例均位于 dopamine/tf/agents/rainbow/configs如c51_cartpole.gin、rainbow_acrobot.ginDQN 版本则有dqn_cartpole.gin、dqn_acrobot.gin、dqn_lunarlander.gin、dqn_mountaincar.gin等覆盖多个经典 Gym 任务。在连续控制环境MuJoCo上训练 SAC连续控制智能体的入口是 dopamine/continuous_domains/train.py。运行 SAC 需要先获得 MuJoCo 许可证key随后在 HalfCheetah 环境上训练python -um dopamine.continuous_domains.train \ --base_dir /tmp/dopamine_runs \ --gin_files dopamine/jax/agents/sac/configs/sac.gin默认配置下该实验持续 3200 个 episode每个 episode 最多 1000 个环境步。命令行输出每次迭代的训练与评估统计[...] I0908 17:19:39.618797 1803949 run_experiment.py:446] Starting iteration 0 I0908 17:19:40.592262 1803949 run_experiment.py:405] Average undiscounted return per training episode: -168.19 I0908 17:19:40.592391 1803949 run_experiment.py:407] Average training steps per second: 1027.80 I0908 17:19:45.699378 1803949 run_experiment.py:427] Average undiscounted return per evaluation episode: -279.07需要注意python -um dopamine.continuous_domains.train实际对应仓库中的 dopamine/continuous_domains/train.py其流程与离散版一致加载 gin 配置后通过create_continuous_runner(base_dir)创建 Runner 并执行。切换环境或调整超参数时直接修改 sac.gin 即可——该文件内包含create_gym_environment.environment_name HalfCheetah、version v2等环境设定以及ContinuousRunner.num_iterations 3_200、training_steps 1_000、evaluation_steps 10_000、max_steps_per_episode 1_000等运行参数。针对自己的实验你有两种配置方式提供一份全新的 gin 配置文件或通过命令行gin_bindings参数覆盖现有配置中的任意值例如python -um dopamine.continuous_domains.train \ --base_dir /tmp/dopamine_runs \ --gin_files dopamine/jax/agents/sac/configs/sac.gin \ --gin_bindings ContinuousRunner.num_iterations100 \ --gin_bindings create_gym_environment.environment_nameHopper用 gin 配置智能体Dopamine 的整个配置体系建立在 gin-config 框架之上所有可配置类与函数通过gin.configurable装饰配置文件以参数名 值的形式绑定默认参数运行时由 gin 解析并注入。标准对比配置apples-to-apples仓库为每个智能体提供了一套主配置文件超参数经过统一挑选用于智能体之间公平对比apples-to-apples。四套核心配置为dopamine/tf/agents/dqn/configs/dqn.gindopamine/tf/agents/rainbow/configs/c51.gindopamine/tf/agents/rainbow/configs/rainbow.gindopamine/tf/agents/implicit_quantile/configs/implicit_quantile.gin以 dqn.gin 为例其关键参数含义如下参数默认值说明DQNAgent.gamma0.99折扣因子DQNAgent.update_horizon1n-step 更新的 nDQN 为 1即单步 TDDQNAgent.min_replay_history20000开始学习前需积累的最小回放样本数agent stepsDQNAgent.update_period4每隔多少步执行一次梯度更新DQNAgent.target_update_period8000目标网络同步周期agent stepsDQNAgent.epsilon_train0.01训练期 epsilon-greedy 探索率DQNAgent.epsilon_eval0.001评估期 epsilonDQNAgent.epsilon_decay_period250000epsilon 从 1.0 衰减到epsilon_train的步数DQNAgent.tf_device/gpu:0运算设备非 GPU 环境可改为/cpu:*tf.train.RMSPropOptimizer.*lr0.00025 等优化器参数DQN 使用 RMSPropWrappedReplayBuffer.replay_capacity1000000回放缓冲容量WrappedReplayBuffer.batch_size32训练 batch 大小各配置统一设置Runner.num_iterations 200、Runner.training_steps 250000、Runner.evaluation_steps 125000、Runner.max_steps_per_episode 27000共同构成每迭代 250k 训练步 125k 评估步、共 200 次迭代的标准实验规模合计约 2 亿帧。环境侧均使用atari_lib.create_atari_environment.game_name Pong与sticky_actions True以 0.25 概率启用粘性动作遵循 Machado et al., 2017 的建议。create_agent.agent_name决定实例化的智能体类型dqn、rainbow、implicit_quantile等其分发逻辑见 run_experiment.py 的 create_agent 函数。各智能体的差异化配置体现了算法本质C51c51.gin分布 Q 学习num_atoms 51、vmax 10.且update_horizon 1、replay_scheme uniform均匀回放使用 Adam 优化器Rainbowrainbow.gin在 C51 基础上启用update_horizon 33 步更新与replay_scheme prioritized优先回放并采用更小的学习率 0.0000625IQNimplicit_quantile.gin隐式分位数网络特有参数kappa 1.0Huber 分位数损失系数、num_tau_samples 64、num_tau_prime_samples 64、num_quantile_samples 32由于 IQN 暂不支持优先回放replay_scheme uniform。这些参数背后的选择依据可进一步参考 baselines 目录下的实验数据与说明文档。文献复现配置仓库还提供与经典论文设置一致的配置均使用确定版 ALE 环境超参数略有差异便于复现文献结果配置文件对应文献dopamine/tf/agents/dqn/configs/dqn_nature.ginMnih et al., 2015Nature DQNdopamine/tf/agents/dqn/configs/dqn_icml.ginBellemare et al., 2017C51 论文中的 DQN 基线dopamine/tf/agents/rainbow/configs/c51_icml.ginBellemare et al., 2017C51dopamine/tf/agents/implicit_quantile/configs/implicit_quantile_icml.ginDabney et al., 2018IQN检查点Checkpointing与日志LoggingDopamine 的实验基础设施可拆分为两大组件检查点与日志。两者都依赖命令行参数base_dir它告知框架实验数据的存放位置。检查点机制默认情况下Dopamine 在每个迭代一次训练阶段 一次评估阶段结束时保存一份检查点遵循 Mnih et al. 确立的标准流程。检查点保存在base_dir下的checkpoints子目录中高层级上包含三类内容实验统计信息已完成的迭代数、学习曲线等由 dopamine/discrete_domains/run_experiment.py 中的run_experiment流程负责智能体变量含 TensorFlow 图由 dopamine/tf/agents/dqn/dqn_agent.py 中的bundle_and_checkpoint与unbundle方法负责序列化与恢复回放缓冲数据。Atari 2600 的回放缓冲内存占用巨大Dopamine 为此做了专门的低内存优化相关实现见 dopamine/tf/replay_memory/circular_replay_buffer.py 中的save与load方法。检查点核心逻辑本身位于 dopamine/discrete_domains/checkpointer.py每次迭代写入一个cpkt.#文件#为迭代号并维护最近的checkpoint_duration个迭代以清理旧文件。其设计的一个关键细节是哨兵文件sentinel机制——Checkpointer.save_checkpoint()只有在所有其他检查点活动TensorFlow 图保存、回放缓冲保存都完成之后才会被调用并写入sentinel_checkpoint_complete.#文件标记全局保存成功从而让框架能够检测到不完整的检查点。运行 10 个迭代编号 0...9后/checkpoint目录下会存在/checkpoint/cpkt.6 /checkpoint/cpkt.7 /checkpoint/cpkt.8 /checkpoint/cpkt.9 /checkpoint/sentinel_checkpoint_complete.6 /checkpoint/sentinel_checkpoint_complete.7 /checkpoint/sentinel_checkpoint_complete.8 /checkpoint/sentinel_checkpoint_complete.9恢复实验时get_latest_checkpoint_number 会扫描sentinel_checkpoint_complete.*找到最近一次完整保存的迭代号也支持通过 gin 绑定override_number手动指定。日志机制每个迭代结束时Dopamine 会记录智能体的表现——既包括训练阶段也包括若启用的评估阶段。日志文件由 dopamine/discrete_domains/run_experiment.py 生成具体写入逻辑在 dopamine/discrete_domains/logger.py 中。日志是 pickle 文件内容为一个字典以迭代键如iteration_47映射到包含各项数据的字典。跨多次实验读取日志数据的最简单方式是使用 dopamine/colab/utils.py 提供的read_experiment方法将统计结果与官方基线对比绘图。仓库提供了配套的 Colab 笔记本 dopamine/colab/load_statistics.ipynb 演示完整流程。修改与扩展智能体Dopamine 的设计目标是让算法研究尽量简单它刻意保持相对扁平的类层级且不设抽象基类官方认为这对研究用途已经足够同时带来实现简单、易于上手的额外好处。官方推荐的扩展起点是直接修改智能体代码以适配你的研究需求配套的 Colab 笔记本 dopamine/colab/agents.ipynb 演示了如何扩展 DQN 智能体、如何从零新建智能体以及如何将实验结果与官方基线对比绘图。DQN智能体类 回放缓冲DQN 智能体分布在两个文件中智能体类dopamine/tf/agents/dqn/dqn_agent.py定义 DQN 网络、更新规则以及 RL 智能体的基本操作epsilon-greedy 动作选择、样本存储、回合记账等回放缓冲dopamine/tf/replay_memory/circular_replay_buffer.py。DQN 使用的 Q-Learning 更新规则定义在两个方法中_build_target_q_op构建目标 Q 值计算与_build_train_op构建训练损失与优化操作。Rainbow 与 C51继承 优先回放Rainbow 智能体同样由两个文件组成智能体类dopamine/tf/agents/rainbow/rainbow_agent.py继承自 DQN 智能体回放缓冲dopamine/tf/replay_memory/prioritized_replay_buffer.py继承自 DQN 的回放缓冲。C51 智能体本质上是 Rainbow 智能体的一个特定参数化实例update_horizonn-step 更新中的 n设为 1且使用均匀回放uniform replay方案——对应 c51.gin 中的RainbowAgent.update_horizon 1与RainbowAgent.replay_scheme uniform。隐式分位数网络IQNIQN 智能体仅需额外一个文件dopamine/tf/agents/implicit_quantile/implicit_quantile_agent.py继承自 Rainbow 智能体。从上述继承链IQN → Rainbow → DQN可以推断Dopamine 的扩展方式非常直接想新增算法时选择最接近的基类继承覆写网络构建与更新规则即可无需改动 Runner 或配置框架。基线数据下载与 TensorBoard 可视化仓库为全部 4 个智能体DQN、C51、Rainbow、IQN在全部 60 款 Atari 游戏上提供了一系列*.tar.gz压缩包需解压后使用数据用途原始日志raw logs可通过 load_statistics.ipynb 加载并可视化编译后的 pickle 文件供 agents.ipynb 与 load_statistics.ipynb 两个 Colab 直接使用TensorBoard event 文件支持在本地或用 tensorboard.ipynb借助ngrok直接从 Colab 启动查看TensorFlow 检查点4 个智能体 × 60 款游戏 × 5 次独立运行的完整检查点单包超过 15GBTensorBoard 检查点文件的命名格式为tf_ckpt-199.${SUFFIX}其中AGENT可取dqn、c51、rainbow、iqnGAME为 60 款游戏中的任意一款RUN为 15 的独立运行编号SUFFIX为data-00000-of-00001、index或meta之一。解压 TensorBoard event 文件后可以在本地直接启动 TensorBoard 查看训练曲线。例如要展示 C51 在 Asterix 上的训练运行tensorboard --logdir c51/Asterix/下图展示了全部智能体在 Asterix 上的 TensorBoard 训练曲线对比直观呈现了不同算法在同一游戏上的表现差异聚焦单个智能体时C51 在 Asterix 上的训练运行曲线如下基线数据的最终汇总与对比结果可参见 baselines 目录下的 Atari、MuJoCo 数据及对应 README含 Atari 基线说明 与 MuJoCo 基线说明。小结从 docs/README.md 出发本指南完整覆盖了 Dopamine 的三条主线训练Atari 离散域、Gym 离散域、MuJoCo 连续域三个入口、配置gin 标准对比配置、文献复现配置与命令行覆盖绑定、实验基础设施检查点的哨兵文件机制、pickle 日志格式、TensorBoard 可视化并给出了修改与扩展智能体的具体切入点。上手时只需三步选定 dopamine/tf/agents 或 dopamine/jax/agents 下的目标配置文件、指定base_dir启动 train.py、最后用 dopamine/colab/utils.py 读取结果并绘图对比——剩下的算法创新空间都留给你在扁平、无抽象基类的智能体代码中自由发挥。赞分享机器学习深度学习【免费下载链接】dopamineDopamine is a research framework for fast prototyping of reinforcement learning algorithms.项目地址https://gitcode.com/gh_mirrors/do/dopamine点击查看免费下载相关推荐Keep 开源告警管理平台完整上手指南5 分钟跑起来Keep 开源告警管理平台完整上手指南5 分钟跑起来 凌晨两点被 Prometheus 的告警叫醒爬起来一看同样的报错在 Datadog 里已经报了第三遍强化学习机器学习深度学习Dify.AI企业级智能应用开发平台构建生产级AI工作流的终极指南Dify.AI企业级智能应用开发平台构建生产级AI工作流的终极指南 在当今企业数字化转型的浪潮中如何快速、高效地将大语言模型能力整合到业务应用中成为技术决人工智能大模型LLMOpsAI 应用RAGAI Agent低代码10分钟上手gh_mirrors/bd/bds-files生物信息学新手必备的 Unix 命令速成指南10分钟上手gh_mirrors/bd/bds files生物信息学新手必备的 Unix 命令速成指南 gh_mirrors/bd/bds files 是《B文档/教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
