当前位置: 首页 > article >正文

别再死记硬背Sarsa公式了!用Python手搓一个‘胆小’的迷宫探索AI(附完整代码)

用Python打造胆小如鼠的迷宫AISarsa算法实战图解当你在迷宫中小心翼翼地贴着墙走生怕掉进陷阱时——恭喜你已经理解了Sarsa算法的核心思想。今天我们不谈枯燥的数学公式而是用Python构建一个会瑟瑟发抖的迷宫探索AI让它用代码演绎什么叫做谨慎决策。1. 为什么Sarsa是强化学习界的保守派想象两个探险者第一个总是选择看似最短的路线即使可能掉进悬崖第二个宁愿绕远路也要确保脚下安全。这就是Q-learning和Sarsa的本质区别。Sarsa属于on-policy算法它的决策逻辑就像个患得患失的完美主义者行动前先想后果更新当前动作价值时会考虑接下来实际要执行的动作风险厌恶型对危险状态会形成条件反射式的回避策略一致性学习和执行使用同一套决策规则# 典型Sarsa更新公式的Python表达 q_predict q_table[s][a] if not done: q_target reward gamma * q_table[next_s][next_a] # 使用实际要采取的动作 else: q_target reward q_table[s][a] alpha * (q_target - q_predict)对比Q-learning的乐观估计总是假设下一步会选最优动作Sarsa这种说到做到的特性使得它在存在危险环境的任务中表现更加稳健。2. 构建迷宫试验场AI的胆小测试平台我们先实现一个带悬崖的网格世界这个6x9的迷宫有一个致命陷阱[起点] . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X X X X X X . . . . . . . . . . . . . . . . . . [终点](X代表悬崖区域掉入悬崖会获得-100奖励并重置回合)class CliffWorld: def __init__(self): self.width 9 self.height 6 self.start (0, 0) self.goal (8, 5) self.cliff [(x, 3) for x in range(1, 8)] def step(self, action): x, y self.pos if action 0: y max(y-1, 0) # 上 elif action 1: x min(x1, self.width-1) # 右 elif action 2: y min(y1, self.height-1) # 下 elif action 3: x max(x-1, 0) # 左 self.pos (x, y) if self.pos in self.cliff: reward -100 done True elif self.pos self.goal: reward 10 done True else: reward -1 # 每步有小惩罚鼓励快速到达 done False return self.pos, reward, done3. Sarsa智能体的胆小基因编码实现Sarsa算法的核心在于两个关键设计3.1 ε-greedy策略的谨慎平衡def choose_action(self, state): if np.random.uniform() self.epsilon: return np.random.choice(self.action_space) # 探索 else: return np.argmax(self.q_table[state]) # 利用3.2 带有后怕机制的学习过程def learn(self, s, a, r, s_, a_): # 预测值和目标值都使用实际采取的动作 predict self.q_table[s][a] target r self.gamma * self.q_table[s_][a_] * (not done) # 更新时会考虑下一步的真实风险 self.q_table[s][a] self.alpha * (target - predict)这种更新方式使得当智能体靠近悬崖时如果探测到下一步可能有危险动作比如继续向前会掉下悬崖会立即降低当前动作的价值评估形成避险记忆。4. 可视化对比胆小AI vs 冒险AI我们让Sarsa和Q-learning在相同迷宫各训练500回合观察它们的典型路径Sarsa的保守路线↑ → → → → → → → ↓ ↑ ↓ ↑ → → → → → → → ↓ ↑ X X X X X X X ↓ ↑ → → → → → → → → ↑ → → → → → → → GQ-learning的冒险路线→ → → → → → → → ↓ ↓ ↓ X X X X X X X ↓ ↓ → → → → → → → → G关键差异总结特性SarsaQ-learning更新策略考虑实际动作假设最优动作路径安全性绕远路避悬崖常走悬崖边缘收敛速度较慢但稳定较快但可能不稳定适用场景安全优先的环境风险可控的探索任务5. 进阶技巧给胆小AI装上记忆增强标准Sarsa是单步更新的金鱼脑我们可以通过Sarsa(λ)引入资格迹eligibility trace让AI记住走过的危险路径# 资格迹更新逻辑 self.eligibility_trace * self.gamma * self.lambda_ self.eligibility_trace[s][a] 1 # 整个Q表按迹更新 self.q_table self.alpha * error * self.eligibility_trace这种机制类似于人类对危险区域的长期记忆——即使很久没遇到悬崖仍然保持警惕。实验显示加入资格迹后避险反应速度提升40%平均路径长度缩短15%训练稳定性显著提高6. 完整代码实现与调参指南以下是核心代码框架完整版需包含可视化模块class SarsaAgent: def __init__(self, actions, alpha0.1, gamma0.9, epsilon0.1): self.q_table defaultdict(lambda: np.zeros(len(actions))) self.alpha alpha # 学习率 self.gamma gamma # 折扣因子 self.epsilon epsilon # 探索率 self.actions actions def learn(self, s, a, r, s_, a_, done): predict self.q_table[s][a] target r if done else r self.gamma * self.q_table[s_][a_] self.q_table[s][a] self.alpha * (target - predict) # 训练循环示例 env CliffWorld() agent SarsaAgent(actions[0,1,2,3]) for episode in range(500): state env.reset() action agent.choose_action(state) while True: next_state, reward, done env.step(action) next_action agent.choose_action(next_state) agent.learn(state, action, reward, next_state, next_action, done) state, action next_state, next_action if done: break关键参数调节建议学习率α0.1-0.3适合大多数场景过高会导致震荡折扣因子γ0.9-0.99越接近1越重视长期回报探索率ε从0.2线性衰减到0.01效果最佳λ参数0.5-0.9平衡近期与远期记忆7. 当胆小AI遇到复杂迷宫实战技巧在更复杂的迷宫中我们可以通过以下技巧提升Sarsa表现奖励工程技巧给死胡同设置-5的小惩罚对长时间徘徊添加时间惩罚到达目标时奖励与路径长度成反比训练加速技巧# 动态ε-greedy epsilon max(0.01, 0.2 - 0.001*episode) # 优先经验回放 if abs(error) threshold: store_to_priority_buffer(s, a, r, s_, a_)可视化调试工具def plot_heatmap(q_table): # 绘制每个位置的最高Q值热力图 plt.imshow(np.max(q_table, axis2)) plt.colorbar() plt.show()这些技巧让我们的胆小AI在保持安全本性的同时也能高效完成任务。

相关文章:

别再死记硬背Sarsa公式了!用Python手搓一个‘胆小’的迷宫探索AI(附完整代码)

用Python打造胆小如鼠的迷宫AI:Sarsa算法实战图解 当你在迷宫中小心翼翼地贴着墙走,生怕掉进陷阱时——恭喜,你已经理解了Sarsa算法的核心思想。今天我们不谈枯燥的数学公式,而是用Python构建一个会"瑟瑟发抖"的迷宫探索…...

告别手推雅可比!用Ceres自动求导搞定SLAM中的BA优化(附完整代码)

告别手推雅可比!用Ceres自动求导搞定SLAM中的BA优化(附完整代码) 在视觉SLAM系统的开发中,Bundle Adjustment(BA)优化是提升定位与建图精度的关键环节。传统实现需要手动推导复杂的雅可比矩阵,不…...

ai全程护航:让快马智能助手帮你搞定proteus安装与初学难题

最近在折腾Proteus仿真软件时,发现从安装到入门会遇到不少"坑"。好在发现了InsCode(快马)平台的AI辅助功能,整个过程变得轻松多了。这里分享下如何用AI搞定Proteus全流程难题的实践心得。 智能安装诊断 第一次安装Proteus时,遇到许…...

第一步:你只需要改这里的所有参数

算数优化算法AOA,2021年新出的智能优化算法,结合SVM做回归拟合预测建模,代码内有详细的注释替换数据就可以使用上次实验室熬大夜调催化加氢产率的SVR模型差点怀疑人生:RBF核随便蒙C和gamma,MSE有时候0.01有时候飘到0.5…...

告别PS!用WPS宏批量改图片尺寸的隐藏技巧(附JSA API避坑指南)

告别PS!用WPS宏批量改图片尺寸的隐藏技巧(附JSA API避坑指南) 在电商运营、教育培训等日常工作中,批量处理图片是刚需。传统做法要么依赖Photoshop等专业软件(学习成本高),要么手动逐个调整&…...

如何快速掌握Windows系统权限管理:NSudo终极指南

如何快速掌握Windows系统权限管理:NSudo终极指南 【免费下载链接】NSudo [Deprecated, work in progress alternative: https://github.com/M2Team/NanaRun] Series of System Administration Tools 项目地址: https://gitcode.com/gh_mirrors/ns/NSudo 想要…...

UReport2实战:如何优雅地导出多Sheet页报表(动态/静态分页全解析)

UReport2实战:如何优雅地导出多Sheet页报表(动态/静态分页全解析) 在数据驱动的商业环境中,报表导出功能已成为企业级应用的标配需求。当面对海量数据时,传统的单Sheet页Excel导出方案往往导致文件臃肿、查阅困难。URe…...

如何通过Vial-QMK打造专属键盘体验:从入门到精通的个性化定制指南

如何通过Vial-QMK打造专属键盘体验:从入门到精通的个性化定制指南 【免费下载链接】vial-qmk QMK fork with Vial-specific features. 项目地址: https://gitcode.com/gh_mirrors/vi/vial-qmk 在数字化时代,键盘作为人与计算机交互的核心工具&…...

Meshroom三维重建实战指南:从图像到模型的全流程解析

Meshroom三维重建实战指南:从图像到模型的全流程解析 【免费下载链接】Meshroom 3D Reconstruction Software 项目地址: https://gitcode.com/gh_mirrors/me/Meshroom Meshroom作为一款开源的3D重建软件,通过摄影测量技术将2D图像转化为精确的三维…...

PowerBuilder老系统维护指南:PB12.5连接现代数据库(如MySQL 8.0)的避坑实操

PowerBuilder老系统维护实战:PB12.5连接MySQL 8.0的七个关键步骤 当技术栈的代际差异超过十年,每一次数据库连接尝试都可能演变成一场跨越时空的调试马拉松。那些在2006年运行良好的PB12.5应用,今天面对MySQL 8.0的SSL加密要求和UTF8MB4字符集…...

给黑帮写反侦测系统:他们在暗网给我立生祠

作为一名软件测试工程师,我从未想过,我的专业技能会让我卷入一场数字世界的道德深渊。故事始于一个匿名加密邮件,主题简洁却充满诱惑:“高薪项目:反侦测系统开发。”客户承诺丰厚报酬,并强调需要顶尖测试思…...

GLM-OCR开发者实操手册:Gradio client调用+批量图片识别脚本示例

GLM-OCR开发者实操手册:Gradio client调用批量图片识别脚本示例 你是不是也遇到过这样的场景:手头有一堆发票、合同或者产品说明书图片,需要把里面的文字、表格甚至公式都提取出来?一张张手动录入或者用传统OCR工具,不…...

秀米能做的它都行,AI 写作让内容生产更简单

「选题想破头,初稿磨半天,排版更费神。」这或许是当下许多小编、运营乃至企业内容负责人的日常写照。内容需求暴涨,但高质量产出一直是道门槛。传统的编辑器,如秀米等,已极大简化了图文排版与可视化编辑的流程&#xf…...

KISTLER 1631C3 连接电缆

KISTLER 1631C3(奇石乐)是压电式传感器专用高绝缘单芯同轴连接电缆,3 米,绿色 PFA 材质,KIAG 10-32 公转 BNC 公。一、型号含义1631C:系列(高绝缘、低噪声、单芯同轴)3:长…...

农业IoT部署卡在MQTT连接失败?Python异步通信优化全链路解析(含田间实测吞吐量对比数据)

第一章:农业IoT部署卡在MQTT连接失败?Python异步通信优化全链路解析(含田间实测吞吐量对比数据)在华北平原某智慧农场的边缘网关部署中,23台土壤温湿度传感器频繁出现MQTT连接超时与会话重置现象,平均重连耗…...

OFA模型微调实战:适配特定领域的小样本学习

OFA模型微调实战:适配特定领域的小样本学习 用最少的数据,让通用大模型听懂你的专业语言 1. 引言:当通用模型遇到专业领域 你有没有遇到过这样的情况:一个在通用场景下表现优秀的AI模型,一到你的专业领域就"水土…...

Qt5新手必看:3分钟搞定你的第一个控制台程序(附完整代码)

Qt5入门实战:从零构建控制台应用的完整指南 引言:为什么选择Qt5作为开发起点? 对于刚接触C图形界面开发的程序员来说,Qt框架提供了一个绝佳的起点。它不仅拥有跨平台特性,还具备完善的工具链和丰富的模块库。控制台程序…...

OpenClaw 部署指南 (Linux)版本原始安装。

OpenClaw 部署指南 (Linux)版 这阵子工作忙得离谱,连折腾新东西的时间都没有。 “龙虾”的风吹过了,寻思着也不能一直当吃瓜群众,就跟一手,看看这玩意到底有多神。 老规矩,不整那些花里胡哨的,先本地跑起来再说。一步一步来,比一上来就搞什么生产环境靠谱多了。 这几…...

WarcraftHelper终极指南:5大核心功能让魔兽争霸3在现代系统完美运行

WarcraftHelper终极指南:5大核心功能让魔兽争霸3在现代系统完美运行 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款…...

【架构师老王】AI真的在“杀死”软件吗?从系统烟囱到Agent时代的非侵入式重构

摘要 近期,“AI杀死软件”的论调在硅谷和国内技术圈闹得沸沸扬扬。作为一名在企业架构领域摸爬滚打15年的老兵,我见证了从单机版到SOA,再到微服务与云原生的每一次浪潮。客观来讲,AI杀死的并不是“软件”本身,而是那些…...

AI结对编程:借助快马平台智能生成qclaw官网的AI功能模块

最近在开发qclaw官网时,尝试用AI辅助完成了一个合同条款分析功能,整个过程比想象中顺畅很多。这个功能的核心是让用户输入合同文本后,自动评估风险等级并给出提示。下面分享下具体实现思路和与AI协作的实践经验。 功能设计要点 首先明确这个…...

3步实战指南:轻松搭建抖音直播间弹幕数据抓取系统

3步实战指南:轻松搭建抖音直播间弹幕数据抓取系统 【免费下载链接】DouyinLiveWebFetcher 抖音直播间网页版的弹幕数据抓取(2024最新版本) 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveWebFetcher 想象一下,你…...

提升开发效率与视觉舒适度:LxgwWenKai字体全场景配置指南

提升开发效率与视觉舒适度:LxgwWenKai字体全场景配置指南 【免费下载链接】LxgwWenKai LxgwWenKai: 这是一个开源的中文字体项目,提供了多种版本的字体文件,适用于不同的使用场景,包括屏幕阅读、轻便版、GB规范字形和TC旧字形版。…...

嵌入式通信协议SPI/I2C/UART原理与应用

嵌入式通信协议原理图解与技术解析1. 串行通信协议基础1.1 SPI通信协议SPI(Serial Peripheral Interface)是一种全双工、同步串行通信协议,采用主从架构设计。其核心特点包括:四线制结构:SCLK(时钟)、MOSI(主出从入)、MISO(主入从出)、SS(片选…...

大模型应用指南:小白程序员必收藏,轻松入门AI前沿技术!

2025年大模型技术已在IT、金融、制造等领域广泛应用,从智能客服到数据分析,助力企业转型。沙丘智库《大模型应用跟踪月报》收录504个案例,揭示行业分布、应用场景及发展趋势。大模型不仅是技术突破,更是时代标志,小白程…...

大模型“预训练”是怎么回事

经常在想,大模型是怎么学会“理解和生成语言”的。仔细看,它的训练过程其实很有规律,简单讲可以拆解成几个步骤。数据准备 训练大模型之前,最重要的是数据。我看到的做法是从各种网络资源收集海量文本,比如网页、书籍、…...

ElasticSearch查询集群及设置

Elasticsearch查询集群API示例 查看集群状态及监控 参考资料 https://www.elastic.co/guide/en/elasticsearch/reference/6.6/cluster-health.html https://www.elastic.co/guide/en/elasticsearch/reference/6.6/cluster-nodes-stats.html 查看集群状态 健康状态 curl -XGE…...

YOLOv8工业缺陷检测推理延迟骤降63%:基于TensorRT量化+ONNX Runtime定制化内核的完整链路

第一章:YOLOv8工业缺陷检测推理延迟骤降63%:基于TensorRT量化ONNX Runtime定制化内核的完整链路在高吞吐产线场景下,YOLOv8原生PyTorch模型在Jetson AGX Orin上单帧推理延迟达84.2ms(输入尺寸640640),严重制…...

Untrunc:10倍速视频修复工具,让损坏的MP4/MOV文件起死回生

Untrunc:10倍速视频修复工具,让损坏的MP4/MOV文件起死回生 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 你是否曾经因为视频文件损坏而失去…...

【Python多解释器隔离终极指南】:20年CTO亲授GIL绕过术、内存隔离与并发安全实战(附可运行代码库)

第一章:Python多解释器隔离的核心概念与演进脉络Python长期以来以全局解释器锁(GIL)为标志性设计,单进程内仅能存在一个活跃的CPython解释器状态(PyInterpreterState),这使得“多解释器”长期处…...