DeepLearningVideoGames

GitHub
1.1k 216 较难 1 次阅读 1周前其他
AI 解读 由 AI 自动生成,仅供参考

DeepLearningVideoGames 是一个基于深度强化学习的开源项目,旨在让计算机通过观察屏幕像素直接学会玩电子游戏。它主要解决了传统算法难以从高维视觉输入(如原始画面)中自动提取策略并做出最优决策的难题,成功在《乒乓》和《俄罗斯方块》等游戏中实现了超越人类水平的表现。

该项目适合对人工智能、强化学习或游戏 AI 感兴趣的开发者与研究人员使用。用户无需手动编写复杂的游戏规则代码,只需提供游戏画面,系统便能自主探索并掌握高阶控制策略。其核心技术亮点在于结合了卷积神经网络(CNN)与深度 Q 网络(DQN),利用贝尔曼方程不断优化动作价值函数,从而直接从像素数据中近似未来预期奖励。这种方法具有极强的通用性,模型架构无需针对新游戏进行大幅调整即可迁移应用,为理解深度学习如何掌握复杂控制任务提供了宝贵的实践参考。

使用场景

某独立游戏开发团队希望为复古街机游戏《Pong》和《俄罗斯方块》构建无需硬编码规则的自适应 AI 对手,以测试游戏平衡性。

没有 DeepLearningVideoGames 时

  • 开发者必须手动编写复杂的决策树或状态机来定义每种游戏局面下的应对策略,工作量巨大且难以覆盖所有边界情况。
  • 传统规则型 AI 缺乏泛化能力,一旦游戏机制微调(如球速变化或方块下落加速度改变),就需要重新人工调整大量参数。
  • 难以模拟真实人类玩家的“学习曲线”,AI 要么过于笨拙,要么因计算完美路径而显得不自然,无法用于评估游戏的长期可玩性。
  • 处理原始像素输入极其困难,传统方法依赖人工提取特征(如球的位置坐标),导致系统对画面渲染的改动非常敏感。

使用 DeepLearningVideoGames 后

  • 团队直接输入屏幕原始像素数据,利用深度 Q 网络(DQN)让 AI 通过强化学习自动探索并掌握最优控制策略,完全省去了人工编写规则的过程。
  • 模型展现出极强的泛化性,在《Pong》上训练好的架构无需修改即可迁移至《俄罗斯方块》,快速适应不同游戏的核心逻辑。
  • AI 表现出超越人类高手的水平,同时保留了从“新手”到“专家”的学习过程,为游戏难度分级测试提供了真实的动态对手。
  • 系统自动从视觉信息中提取高层特征,不再依赖人工定义的坐标数据,使得 AI 能直接适配任何基于像素渲染的游戏版本。

DeepLearningVideoGames 通过将原始视觉输入与强化学习结合,实现了从零开始自动习得复杂游戏策略的能力,彻底改变了传统游戏 AI 的开发范式。

运行环境要求

操作系统
  • 未说明
GPU

需要 NVIDIA GPU (基于 AWS G2 large 实例),具体显存和 CUDA 版本未说明

内存

未说明

依赖
notes该项目基于 Minh et al. 2015 的论文实现,使用 Google 的 TensorFlow 库。训练在 Amazon Web Services (AWS) 的 G2 large 实例上进行。输入图像需预处理为灰度、80x80 分辨率并堆叠最后 4 帧。训练前需随机行动填充回放记忆(50,000 步),随后进行线性退火探索。
python未说明
TensorFlow
DeepLearningVideoGames hero image

快速开始

使用深度 Q 网络学习视频游戏策略

尼基塔·斯里瓦茨安、伊万·库兹涅佐夫、威利斯·王

1. 摘要

在本项目中,我们应用了 Minh 等人于 2015 年提出的一种深度学习模型 [1],通过强化学习从视觉输入中学习最优控制模式。尽管该方法具有高度的通用性,但我们将其应用于视频游戏策略问题,特别是乒乓球和俄罗斯方块游戏。给定屏幕上的原始像素值,我们使用卷积神经网络,并结合 Q 学习进行训练,以近似任何可能动作的未来预期奖励,然后根据最佳可能结果选择行动。我们发现,这种方法无需调整模型架构即可泛化到新问题。经过充分训练后,我们的乒乓球模型在游戏中表现优于人类水平,这表明深度学习作为一种强大且通用的方法,在学习高层次控制方案方面具有巨大潜力。

2. 背景

强化学习通过为模型选择的动作提供反馈来发展控制模式,从而鼓励模型在未来选择更优的动作。在每个时间步,给定某种状态 s,模型会选择一个动作 a,随后观察新的状态 s' 以及基于某种最优性准则的奖励 r。

我们具体使用了一种称为 Q 学习的方法,该方法利用动作-价值(Q)函数来近似在给定状态下执行某一动作所能获得的最大预期回报。具体而言,回报是指从当前状态到游戏结束期间所有奖励的总和,其中每一步的奖励都会按因子 γ 进行折现。我们将其形式化定义如下:

alt-text

接着我们定义动作-价值函数:

alt-text

需要注意的是,如果已知状态 s' 的最优 Q 函数,那么我们可以将先前状态 s 的最优 Q 函数表示为 alt-text 的最大期望值。这一关系被称为贝尔曼方程:

alt-text

强化学习的核心思想是基于贝尔曼方程,不断根据观测结果更新动作-价值函数。Sutton 等人于 1998 年的研究 [2] 表明,随着迭代次数的增加,此类更新算法最终会收敛到最优动作-价值函数。基于此,我们可以将 Q 定义为神经网络的输出,其权重为 θ,并通过在每次迭代 i 中最小化以下损失函数来训练该网络:

alt-text

其中 y_i 表示我们在每次迭代中希望逼近的目标函数,其定义如下:

alt-text

需要注意的是,当 i 等于某一轮次的最后一步(即游戏结束时),Q 函数应为 0,因为在游戏结束后不可能再获得额外奖励。因此,当 i 等于某一轮次的终止帧时,我们可以直接写成:

alt-text

3. 相关工作

传统方法通常使用数组来近似动作-价值函数。然而,随着系统复杂度的增加,这种方法的扩展性较差。Tesauro 在 1995 年提出了 TD-Gammon 方法,该方法使用单隐层的多层感知器。该方法在西洋双陆棋游戏中表现良好,但无法推广到其他问题。

较近的 Riedmiller 在 2005 年提出了一种名为神经拟合 Q 学习的系统,该系统同样使用多层感知器来近似 Q 函数。然而,这种方法存在一些问题:它采用批量更新的方式进行训练,计算成本与数据集大小成正比,这限制了系统的可扩展性。此外,Riedmiller 所研究的任务状态空间维度非常低。而对于视频游戏问题,我们需要处理极高维度的视觉输入,并且不能让系统了解游戏的内部状态或规则。

Minh 等人在 2015 年提出了深度 Q 学习,该方法使用深度卷积神经网络来计算 Q 函数。卷积神经网络特别适合处理视频游戏中的视觉状态空间。此外,他们还提出了一种新的训练方法。虽然在线训练容易出现发散或过拟合的问题,而对整个数据集进行训练的成本又非常高昂,但 Minh 等人采用了从回放记忆中随机抽取的小批量数据进行训练。回放记忆存储了所有之前观察到的状态转移及其对应的动作和奖励。在每个时间步,都会从回放记忆中随机抽取一个小批量的状态转移,并针对该批次的数据最小化上述损失函数,同时更新网络权重。

除了上述计算成本方面的优势外,这种方法还有许多其他优点。通过使用回放记忆,每一次经验都可以在多次更新中被重复利用,从而更有效地利用数据。另外,采用在线训练方式的一个缺点是连续的更新往往基于高度相关的状态,这可能导致网络陷入较差的局部最优解,甚至发生严重发散。而通过使用多样化的经验进行批量训练,则可以平滑更新过程,避免这些问题的发生。

4. 深度 Q 学习算法

参考文献 [1] 中给出的深度 Q 学习算法伪代码如下:

初始化回放记忆 D,容量为 N
初始化动作-价值函数 Q,随机设置权重
对于每轮游戏 episode = 1, M do
    初始化状态 s_1
    对于每个时间步 t = 1, T do
        以概率 ϵ 随机选择动作 a_t
        否则选择 a_t=argmax_a  Q(s_t,a; θ_i)
        在模拟器中执行动作 a_t,观察 r_t 和 s_(t+1)
        将状态转移 (s_t,a_t,r_t,s_(t+1)) 存入 D
        从 D 中随机抽取一个小批量的状态转移 (s_j,a_j,r_j,s_(j+1))
        设置 y_j:=
            如果 s_(j+1) 是终止状态,则 y_j:=r_j
            如果 s_(j+1) 不是终止状态,则 y_j:=r_j+γ*max_(a^' )  Q(s_(j+1),a'; θ_i)
        对 (y_j-Q(s_j,a_j; θ_i))^2 求梯度,并更新 θ
    结束循环
结束循环

5. 实验方法

网络在每个时间步从游戏中观察到的原始像素值上进行训练。我们对图像进行了预处理:将其转换为灰度图,调整大小至80×80,并将最近的四帧堆叠在一起,形成一个80×80×4的输入张量。

网络的架构如图1所示。第一层使用8×8×4×32的卷积核,步长为4,对输入图像进行卷积运算,随后通过一个2×2的最大池化层。第二层使用4×4×32×64的卷积核,步长为2,再进行一次最大池化。第三层使用3×3×64×64的卷积核,步长为1,最后再进行一次最大池化。最后一层隐藏层包含256个全连接的ReLU节点。

alt-text

输出层通过简单的矩阵乘法得到,其维度与游戏中可执行的有效动作数量相同,其中第0个索引始终对应于“不做任何操作”。该输出层的值表示在给定输入状态下,针对每个有效动作的Q函数值。在每个时间步,网络会根据ϵ-贪心策略选择具有最高Q值的动作。

在程序启动时,我们使用标准差为0.01的正态分布随机初始化所有权重矩阵,偏置变量则均初始化为0.01。随后,我们将回放缓冲区的容量设置为50万条经验样本。

训练开始时,我们在前5万个时间步内以均匀随机的方式选择动作,但不更新网络权重,以便在正式训练开始前填充回放缓冲区。之后,我们在接下来的50万帧中将ϵ从1线性退火至0.1。在此期间,网络每一步都会从回放缓冲区中采样100个样本的小批量进行训练,并使用Adam优化算法、学习率为0.000001来更新损失函数。当退火过程结束后,网络将继续无限期地训练,此时ϵ固定为0.1。

我们使用亚马逊云服务G2大型实例,在GPU上高效地进行训练。DQN模型是基于谷歌新发布的TensorFlow库实现的。

6. 结果

请参阅以下链接观看DQN实际运行的视频:

DQN长时间玩Pong游戏

卷积层及Q函数可视化

我们发现,对于Pong游戏,大约经过138万个时间步(约25小时的游戏时间)后,模型便能取得较好的效果。从定性上看,网络的表现达到了有经验的人类玩家水平,通常以20比2的比分获胜。图2展示了前约2万个训练步骤中的最大Q值。为避免画面过于杂乱,仅显示了每连续1250个训练步骤中前100个步骤的最大Q值。可以看出,最大Q值随着时间推移而逐渐上升,这表明随着训练的深入,网络预期每局获得的奖励也在增加。理论上,随着训练的持续进行,最大Q值应趋于平稳,直至网络达到最优状态。

alt-text

网络中输入图像帧的最终隐式表示是一个256维的向量。图3展示了约1200个此类表示的t-SNE嵌入结果,这些表示是在训练25小时后、网络权重保持不变的情况下,于2小时内采样得到的。图中各点还根据该帧输出层的最大Q值进行了颜色编码。

alt-text

图中左侧为由网络控制的球拍,以黄色突出显示以便观察;右侧则是由游戏内置的硬编码AI控制的“对手”球拍。从图像帧中可以看出,当球靠近对手球拍时,最大Q值较高,这意味着网络有较大的得分概率;反之,当球靠近网络控制的球拍时,最大Q值较低,网络失分的可能性较大。而当球位于球场中央时,则对应的最大Q值处于中性水平。

目前,我们也在积极尝试让系统学习Tetris游戏。随着这一方向的进一步进展,本节内容将及时更新。

7. 结论

我们利用深度Q学习训练了一个神经网络,使其仅通过当前游戏画面的图像,在不了解游戏内部状态的情况下,部分地学会玩Pong和Tetris。从定性角度来看,训练好的Pong网络的表现接近人类水平。目前我们仍在继续训练该系统来玩Tetris,并希望在不久的将来能够报告令人满意的结果。

随后,我们证明了Pong网络对当前游戏状态具有相对较高的“理解”能力。例如,当球靠近对手的球拍时,网络的输出值达到最大,这正是预期可能得分的时刻;而当球靠近本方球拍时,网络的输出值则降至最低,因为此时存在失分的风险。

当前的网络架构仍有很大的改进空间。比如,我们所采用的最大池化操作可能是不必要的,因为它使得深层卷积核的尺寸与前一层的尺寸相当,从而可能导致有用信息的丢失。如果有更多时间,我们希望能够进一步调整网络的各项超参数,如学习率、批量大小、经验回放池以及观察期和探索期的长度等。此外,还可以尝试在调整游戏参数(例如略微改变球的反弹角度)的情况下测试网络的表现,这将为我们提供关于网络能否将学习成果外推到新情境的重要信息。

根据Tetris和Pong实验结果的差异,我们还应预期,对于那些奖励(无论是正向还是负向)频繁出现的游戏,即使在网络随机行动时,系统也能更快地收敛。这使我们相信,尽管理论上我们的系统可以学习任何游戏,但它在格斗类或其他类似类型游戏中——这类游戏往往在短时间内分数变化迅速——可能会更快地达到人类水平的表现。这或许是一个值得未来深入探索的方向。

总之,本研究的结果表明,正如文献[1]所提出的那样,卷积神经网络确实适用于执行深度Q学习。然而,我们目前仅将其应用于较为简单的游戏;事实上,卷积神经网络在更为复杂的图像处理和目标识别任务中也得到了广泛应用。这说明我们可以将此处介绍的方法推广到更具挑战性的任务中。可以预见,这一领域的进一步研究必将带来更加丰富的成果。

8. 参考文献

[1] Mnih, Volodymyr, Koray Kavukcuoglu, David Silver, Andrei A. Rusu, Joel Veness, Marc G. Bellemare, Alex Graves, Martin Riedmiller, Andreas K. Fidjeland, Georg Ostrovski, Stig Petersen, Charles Beattie, Amir Sadik, Ioannis Antonoglou, Helen King, Dharshan Kumaran, Daan Wierstra, Shane Legg, and Demis Hassabis. Human-level Control through Deep Reinforcement Learning. Nature, 529-33, 2015.

[2] Richard Sutton and Andrew Barto. Reinforcement Learning: An Introduction. MIT Press, 1998.

[3] Gerald Tesauro. Temporal difference learning and td-gammon. Communications of the ACM, 38(3):58–68, 1995.

[4] Martin Riedmiller. Neural fitted q iteration–first experiences with a data efficient neural reinforcement learning method. In Machine Learning: ECML 2005, pages 317–328. Springer, 2005.

相似工具推荐

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85.3k|★★☆☆☆|昨天
图像数据工具视频

funNLP

funNLP 是一个专为中文自然语言处理(NLP)打造的超级资源库,被誉为"NLP 民工的乐园”。它并非单一的软件工具,而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。 面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点,funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具,还独特地收录了丰富的垂直领域资源,如法律、医疗、金融行业的专用词库与数据集,甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性,从基础的字典词典到前沿的 BERT、GPT-2 模型代码,再到高质量的标注数据和竞赛方案,应有尽有。 无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师,还是从事人工智能研究的学者,都能在这里找到急需的“武器弹药”。对于开发者而言,它能大幅减少寻找数据和复现模型的时间;对于研究者,它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神,极大地降低了中文自然语言处理的开发与研究成本,是中文 AI 社区不可或缺的宝藏仓库。

79.9k|★☆☆☆☆|1周前
语言模型数据工具其他

cs-video-courses

cs-video-courses 是一个精心整理的计算机科学视频课程清单,旨在为自学者提供系统化的学习路径。它汇集了全球知名高校(如加州大学伯克利分校、新南威尔士大学等)的完整课程录像,涵盖从编程基础、数据结构与算法,到操作系统、分布式系统、数据库等核心领域,并深入延伸至人工智能、机器学习、量子计算及区块链等前沿方向。 面对网络上零散且质量参差不齐的教学资源,cs-video-courses 解决了学习者难以找到成体系、高难度大学级别课程的痛点。该项目严格筛选内容,仅收录真正的大学层级课程,排除了碎片化的简短教程或商业广告,确保用户能接触到严谨的学术内容。 这份清单特别适合希望夯实计算机基础的开发者、需要补充特定领域知识的研究人员,以及渴望像在校生一样系统学习计算机科学的自学者。其独特的技术亮点在于分类极其详尽,不仅包含传统的软件工程与网络安全,还细分了生成式 AI、大语言模型、计算生物学等新兴学科,并直接链接至官方视频播放列表,让用户能一站式获取高质量的教育资源,免费享受世界顶尖大学的课堂体验。

79.8k|★☆☆☆☆|1周前
其他图像数据工具

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|2周前
Agent图像开发框架

PaddleOCR

PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。

75.9k|★★★☆☆|今天
语言模型图像开发框架

awesome-machine-learning

awesome-machine-learning 是一份精心整理的机器学习资源清单,汇集了全球优秀的机器学习框架、库和软件工具。面对机器学习领域技术迭代快、资源分散且难以甄选的痛点,这份清单按编程语言(如 Python、C++、Go 等)和应用场景(如计算机视觉、自然语言处理、深度学习等)进行了系统化分类,帮助使用者快速定位高质量项目。 它特别适合开发者、数据科学家及研究人员使用。无论是初学者寻找入门库,还是资深工程师对比不同语言的技术选型,都能从中获得极具价值的参考。此外,清单还延伸提供了免费书籍、在线课程、行业会议、技术博客及线下聚会等丰富资源,构建了从学习到实践的全链路支持体系。 其独特亮点在于严格的维护标准:明确标记已停止维护或长期未更新的项目,确保推荐内容的时效性与可靠性。作为机器学习领域的“导航图”,awesome-machine-learning 以开源协作的方式持续更新,旨在降低技术探索门槛,让每一位从业者都能高效地站在巨人的肩膀上创新。

72.1k|★☆☆☆☆|2周前
开发框架其他