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

告别‘选择困难症’:用Envelope Q-Learning让AI学会在《超级马里奥》里权衡金币与速度

告别‘选择困难症’用Envelope Q-Learning让AI学会在《超级马里奥》里权衡金币与速度想象一下你正在玩《超级马里奥》面对前方闪闪发光的金币和即将关闭的关卡大门必须在快速通关和收集财富之间做出抉择。这种多目标决策困境正是强化学习领域的前沿挑战——而Envelope Q-Learning的出现让AI首次像人类玩家一样具备了动态权衡的能力。本文将带你从零实现一个能自主调整策略的马里奥AI通过游戏化案例揭开多目标强化学习的神秘面纱。1. 多目标强化学习的游戏化实践传统强化学习就像只会执行单一命令的机器人要么不顾一切冲向终点要么执着地收集每一枚金币。而真实游戏体验需要动态平衡多个目标这正是多目标强化学习MORL的核心价值。在《超级马里奥》环境中我们定义了五个关键奖励维度目标维度奖励计算规则典型冲突场景水平位移每帧向右移动的像素值与时间惩罚存在天然矛盾时间惩罚-0.1×剩余时间/总时间快速通关需承受更高风险死亡惩罚-10×生命损失激进策略增加死亡概率金币收集1 per coin绕路收集延缓通关进度敌人击败2 per enemy战斗消耗时间与资源Envelope Q-Learning的突破性在于它不再需要为每种偏好组合训练独立模型。通过下面这个Q值更新公式AI可以同时学习所有可能的权衡策略def envelope_q_update(Q, state, action, omega, reward, next_state): # 计算当前偏好下的目标Q值 current_q Q[state][action].dot(omega) # 寻找下一状态的最优动作和偏好组合 max_next max( [(omega.T.dot(Q[next_state][a]), a) for a in ACTIONS], keylambda x: x[0] ) target reward.dot(omega) GAMMA * max_next[0] # 更新向量化Q值 Q[state][action] ALPHA * (target - current_q) * omega return Q这个简洁的实现背后蕴含着三个关键设计原则向量化奖励处理保持各维度奖励的独立性偏好加权机制通过ω参数动态调整目标优先级经验复用系统单个transition可用于更新所有偏好策略2. 构建马里奥的多目标决策系统要实现真正智能的游戏AI我们需要改造标准的Gym环境。以下是使用PyGame创建自定义环境的典型步骤class MultiObjectiveMario(gym.Env): def __init__(self): self.observation_space Box(0, 255, (84, 84, 3)) self.action_space Discrete(6) # 上下左右跳跃蹲下 self.reward_dim 5 # 对应五个目标维度 def step(self, action): # 执行动作获取游戏状态 frame, done mario_game.update(action) # 计算多维度奖励 rewards np.zeros(5) rewards[0] mario.x_velocity / 10.0 # 位移奖励 rewards[1] -0.1 if not done else 0 # 时间惩罚 rewards[2] -10 if mario.died else 0 # 死亡惩罚 rewards[3] mario.collected_coins # 金币收集 rewards[4] mario.killed_enemies * 2 # 敌人击败 return frame, rewards, done, {}奖励设计中的魔鬼细节位移奖励需要除以系数避免数值爆炸时间惩罚应采用渐进式设计避免末期陡降死亡惩罚要足够大以阻止冒险行为金币和敌人奖励需保持合理比例实验中发现当金币奖励超过3倍位移奖励时AI会出现守财奴行为——反复在安全区域刷金币而不推进关卡。3. Envelope Q-Learning的实战实现下面展示如何在PyTorch中构建支持多目标学习的神经网络class EnvelopeQNetwork(nn.Module): def __init__(self, state_dim, action_dim, reward_dim): super().__init__() self.conv nn.Sequential( nn.Conv2d(3, 32, 8, stride4), nn.ReLU(), nn.Conv2d(32, 64, 4, stride2), nn.ReLU() ) self.fc nn.Sequential( nn.Linear(64*9*9, 512), nn.ReLU() ) # 输出层为每个动作的向量化Q值 self.q_head nn.Linear(512, action_dim * reward_dim) self.action_dim action_dim self.reward_dim reward_dim def forward(self, x, omega): x self.conv(x) x x.view(x.size(0), -1) x self.fc(x) q_vectors self.q_head(x).view(-1, self.action_dim, self.reward_dim) # 返回偏好加权后的标量Q值 return (q_vectors * omega.unsqueeze(1)).sum(dim2)训练过程中需要特别注意的两个技巧Hindsight Experience Replaydef update_replay_buffer(buffer, transition, omega_samples10): state, action, reward, next_state, done transition # 为每个transition采样多个偏好组合 for _ in range(omega_samples): omega np.random.dirichlet(np.ones(5)) buffer.add((state, action, reward, next_state, done, omega))动态偏好调整策略def adapt_preference(agent, initial_omega, env, episodes100): current_omega initial_omega.copy() for ep in range(episodes): state env.reset() for t in range(1000): action agent.act(state, current_omega) state, reward, done, _ env.step(action) # 基于实时表现调整偏好 if reward[2] -5: # 频繁死亡 current_omega[0] * 0.9 # 降低位移权重 current_omega[3] * 1.1 # 提高金币权重 elif t 500: # 进度过慢 current_omega[1] * 0.8 # 减少时间惩罚 current_omega / current_omega.sum() # 保持归一化 return current_omega4. 从理论到实践的认知跃迁在2000次训练episode后我们观察到AI逐渐发展出三类典型策略保守型策略(ω[0.2,0.1,0.4,0.2,0.1])平均金币收集78/level通关时间320s死亡率5%特征优先躲避敌人沿主路径收集易得金币激进型策略(ω[0.5,0.3,0.1,0.05,0.05])平均金币收集24/level通关时间112s死亡率32%特征无视次要路径高速冲刺通过危险区域均衡型策略(ω[0.3,0.2,0.2,0.2,0.1])平均金币收集53/level通关时间198s死亡率15%特征选择性挑战中等难度敌人绕路获取高密度金币这些策略的Pareto前沿展示了一个有趣的现象当死亡率控制在15%以下时通关时间与金币收集呈现近似线性权衡关系而超过该阈值后时间收益呈现边际递减效应。实际部署中的发现使用ε-greedy探索时ε应随训练进度从0.5降至0.01学习率设为0.001时模型最稳定批量大小128在RTX 3090上可实现最佳吞吐量每10次迭代更新目标网络能平衡稳定性与适应性一个反直觉的结论是适度增加死亡惩罚如从-10调整为-15反而能提升整体表现因为这迫使AI发展出更精细的风险评估能力。在某个实验组中调整后的AI在保持相同通关时间下将金币收集量提高了27%。

相关文章:

告别‘选择困难症’:用Envelope Q-Learning让AI学会在《超级马里奥》里权衡金币与速度

告别‘选择困难症’:用Envelope Q-Learning让AI学会在《超级马里奥》里权衡金币与速度 想象一下,你正在玩《超级马里奥》,面对前方闪闪发光的金币和即将关闭的关卡大门,必须在"快速通关"和"收集财富"之间做出…...

EF Core 拦截器实战:SaveChangesInterceptor、CommandInterceptor 与审计落地衷

一、背景与问题缘起 MySQL 5.6.51 版本下 2000 万行核心业务表开展新增字段操作,需求为新增BIGINT(19) NOT NULL DEFAULT 0 COMMENT 注释(因业务实际需要存储大数值关联字段)。 表的核心特性为Java 多线程密集读写,业务请求持续高…...

告别盲调!用逻辑分析仪抓取STM32F429 TIM1的PWM波形,一步步教你分析频率、占空比和死区

从代码到波形:STM32F429 TIM1 PWM硬件验证全流程实战 调试PWM输出时最令人头疼的莫过于代码看似正确,但硬件端却毫无反应——引脚电压纹丝不动,或者波形完全不符合预期。这种"软件配置正确,硬件行为未知"的困境&#xf…...

FPGA JESD204B链路调试实战:从时钟配置到同步状态解析

1. JESD204B接口基础:关键参数解析 第一次接触JESD204B接口时,我被那一堆参数搞得晕头转向。M、N、N、F、K这些字母组合看起来像密码一样,但理解它们对后续调试至关重要。让我用最直白的语言帮你梳理清楚。 M代表转换器数量,这个最…...

告别虚拟机!在Windows 11上零配置搭建Masm汇编实验环境(附保姆级图文教程)

在Windows 11上零配置搭建Masm汇编实验环境的完整指南 对于计算机专业的学生和汇编语言初学者来说,搭建一个可用的实验环境往往是第一道门槛。传统方法要么需要配置复杂的虚拟机,要么依赖过时的DOS模拟器,这些方案不仅占用系统资源&#xff0…...

深入解析MIPI RFFE接口:从寄存器操作到实战技巧

1. MIPI RFFE接口基础入门 第一次接触MIPI RFFE接口时,我也被它简单的两根线设计给"骗"了。表面上看就是个普通的串行接口,但实际开发中遇到的坑可不少。RFFE全称RF Front-End Control Interface,是MIPI联盟专门为射频前端模块设计…...

基于STM32LXXX的数字电位器(MAX5402EUA+T)驱动应用程序设计

一、简介: MAX5402EUA+T 是Maxim Integrated(现Analog Devices)推出的一款256抽头、低漂移数字电位器,采用MAX-8封装。 二、主要技术特性: 参数 值 抽头数 256个 端到端电阻 10kΩ 每级步进电阻 39.2Ω (10kΩ/255) 接口类型 SPI兼容,3线串行 电源电压 2.7V ~ 5.5V 温度…...

在昇腾Atlas 800I A2上,用vLLM-Ascend 0.9.1-dev部署Qwen2.5-7B的保姆级避坑指南

昇腾Atlas 800I A2实战:vLLM-Ascend部署Qwen2.5-7B的深度避坑手册 当你在Atlas 800I A2服务器上首次尝试用vLLM-Ascend部署Qwen2.5-7B模型时,可能会遇到各种官方文档未曾提及的"暗礁"。本文将从实战角度,拆解那些让开发者夜不能寐的…...

基于STM32LXXX的数字电位器(MCP4661-103E/ST)驱动应用程序设计

一、简介: MCP4661-103E/ST 是 Microchip 推出的双通道、8位(256抽头)数字电位器,采用 I2C 接口,阻值为10kΩ,内置 EEPROM 可掉电保存配置。 二、主要技术特性: 参数 值 通道数 2 (双通道) 电阻值 10 kΩ 抽头数 257 (8位分辨率,256步进) 接口类型 IC,标准模式100kHz…...

抖音无水印下载器终极指南:免费批量保存视频、图集与直播回放

抖音无水印下载器终极指南:免费批量保存视频、图集与直播回放 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallbac…...

LLM的“小bug”:聊聊幻觉是什么,以及如何有效规避免

不管是日常使用ChatGPT、文心一言,还是接触各类开源LLM,你大概率都遇到过这样的情况:模型一本正经地给你讲一个知识点、报一组数据、提一个引用,说得头头是道、逻辑通顺,可你事后查证才发现,这些内容全是假…...

如何用TranslucentTB打造终极Windows透明任务栏:新手完整指南

如何用TranslucentTB打造终极Windows透明任务栏:新手完整指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 你是否厌倦了Wi…...

告别模拟器!手把手教你将Flutter App部署到树莓派4B(ARM64 Linux实战)

告别模拟器!手把手教你将Flutter App部署到树莓派4B(ARM64 Linux实战) 在物联网和边缘计算蓬勃发展的今天,开发者越来越需要将现代UI框架的能力延伸到资源受限的嵌入式设备。树莓派4B作为一款性价比极高的ARM64开发板,…...

番茄小说下载器:打造你的个人离线图书馆,随时随地畅享阅读

番茄小说下载器:打造你的个人离线图书馆,随时随地畅享阅读 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 你是否曾因网络信号不佳而错过精彩的小说章节…...

英语地点介词(in/on/at)的使用

一、核心原则介词核心逻辑就像……at一个具体的坐标点地图上的图钉 📍on一个表面/平面/线贴在墙上的一张纸 📄in一个有边界的立体空间装在盒子里的玩具 📦记忆口诀: at 是点,on 是面,in 是空间里面。二、具…...

ESP-Meshed:面向ESP32/ESP8266的轻量级分布式应用框架

1. ESP-Meshed 框架深度解析:面向 ESP32/ESP8266 的轻量级分布式应用构建框架1.1 框架定位与工程价值ESP-Meshed 并非 Espressif 官方 ESP-MESH 协议栈的替代品,而是一个面向嵌入式应用层的轻量级分布式框架。其核心设计哲学是:在不侵入底层网…...

别再只调参了!深入理解PCL网格化:从Delaunay三角剖分到法线一致性的底层原理

深入解析PCL网格化:从Delaunay三角剖分到法线一致性的工程实践 在三维重建领域,点云网格化是将离散采样点转化为连续表面的关键技术。许多开发者虽然能够调用PCL库完成基础网格生成,但当面对setNormalConsistency、setMaximumSurfaceAngle等参…...

Figma中文界面革新:突破语言壁垒的全攻略

Figma中文界面革新:突破语言壁垒的全攻略 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN Figma作为主流设计工具,其英文界面长期困扰中文用户。FigmaCN插件通过设…...

AI时代,网络安全为何是人类最后壁垒?网安专业究竟有多重要?

网络安全专业:AI时代唯一被AI“反向增强”的人类堡垒 核心论断:网络安全不是AI的替代对象,而是AI的校准器、约束阀与免疫系统。当AI在其他领域扮演“执行者”,它在网络空间中必须是“被监管者”——而监管它的,只能是具…...

联合注入及布尔型盲注基础流程(手注sqli-labs-master)

SQL 注入的核心原理:一句话概括 攻击者通过在输入框或 URL 参数中,输入恶意的 SQL 代码,让数据库“误以为”这是正常的指令并执行,从而泄露数据。 联合注入(UNION-based Injection) 联合注入是 SQL 注入中最常见、也最容易理解…...

亚马逊,TEMU平台针对电动泵美国站的UL778标准

‌UL778是电动泵的安全标准‌,主要用于规范在日常使用场景下的潜水或非潜水电泵的安全性能,确保产品在北美市场的准入合规 。一、适用产品范围以下类型的电泵通常适用于UL778标准:‌潜水泵‌:电机可完全浸入水中运行的泵。‌非潜水…...

深入解析POODLE漏洞:SSL3.0的CBC模式安全隐患与防御策略

1. POODLE漏洞的前世今生 第一次听说POODLE漏洞时,我还以为是什么可爱的狗狗品种。后来才发现,这个听起来萌萌的名字背后,隐藏着一个足以让整个互联网颤抖的安全威胁。POODLE全称Padding Oracle On Downgraded Legacy Encryption,…...

YOLO+SAM微调做工业缺陷分割:年省28万的实战案例

YOLOSAM微调做工业缺陷分割:年省28万的实战案例一、问题 PCB质检标注员手动勾勒缺陷边界8分钟/张。YOLO框不准,SAM水土不服。 二、方案 LoRA微调SAM:只改2%参数,速度3倍,显存降到8GB。 DiceFocal损失:边界贴…...

从体素到三维模型:解析Volumetric Method在复杂场景重建中的核心算法

1. 什么是Volumetric Method?从体素到三维世界的魔法 第一次接触三维重建时,我被那些从照片变成立体模型的演示惊呆了。后来才知道,这背后藏着一种叫Volumetric Method的技术,它就像用乐高积木搭建世界——把空间切成无数小方块&a…...

AI 编程盛行的时代,为什么 “『DC- WFW』” 仍然具有必要性?了

这&#xff0c;是一个采用C精灵库编写的程序&#xff0c;它画了一幅漂亮的图形&#xff1a; 复制代码 #include "sprites.h" //包含C精灵库 Sprite turtle; //建立角色叫turtle void draw(int d){for(int i0;i<5;i)turtle.fd(d).left(72); } int main(){ …...

YOLO+SAM工业缺陷检测:从理论到落地的完整方案

YOLOSAM工业缺陷检测&#xff1a;从理论到落地的完整方案一、痛点 PCB质检中&#xff0c;人工标注缺陷边界8分钟/张。YOLO框不准&#xff0c;SAM对工业缺陷水土不服。 二、解决方案 LoRA微调SAM&#xff1a;只改2%参数&#xff0c;速度3倍提升&#xff0c;显存24GB→8GB。 Dice…...

银河麒麟V10 SP1安全基线配置踩坑记:为什么pam_wheel.so的group=wheel参数不生效?

银河麒麟V10 SP1安全基线配置实战&#xff1a;pam_wheel.so参数差异深度解析 第一次在银河麒麟V10 SP1服务器上配置安全基线时&#xff0c;我遇到了一个令人费解的问题。按照行业标准做法&#xff0c;我在/etc/pam.d/su文件中添加了auth required pam_wheel.so groupwheel配置&…...

EnCase vs FTK vs 取证大师:三大取证工具实战横评与选型指南(2024版)

EnCase vs FTK vs 取证大师&#xff1a;2024年电子取证工具深度横评与实战选型指南 当一起涉及企业数据泄露的案件摆在面前时&#xff0c;取证专家小李面对着三台装载不同软件的设备犹豫不决——EnCase的专业深度、FTK的全面覆盖&#xff0c;还是取证大师的本土化优势&#xf…...

轴向磁通电机仿真避坑指南:ANSYS Maxwell 3D建模时气隙与对称性的7个关键设置

轴向磁通电机3D仿真进阶指南&#xff1a;从参数校准到高效求解的实战技巧 轴向磁通电机因其紧凑结构和高效能特性&#xff0c;正在新能源车、航空航天等领域获得广泛应用。但不同于传统径向电机&#xff0c;其三维电磁场分布的复杂性使得仿真过程常成为工程师的"噩梦"…...

4重防护打造微信记录安全备份:开源工具实战指南

4重防护打造微信记录安全备份&#xff1a;开源工具实战指南 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 场景痛点&#xff1a;数字记忆的脆弱防线 你是否曾在手机突然…...