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

发布时间:2026/10/8 5:38:05

用强化学习训练 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),仅供参考
延伸阅读

更多相关文章

2026/10/8 5:38:05

微信群机器人管理系统:多微信号同登与签到回复落地拆解

简介:这份微信群机器人管理系统源码面向需要搭建多微信账号自动化运营的开发者与运维人员,采用C/S架构,基于VS2010与SQL2008R2开发,适合具备一定C#与数据库基础的读者二次开发或直接部署。系统支持同时登录多个微信账号&#xff0…

2026/10/8 5:38:05

VSCode+通义灵码:新手编程入门最佳AI搭子指南

各位刚接触编程的朋友,还有那些在编辑器前面坐了半小时却不知道第一行代码该写什么的朋友,你们好。今天想认真聊聊我最近一直在用、也强烈推荐给身边每一位新手的一套组合:VSCode 和通义灵码。这俩搭配起来,说白了就是给你配了一个…

2026/10/8 5:38:05

Superpowers:开源实时协作3D游戏开发环境,零门槛构建Web游戏原型

前几天整理旧硬盘,翻出一个两年前的压缩包,解压开发现里面躺着一个用 Superpowers 做的 3D 小游戏原型。说真的,这个工具在国内独立游戏圈子里相当冷门,但当时我和两个朋友就是靠它,在一个周末做出了一个能跑能跳、能联…

2026/10/8 6:43:10

eFuse+MCU电源路径保护方案:选型、参数计算与固件状态机

1. 项目解读:用一颗eFuse加一颗MCU,把电源路径保护做成可管理的系统工程嵌入式开发越往后做,越会碰到一个很扎心的现实:功能做得再好,电源一抖,全部归零。工业场景尤其如此,现场总线的浪涌、接插…

2026/10/8 6:43:10

day07 张益瑄 (笔记)

主轴对齐方式 属性名: justify-content常用值如下: flex-start :主轴起点对齐。—— 默认值flex-end :主轴终点对齐。center :居中对齐space-between :均匀分布,两端对齐(最常用&a…

2026/10/8 6:43:10

eFuse与MCU协同的嵌入式电源路径保护设计

做工业控制板和嵌入式系统这几年,我越来越觉得“电源路径保护”是被低估的一环。很多项目初期只盯着 MCU 性能、协议栈和算法,结果一到现场就栽在电源上:插拔瞬间打坏板子、感性负载反冲烧掉开关、输出短路导致整块 PCB 起烟。传统做法是保险…

2026/10/8 6:43:10

Linux静态网络配置三要素:IP+路由+DNS闭环验证

简介:本资源是一份面向Linux系统管理员与运维初学者的实用配置指南,聚焦IP地址、DNS服务器及路由规则的修改方法,解决日常网络环境部署与故障排查中的核心配置问题。文档以PDF格式呈现,共1个文件,大小仅11KB&#xff0…

2026/10/8 6:43:10

早9晚6居家办公还能拿大厂薪资?Coupang直招大模型与后端开发

早9晚6居家办公还能拿大厂薪资?Coupang直招大模型与后端开发 在脉脉上,一则关于韩国电商Coupang的招聘讨论引发开发者关注。该用户讨论称,岗位提供早9晚6弹性办公与居家办公机会,薪资却对标字节等大厂,形成了工作节奏与…

2026/10/8 6:38:09

2026年10月选南京庭院设计公司,真能一站式搞定施工与养护吗

你是不是也遇到过这种情况? 找了一家“专业”的庭院设计公司,签了合同,图纸画得漂亮,报价也合理。结果施工时突然说“我们不接这种大工程”,转头把活儿外包给了本地小工队。等到验收,绿植死了、鱼池漏水、地…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/7 8:18:33

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 0:02:17

自然数立方等于连续奇数之和:从证明到编程验证

十几年来我一直游走在数学科普和编程教学这两块内容之间,对“看起来像魔法、拆开全是数学”的结论总是格外敏感。最近翻资料时又撞见一句话:任何一个自然数 m 的立方,都可以写成 m 个连续奇数之和。2 的立方等于 3 加 5,3 的立方等…

2026/10/8 0:02:17

C#上位机SSH连接实战:用SSH.NET补齐超时、批量与密钥认证

简介:这是一份基于 C# 开发的 SSH 连接功能半成品工程,原本作为另一个主项目的子功能模块,现独立打包分享。工程采用 WinForms 界面,包含源码、解决方案、安装部署工程、NuGet 依赖包及说明文档,适合正在做远程连接、网…

2026/10/8 0:02:17

Java SpringBoot一体化智能售后系统设计与实现全解析

毕业设计年年做,Java Web 方向的题目翻来覆去就那么几个,但“一体化智能售后系统”这个题,每次看到我都觉得值得认真聊一聊。它不是一个简单 curd 堆出来的管理系统,而是把客户、工单、派单、处理、回访、统计整条链路串起来的一套…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑