Computer program that learns to play classic NES games
suckerpinchYouTube ↗
延伸阅读 3
字幕解读
Tom7 介绍其用 NES 内存状态自动玩游戏的实验:先记录人工游玩时逐帧的 RAM,再从内存字节中学习按字典序递增的进度指标;程序随后只看内存并搜索能让指标上升的按键序列。为避免纯贪心导致乱按,他加入对随机未来输入序列的规划。方法在以向右推进为主要目标的平台游戏中效果较好,也会利用游戏漏洞;作者展示其在吃豆人、泡泡龙和俄罗斯方块等不同结构游戏中的表现差异,并指出规划视野有限。
自动字幕 · 引文按字幕原文展示,可点时间戳回看片段。
内容要点
- 方法从人工游戏轨迹中学习 RAM 字节的字典序指标,将其作为自动搜索按键的目标函数。
- 候选按键规划会测试多种短操作和随机未来序列,以更长远的指标变化选择行动。
- 有明显空间推进梯度的横版游戏较适合该方法;需要更长远策略或目标不单调的游戏会暴露局限。
视频章节 6
- 从 NES 内存自动玩游戏
- 用字典序识别游戏进度
- 搜索按键与改进规划
- 训练数据与目标函数
- 修复漏洞后的马力欧表现
- 跨游戏结果与方法边界
具体观点与证据 3
PlayFun从人类示范的RAM变化学习进度指标,再搜索让内存字节序上升的输入,不依赖画面识别。
这是特定NES模拟器与内存表示下的方法。
It's just looking at RAMs and it's trying to find sequences of inputs相对随机未来输入序列进行短序列规划,比逐帧贪心更容易形成跨越障碍的连贯动作。
仍是有限规划视野,未解决长期战略。
keep track of a bunch of random future inputs that we might execute俄罗斯方块展示短视优化的失败:堆叠得分诱导坏布局,最后暂停游戏来避免立即失败。
不能把暂停当作系统理解胜负或通用智能的证据。
playing Tetris well requires some thinking ahead, and this algorithm does not think very far ahead.补充字幕原文 2
作者以调侃语气概括方案:用简单的数学代理目标直接驱动游戏搜索。
this is a really simple, mathematically elegant and stupid technique作者将俄罗斯方块表现不佳归因于算法前瞻深度不足,说明目标代理和搜索视野限制了可处理任务。
this algorithm does not think very far ahead解读边界
进度代理指标来自 RAM 字节的递增规律,依赖游戏内部状态与目标结构;作者展示的效果跨游戏差异很大,且有限的前瞻规划不适合需要深远策略的任务。