用强化学习训练 Mountain Car 逃出山谷:AI-For-Beginners 深度强化学习实战

发布时间:2026/10/8 5:38:04
用强化学习训练 Mountain Car 逃出山谷:AI-For-Beginners 深度强化学习实战 教程人工智能机器学习深度学习【免费下载链接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!项目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners点击查看免费下载本篇技术指南聚焦 AI-For-Beginners 课程中《深度强化学习》一课的实验任务训练一个 RL 智能体在 OpenAI Gym 的 Mountain Car 环境中控制小车通过左右加速与静止的往复摆动积累动能最终逃离山谷、抵达旗帜。你将学会基于 Gym 的统一环境接口把 Policy Gradients策略梯度与 Actor-Critic演员-评论家两类算法复用到全新环境上并掌握将环境作为参数传入 RL 算法的代码重构思路。实验任务概览本实验源自 22-DeepRL 课程的作业环节Assignment: Train a Mountain Car课程正文已通过 CartPole 演示了两套完整的 RL 算法——Policy Gradients 与 Actor-Critic并配套了 TensorFlow 实现与 PyTorch 实现两个 Notebook。本实验要求你把这些算法从 CartPole 移植到 Mountain Car借此体会RL 算法与具体环境是解耦的。Mountain Car 环境剖析Mountain CarMountainCar-v0环境模拟了一辆被困在 V 形山谷底部的小车。由于小车发动机动力不足以直接爬坡唯一的策略是先向左爬坡积攒势能再折返向右借助惯性冲过右侧山顶的旗帜位置。按照实验说明该环境的要素如下要素内容动作空间三种离散动作向左加速0、不施加动力1、向右加速2观测空间小车沿 x 轴的位置与速度两个连续量目标逃离山谷抵达旗帜所在位置奖励设定环境的默认设计中每一步未到达目标都会获得惩罚性奖励鼓励智能体尽快到达旗帜注意它与 CartPole 的差异CartPole 的观测是 4 维向量小车位置、速度、杆的角度、角速度动作是 2 种左/右而 Mountain Car 的观测只有 2 维、动作有 3 种。这正是实验要验证的核心观点——算法不依赖环境细节仅依赖抽象的状态-动作-奖励三元组。起步 Notebook先跑通环境实验要求你从 MountainCar.ipynb 开始。这个 Notebook 已经为你铺好了环境验证的骨架第一步创建环境import gym env gym.make(MountainCar-v0)第二步运行随机策略实验state env.reset() while True: env.render() action env.action_space.sample() state, reward, done, info env.step(action) if done: break这段代码展示了 Gym 的统一接口env.reset()开启一次新的实验episodeenv.step(action)执行一步仿真并返回(state, reward, done, info)四元组env.action_space.sample()则从动作空间中随机采样。用随机动作运行小车只会在谷底附近来回小幅摆动永远无法到达旗帜——这正是无策略的智能体与学会摆荡的智能体之间的差距。第三步关闭环境env.close()完成训练与验证后务必调用env.close()释放渲染资源。Notebook 的中间部分## Lost of code here单元格留白给你把课程中学到的 Policy Gradients 和 Actor-Critic 代码迁移到这里。从课程中移植算法课程正文lessons/6-Other/22-DeepRL/README.md讲解了两个核心算法实验要求你将其原样套用到 Mountain CarPolicy Gradients用神经网络输出动作概率策略梯度的核心思想用一个神经网络把状态映射为动作概率分布。以 CartPole-RL-TF.ipynb 中的实现为例num_inputs 4 # CartPole 观测维度 num_actions 2 # CartPole 动作数 model keras.Sequential([ keras.layers.Dense(128, activationrelu, input_shape(num_inputs,)), keras.layers.Dense(num_actions, activationsoftmax) ]) model.compile(losscategorical_crossentropy, optimizerkeras.optimizers.Adam(learning_rate0.01))迁移到 Mountain Car 时只需把num_inputs改为 2位置、速度、num_actions改为 3左/不动/右网络结构无需其他改动。训练时算法需要为每一步计算折扣回报discounted rewards用衰减系数 γ0.99 削弱早期回报的影响并对结果归一化作为后续强化高回报动作的权重eps 0.0001 def discounted_rewards(rewards, gamma0.99, normalizeTrue): ret [] s 0 for r in rewards[::-1]: s r gamma * s ret.insert(0, s) if normalize: ret (ret - np.mean(ret)) / (np.std(ret) eps) return ret随后进入主训练循环每轮episode采样轨迹trace→ 计算实际动作与预测概率之差作为梯度 → 用折扣回报加权 → 更新网络。CartPole 实验中 300 轮训练即可看到总回报从 20 多提升到数百的明显增长曲线。Actor-Critic演员与评论家协同Actor-Critic 是策略梯度的改进版同一网络或两个共享底层特征的网络同时输出两部分Actor演员给出各动作的概率分布负责选动作Critic评论家估计当前状态下的期望累计回报负责打分。其架构在概念上与 GAN 有相似之处——两个网络相互博弈、共同提升。实现上num_inputs 4 num_actions 2 num_hidden 128 inputs keras.layers.Input(shape(num_inputs,)) common keras.layers.Dense(num_hidden, activationrelu)(inputs) action keras.layers.Dense(num_actions, activationsoftmax)(common) critic keras.layers.Dense(1)(common) model keras.Model(inputsinputs, outputs[action, critic])损失函数的设计是精髓Critic loss让评论家的预测value逼近真实的折扣回报rew使用 Huber 损失Actor loss用真实折扣回报 − 评论家预测值即优势估计diff rew - value对动作的对数概率加权-log_prob * diff使得获得高于预期回报的动作被强化。训练直至running_reward 195判定任务解决CartPole 基准完整训练循环见 CartPole-RL-TF.ipynb。PyTorch 版本的对应实现位于 CartPole-RL-PyTorch.ipynb两者任选其一作为移植基础。关键收获让环境成为算法参数实验最后的 Takeaway 点明了本实验的核心学习目标将 RL 算法适配到新环境通常是直截了当的因为 OpenAI Gym 对所有环境提供相同的接口算法本身在很大程度上不依赖环境的具体性质。你甚至可以把 Python 代码重构为将任意环境作为参数传给 RL 算法。这句话意味着两件实操层面的指导接口即契约只要环境实现了reset()、step()、action_space、observation_space这套接口算法代码无需感知背后是 CartPole 还是 Mountain Car——这正是 22-DeepRL 课程正文反复强调的 Gym 设计哲学。可重构性把run_episode(env, model, ...)之类的函数抽出来将环境对象作为参数传入即可让同一套训练代码在 CartPole、Mountain Car 及任何 Gym 环境中复用验证算法与环境解耦。验证与延伸完成训练后可以像起步 Notebook 那样调用env.render()观察小车是否学会了先左后右的摆荡策略并冲上旗帜随后env.close()收尾。若想继续深入 RL课程还给出了值得探索的方向用 CNN 处理屏幕截图训练 Atari 游戏状态不再是向量而是图像、让两个智能体对弈自举训练棋类程序如 Alpha Zero 思路、以及将 RL 用于工业控制系统仿真。这些方向共同印证了本实验的结论——RL 的威力不在于某个特定环境而在于一套与任务解耦的通用学习机制。赞分享教程人工智能机器学习深度学习【免费下载链接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!项目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners点击查看免费下载相关推荐AI for Beginners 实战指南用 OpenAI Gym 强化学习训练 Mountain Car 逃出山谷AI for Beginners 实战指南用 OpenAI Gym 强化学习训练 Mountain Car 逃出山谷 本指南围绕 AI for Beginne教程人工智能机器学习深度学习AI-For-Beginners 实战用强化学习训练 Mountain Car 冲出山谷AI For Beginners 实战用强化学习训练 Mountain Car 冲出山谷 本文面向 AI For Beginners 课程「深度强化学习De教程人工智能机器学习深度学习AI-For-Beginners 深度强化学习实战用 OpenAI Gym 训练 Mountain Car 冲出山谷AI For Beginners 深度强化学习实战用 OpenAI Gym 训练 Mountain Car 冲出山谷 本指南聚焦 AI For Beginne教程人工智能机器学习深度学习创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考