摘要:Id Software 成立于 90 年代,作为创始人之一,我参与开发了《指挥官基恩》、《德军总部 3D》、《毁灭战士》和《雷神之锤》系列。我深感自豪的是,《雷神之锤》推动了 GPU 的发展和普及,间接促成了现代人工智能世界的形成。DeepMind 的 DML
作者丨 John Carmark
译者丨明知山
策划丨 Tina
快速背景介绍
Id Software
Id Software 成立于 90 年代,作为创始人之一,我参与开发了《指挥官基恩》、《德军总部 3D》、《毁灭战士》和《雷神之锤》系列。我深感自豪的是,《雷神之锤》推动了 GPU 的发展和普及,间接促成了现代人工智能世界的形成。DeepMind 的 DMLab 环境也是基于《雷神之锤竞技场》的净化版本构建的。
Armadillo Aerospace
与此同时,我在 Armadillo Aerospace 工作了十年,致力于垂直起降(VTVL)火箭的研发。
Oculus
更近一些,我在 Oculus(后被 Meta 收购)为现代虚拟现实奠定了技术基础。
Keen Technologies
我还在 Meta 的时候,OpenAI 创始人试图向我伸出橄榄枝。我深感荣幸,但我并非 AI 领域的专业人士。
我进行了大量的阅读,形成了一些关于当前局势的看法,并最终确定这就是我能够参与的最重要的事情。
从系统工程转向研究工作对我来说是一个非常大的变化,但我很享受这个过程。
能与强化学习之父 Richard Sutton 一起工作实属意料之外的惊喜。我之前“阅读”的一部分内容就是他写的教科书,而且读了两遍。我们在很多观点上不谋而合,但也有一些有建设性的分歧。
目前,我们的团队已经有六名研究人员,他们分别来自学术界和工业界。
我原本以为自己会走向何方
不是 LLM
我有意选择不参与 LLM 相关的工作。LLM 所取得的成就令人惊叹,但我认为,除了专业人士之外,很多人都没有充分意识到 LLM 是如何“无所不知却又无所学”的。
从根本上说,我相信通过交互式体验流进行学习的重要性,就像人类和动物所做的那样,这与预训练 LLM 的“大杂烩”方法截然不同。大杂烩方法仍然可以带来世界性的变革,但已经有很多人在这一领域推进技术前沿发展了。
尽管如此,对于基于 Transformer 的基础模型可能取代传统强化学习,我是感到疑虑的。你能要求 LLM 学习如何在一个它的训练集里从未见过的环境中有良好的表现吗?即使这种方法在理论上可行,但可能极其低效,将是一个重要的“苦涩教训”。
游戏
鉴于我的背景,我显然更倾向于与游戏和虚拟环境打交道。
长期以来,PC 游戏一直存在超人类水平的“机器人”,这些机器人通常用于作弊,但它们是直接通过查看游戏内部结构实现的,而不是像玩家那样处理看到的像素。我很久以前就说过,云游戏流媒体可以消除游戏中常见的多人作弊手段,因为没有人能够只基于像素制作出一个程序来玩游戏。如果有人能做到,他们完全有资格获得胜利!
2013 年,DeepMind 的 Atari 项目就是这么做的。
单从游戏模拟器的输出图像来看,模型学会了如何玩好几十款游戏,足以制作出令人印象深刻的视频。
然而,如果你仔细观察,会发现其中有很多限制条件。
文献中报告的标准经验量是 2 亿帧,按每秒 60 帧计算,这相当于连续玩一个多月,每天 24 小时不间断。这与一个普通研究生在一小时内就能学会玩游戏的表现相比,似乎并不那么令人印象深刻。此外,有些游戏需要更专业的架构和数十亿帧的经验,才能接近人类的基线水平。
但从另一面看,这就像一个婴儿在出生后刚睁开眼睛,一个月内就学会了玩游戏,这听起来确实相当令人印象深刻。
过去十年中,相关工作一直在继续,但连续、高效、终身、单一环境、多任务在线学习仍然是尚未解决的问题。一些猫和狗能够轻松做到的事情,如今的任何一个系统都无法复制。
视频
我最初的想法是,通过被动地从带有动态关注焦点的电视内容中学习,可以为游戏学习提供更好的基础——如果你理解了物体的永恒性,那么学习电子游戏中的事件就会容易得多,而不是去分析整个帧的模式。
我的目标是提供一个由混合被动和交互内容组成的虚拟学习环境,这些内容构成一个无限可滚动的“视频墙”,智能体可以根据自己的好奇心在其中探索和迁移。
失策
太底层
我是一个底层开发者,我从用 C++ 编写 CUDA 内核开始,然后用 cuBLAS,接着是 cuDNN,最后才转向 PyTorch。我仍然关注底层实现的可能性,但不可否认的是,更高层次的工具在快速实验方面确实非常强大。
避免大规模实验太久
花了太多时间在笔记本和本地 GPU 上,而没有直接使用远程主机上的 Visual Studio Code。
世嘉 Master System
我最初选择世嘉 Master System 游戏,一方面是为了在复杂度上超越 Atari 游戏,另一方面也想追求一些与众不同,但我逐渐意识到,与大量关于 Atari 游戏的研究成果进行比较其实具有很大的价值。
视频可以等等
只是玩多款游戏就存在许多基础性问题,所以没有必要把被动的视频理解也考虑进来。
安下心来研究 Atari
无偏见且多样化
商业游戏之所以出色,是因为它们没有受到研究人员的偏见的影响。当你构建一个专门的环境来测试你特别喜欢的研究想法时,你往往会不自觉地让这个想法看起来更好。
游戏玩法的多样性是一个很大的优势。为什么 Qbert 在这里停滞不前?为什么 Atlantis 在那里渐失锋芒?为何同一技术在此地大放异彩,却在彼地黯然失色?
缺点:由于旧硬件的限制,会出现精灵闪烁的问题。我喜欢世嘉 Master System 模拟器的一点是,你可以关闭对精灵和 CPU 速度的精确模拟,这样游戏总是运行流畅且看起来很稳定。
缺点:确定性的行为存在被恶意利用的风险。粘性动作对于防止模拟器的确定性被利用来说非常重要。可惜的是,Atari 100k 的测试结果是基于确定性动作得出的。
深厚的研究历史
我们有大量的先例可供参考。
也许强化学习框架并不是一个好主意——即使是几年前开发的东西运行起来也可能带来麻烦。
直接使用 ALE(Arcade Learning Environment),而不是通过 Gymnasium 进行包装。
Atari 的问题难道不是已经解决了?
MEME、Muesli 或 BBF 这些最新的模型是否已经“解决了”Atari 的问题?
在积累了数亿帧的游戏数据后,大多数游戏的得分现在都已接近甚至超过了人类得分。虽然仍有改进的空间,但我对此并不特别感兴趣。
最近,针对 Atari 100k 基准测试的学习趋势看起来很有趣。BBF 和 Efficient Zero 在数据效率方面取得了显著进步,但也存在一些限制条件。
结果波动较大——随机种子和随机游戏,游戏回合长度范围很广:完整的《Pitfall!》游戏需要 20 分钟,即 72000 帧。
在最终评估与训练过程中的得分之间进行比较时,对训练过程中的得分进行平滑处理可能会导致偏差偏低。
在高分情境下,评估细节非常重要。以 MuZero 为例,许多随机种子的完美《Breakout》得分令人存疑,尤其是当采用粘性动作机制时。
为什么不是 Pokemon 或 Minecraft?
滚动游戏和 3D 游戏无疑会带来新的挑战,但简单的 Atari 游戏仍有许多未解决的问题,让事情变得更复杂并不能帮助解决这些问题。
系统或游戏变得更加复杂时,研究者或玩家可能会被强烈吸引去查看内部数据结构,而不是仅仅依赖于像素来获取信息——作弊!
现实并非回合制游戏
别再把 Atari 当作一个回合制棋盘游戏来对待了,在这类游戏中,环境会耐心等待玩家做出动作,随后立刻执行并展示结果。
现实世界不会因你忙于处理上一个观察结果而暂停脚步。
反转强化学习软件环境——在这种模式下,智能体主动发起交互,而不是被动等待环境的调用。这种设计既适用于虚拟模拟,也适用于物理环境。
单一环境
有些智能体是通过在多个环境中并行运行来训练的,重要的是要明白,这比在单一环境中训练要容易,因为你每次更新时都能获得更多样化的样本。
更大批次的运行环境仍然能够显著提高学习效率,这对于训练人工通用智能(AGI)来说很重要,但如果单批次运行无法有效学习,那么算法本身可能存在问题,我们应该找出并解决这些问题。
速度
第一个关键问题是,你只能以你的策略能够被评估的频率来采取行动。在消费级硬件上,经典算法的合理实现可以达到 15 FPS,并且可以重复 4 次动作,但一些新的数据高效的系统却慢了几个数量级。
我喜欢 CUDA 图。
通过使用具有不同优先级的 CUDA 流和显式同步,将训练过程与环境交互以及可能的策略工作重叠起来。
延迟
第二个关键问题是,你在观察到某个状态后选择的动作,在相当长的一段时间内都不会产生任何效果。值得尝试一下那些基于网络的反应时间测试工具——你会发现自己的平均反应时间超过 160 毫秒。
大多数经典的无模型强化学习算法能够很好地适应额外的延迟,性能下降相对优雅——在《Breakout》中下降较快,在《Ms. Pac-Man》中下降较慢。然而,许多现代高性能算法在动作不能立即生效时就会崩溃,因为它们的预测模型假设了一种类似棋盘游戏的动作 - 效果行为。
通过为条件动作硬编码一个匹配的延迟队列,可以恢复这些算法的大部分性能,但这实际上是回避了需要解决的问题。
你可以在大多数强化学习框架中只用几行代码就为动作添加一个“延迟线”,我鼓励每个人都尝试一下,但“现实”当中可能还会有其他挑战。
Atari 的物理硬件
对于那些认为完全具身的 AGI 即将实现的人来说,一个现实的检验方法是让跳舞人形机器人拿起操纵杆,学习玩一款冷门的电子游戏。
这是 Atari 2600+ 游戏系统,它有一个可以对准游戏机屏幕的摄像头、伺服电机操纵杆以及一台实时运行强化学习智能体的笔记本电脑。
使用 40 年前的经典 Atari 2600 游戏机和物理 CRT 显示器可以避免 2600+ 系统中模拟器带来的额外延迟,从而降低系统延迟,但这并不是挑战的主要部分。
我们将开源这项工作。
游戏选择
我们正在测试八款不同的游戏:MsPacman、Centipede、Qbert、Defender、Krull、Atlantis、UpnDown 和 Battle Zone。
许多 Atari 游戏在游戏结束后需要你按下控制台上的重置开关才能重新开始游戏,但有些游戏只需按下操纵杆按钮即可。我们可以在控制台上再固定一个伺服电机,但已经有足够多的游戏可以“按下即重启”。
摄像头观察
Atari 的完整分辨率仅为 160x210,但几乎所有的研究工作都会进一步降低分辨率,因此不需要超高分辨率的摄像头。使用 640x480 分辨率进行学习效果很好,但在识别 April Tags 和读取分数时,1920x1080 分辨率会更有帮助。
许多 USB 摄像头会对图像进行 JPEG 编码,这不仅会降低图像质量,还会增加延迟,应避免使用。
摄像头扫描与多层 CNN 处理的重叠程度也是个有趣的问题。传统的摄像头接口会在整个图像扫描完成后才传输图像,这意味着顶部像素比底部像素“旧”了 16 毫秒。
由于摄像头和视频扫描不同步导致的扫描线问题并不是个问题。
你可以在没有对屏幕进行特殊裁剪的情况下进行学习,但如果你想让模型在摄像头位置变化时保持性能,就需要识别出屏幕上对模型重要的部分。屏幕校正和 April Tags 可以帮助实现这一目标。
对于标签识别来说,照明可能是一个重要问题。
操纵杆动作
Robotroller:Khurram 设计了一个很好的系统,使用伺服电机来控制操纵杆。这增加了更多的延迟和行为的变异性。
机器人可靠性——多个伺服电机故障和操纵杆故障。
动作分解问题——Atlantis 的侧移和发射。
大多数 Atari 强化学习模型没有将最后选择的动作作为新观察的一部分,但这可能很重要。
上上下下左右左右 BA:科纳米代码不仅是一个具体的例子,也是一个可以说明强化学习局限性的例子。
分数和生命值检测
令人感到惊讶的是,这个项目中最棘手的问题竟然是可靠地读取分数,而这是强化学习算法所必需的。
自从 MNIST 数据集出来之后,这个问题不是已经得到解决了吗?
你可以问多模态 LLM 截图中的分数是多少,它会告诉你的。
我们有几种不同的分数读取器,但仍然担心它们在公开使用时会表现不佳。
一些游戏因为分数并不总是可见而被排除:
《Yar's Revenge》的分数大部分时间都是隐藏的;
《Berzerk》会移动分数显示位置,并且显示不同的内容;
《Qbert》在玩家处于顶部时隐藏分数,但这并不致命。
Atari 开发工具箱
用于校正的发光的 April Tags 和用于读取分数的 April Tags。
稀疏奖励 / 好奇心
强化学习算法需要密集的奖励,这是一个例外,而不是大多数任务的常态。我们希望一个具有经济价值的智能体能够在只有最终奖励的情况下执行一系列长动作。
人们在玩游戏时的关注点可能并不总是分数。在一些游戏,如《Yar's Revenge》中,分数只在关卡之间才显示!
分数的相对高低可能并不能准确反映玩家的实际表现或游戏的难度,例如在《Breakout》和《Space Invaders》中,击中更高的目标就可以得到更高的分数。
硬探索游戏
像《蒙特祖玛的复仇》和《Pitfall》这样的“硬探索游戏”一直是长期的研究课题,并且已经取得了一些进展,但要达到人类水平还有几个数量级的差距,而且不清楚我们是否走在正确的道路上。
我们可以只在游戏结束或失去生命值时给予总的奖励,将每一款游戏变成硬探索游戏。
由人工好奇心驱动的内在奖励。它可能会最终学会读取屏幕上可见的分数作为一种内在奖励。
元好奇心
如果一个人类被关在一个只有 Atari 游戏的房间里,我们期望他会如何表现?
玩一款游戏一会儿,感到无聊了,然后切到另一款游戏。
有些游戏很难取得进展,会被放弃。
因在一款游戏上获得新的前十名分数而获得奖励,与平均人类正常分数成正比。
对于那些获得远远超过人类水平的表现的游戏,需要有一些递减机制。
需要保持最佳平均分数,这样就没有动机在一段时间内故意得分很低,然后突然得分很高。
需要强迫他尝试其他游戏吗?
最短游戏时间?在游戏结束时做出更换游戏的决定?
智能体可以“愤怒退出”吗?
串行多任务学习
串行比并行难得多
已经有演示表明,一个单一智能体可以并行学习许多游戏,但智能体应该能够在一款游戏上达到熟练程度,然后花费数百万步学习其他任务,之后再回到这款游戏,并且能够非常迅速地恢复到之前的水平。人类即使在多年没有间歇性练习的情况下,也能保留多年前掌握的大部分技能。
这种情况在目前的在线学习中并没有发生——当重新回到老游戏时,游戏表现几乎接近随机水平。虽然之前学到的内容并没有完全丢失,重新学习的速度也比最初快,但这种表现是不可接受的。
神经网络训练有非常强烈的近期偏差,并且倾向于遭遇“灾难性遗忘”。
在传统模型中,更新内容本质上都至少会在一定程度上改变一些东西。你可以希望在学习不同任务时,权重更新大多是平衡的随机噪声,但即使是随机的,也会在数十亿步之后变得具有破坏性。
Richard 和 Joseph 喜欢“流式强化学习”的理念,这种理念摒弃了回放缓冲区,但我怀疑他们是否能够在数天的训练中学习多样化任务。生物大脑当然不会存储可以被召回的原始观测数据,但长期情景记忆确实与简单的策略评估有所不同。
减少损失:学习率调整、稀疏性、错误校正。
完美记忆所有历史是可行的,我们可以存储数万亿字节的观测数据。
没有任务 ID!
显式输入任务 ID 是作弊行为。在游戏的新关卡之间切换和切换游戏之间没有道德上的区别。
没有调整对齐!
任何用于探索或训练的学习过程中的超参数调整都应该是隐式的,而不是显式的。
离线强化学习
你记忆中的老游戏是一个离线强化学习问题。
即使你对一切都有完美的记忆,如果强化学习算法没有不断地“接受现实检验”,它们也可能会偏离正轨。离线学习是很难的。
为什么离线优化效果不好?
在线(传统)强化学习与离线强化学习的区别在于,在线强化学习通过采取可能因模型变化而产生的新动作不断地“测试”模型,而离线训练可能会自我引导进入一个未经现实检验的连贯幻想世界。
如今的 LLM 是用数百万规模的有效批次和随机样本进行训练的。我认为,这种巨大的批次不只是集群不断扩展的产物,实际上,这对于生成足够稳定的梯度以实现持续学习所有多样化信息来说是必不可少的。你绝对不能通过在线浏览语料库来训练 LLM,即使给它无限的时间——它会在“阅读”下一本书时忘记前一本。即使你用批量为 1 进行 IID 采样,也只能得到次线性性能,因为两个不同主题之间的引用可能相差一百万个优化步骤。
迁移学习
不要像傻瓜一样玩游戏
即使是最先进的智能体在学习一款新游戏时,也会表现得像个傻瓜。从“婴儿第一次睁开眼睛”的角度来看,这是可以理解的,但在花费数周时间精通数十款游戏之后,它应该能够更有效地开始一款新游戏。
Gotta Learn Fast
OpenAI 的“Gotta Learn Fast”挑战赛试图用《索尼克》游戏鼓励这种快速学习的能力,但获胜者选择在可用的 100 万步中从头开始训练智能体。
GATO
GATO 出现了负迁移学习——在并行学习其他游戏之后再学习一款新游戏会变得更困难。
仅仅做到不变得更糟,这本身就是一个挑战!
在持续使用过程中,网络的这种“可塑性丧失”现象在深度学习中是一个众所周知的现象,它甚至可能在某种程度上与生物大脑的老化有相似之处——老狗学不了新把戏。
可能有必要放弃一些初始的学习速度——“慢即是快”。
新基准
应该创建一个新的基准测试,循环通过一组游戏,并根据最后一个循环中的所有得分进行评判,这样就让原始学习速度与避免遗忘和利用迁移学习结合在一起。没有最小动作集。粘性动作。
你至少要打败从头开始学习的 BBF!
在回合中间切换游戏要小心——这可能会让算法认为它们毫无缘由地“死亡”了,这会导致它们产生幻觉。因此,除了“终止”信号外,还需要一个“截断”信号。
可塑性与泛化
它们是否相互冲突?
这很难说,因为我们并没有关于二者的强大的理论,但感觉二者可能存在一种内在的冲突,这种冲突应该被积极地解决,而不是被动接受。
泛化忽略细节,而可塑性涉及识别那些目前对你来说毫无意义的新模式。
事实与理解——强化学习中的策略和价值函数的产物与环境交互的简单的痕迹本质上是不同的。
你从事实中挖掘有价值的信息,然后形成理解。
泛化并不稳固。CNN 有一些有益的归纳偏差。
探 索
从整个动作空间中选择一个随机动作肯定是不对的。
动作空间分解
即使忽略模拟输入,现代游戏手柄也有数十亿种组合方式。
令人惊讶的是,18 个动作空间与 4 个动作空间的差异影响非常小——很快就会稳定在一个子集上,但这对探索仍然有影响。
即使有很小的几率选择随机动作,在许多游戏中也会严重限制得分。在《Breakout》中,当帧重复次数为 4 且球快速飞来时,向左而不是向右移动通常会导致丢掉一条命。
高分取决于非常低的ε-greedy 值——ε=0.9 的得分远低于ε=0.99。在玩《Qbert》时,有一半时间你都处于棋盘的边缘,如果随机推动操纵杆的方向错误,就会丢掉生命。对于那些需要按下发射按钮才能开始的游戏,如果ε=1.0 且价值函数不好,可能会永远卡住。
明确的策略或带温度参数的 softmax 贪婪策略。
选项?学习一组动作,就像我们学习一组特征一样。
时间尺度
为单个时间步选择动作肯定不对。
像《Breakout》这样的游戏在 60 FPS 的帧率下运行效果很好,但即使调整了折扣因子,以 60 FPS 的速度进行学习仍然效果不佳,因为动作间隔太小。
可变时间尺度选项可能很重要。
循环与帧堆叠
遗憾的是,帧堆叠作为一种状态表示方法在 Atari 游戏中非常有效,这使得循环状态学习变得不那么有吸引力。
大脑是循环神经网络,忽视这一点似乎是不明智的。
具有大上下文的 Transformer 模型在小批量训练中表现出色,但我们仍然没有用于通用循环在线学习的算法。
如果将动作与观测值一起输入,那么动作可以被视为对自己的提示。
函数近似的性能几乎决定一切
在经典强化学习中,“函数近似”只是一个黑箱,但它的实现却主导了性能。
神经网络为我们做了几件事:
针对新输入学习新结果。
在“相似”输入之间泛化结果。
将随机过程中的样本进行平均,得出期望值。
对于非平稳过程(如不断改进的策略),更新先前的值。
它能表现得如此出色,真是令人惊叹!
未采取的每个动作的 Q 值是模型从实际发生的情况泛化到可能发生的情况的结果。这已经超出了强化学习算法的范畴,纯粹是模型架构和训练的问题。
在确定性环境中,仅使用观测像素的哈希值,甚至根本不使用观测值而只使用动作的历史记录,也能进行学习,但一旦出现哪怕是最小程度的噪声,或者从一个未见过的状态开始,这种方法就会变得毫无用处。
我认为人们往往低估了这样一个事实:每一个权重更新都会改变每一个观测的每一个值输出。我们只是希望这些变化是积极的泛化,或者至少是平均后相互抵消的随机噪声。
初始化、激活函数、损失函数和优化器之间的相互作用可能存在着比当前实践更好的组合优化点。
Adam 出奇地难以被击败。Lucas 尝试了十几种新方法,但在一系列游戏中并没有发现任何明显的优势。
在 BBF 中,重置网络可以导致性能显著提升,这清楚地说明了有根本性的问题存在。
浮点运算和反向传播梯度是我们构建基础的正确选择吗?偏离标准实践令人感到不安。
辅助损失
像自预测表示这样的方法,仅仅是迫使函数逼近器更好地为价值函数和策略服务的一种手段。
在《Breakout》游戏中,正确的动作主要由代表球和挡板的十几个像素决定,而不是其他成千上万的像素。
IID 假设。高度相关性。非平稳表现为“分布偏移”(达到新关卡、尝试不同任务)和“概念偏移”(在相同情况下表现得更好)。
价值中的高噪声——差异是行为变化、泛化失败的结果,还是仅仅是噪声?奖励可能在未来几百步之后,而从现在到那时之间的任何策略选择都可能至关重要,但我们却将价值引导回过去。
从表格型强化学习的角度来看,Atari 能够运行起来本身就很令人惊讶。随机策略下的最佳动作往往也是最优策略下的最佳动作?
外推通常比内插更容易出错。未限制的 ReLU 可能是危险的。
Dropout 本应是有用的,但到目前为止还没有发挥出应有的作用。权重衰减和衰减到初始化也是如此。
价值表示
即使是策略梯度算法,仍然有一个状态价值。大脑不太可能以跨越多个数量级的方式来表征标量值。我有一个特别的想法,就是使用具有旋转环绕的极坐标值,因为你所关心的只是哪个动作最好,而所有动作通常都在相近的范围内。
经典 DQN 的奖励截断
为了稳定性和让相同的学习率能在所有游戏中表现良好,将奖励值限制在 -1 和 1 之间。
例如,在《Ms Pac-Man》游戏中,吃一个豆子得 10 分,而奖励物品的得分可能有数千分。
分类表示
有研究指出,简单的分类值加上高斯分布比完整的分类算子效果更好,这似乎令人感到意外。
可能仍然不是最佳选择,因为它忽略了数据的序性质,像 Earthmover 损失这样的方法可能会更好。
MuZero 二次值压缩
它不进行线性插值,且仍然存在范围超参数。
MSE 是否足够?
令人感到意外的是,不截断奖励与 MSE 损失也能正常工作,即使在某些游戏中的损失值达到数百万——没有出现梯度爆炸,即使没有梯度截断或 Huber 损失,但学习速度更慢。
使用 Adam 或 RMSProp 进行归一化处理,对最后一层使用随机梯度下降,并在前面的层中应用权重归一化。
在点数差异巨大的游戏之间进行多任务学习可能会面临挑战,例如《Pong》和《Video Pinball》。
卷积神经网络
它仍然是处理图像的首选架构。
大型图像网络在强化学习中表现不佳
我曾两次用 PyTorch 库中的大型分类模型(如 ConvNeXT)替换简单的步幅卷积神经网络,尽管这些模型在许多分类和主干任务中处于最先进水平,但在我的 QV 强化学习任务中表现较差。模型的分类性能与在线强化学习性能并不直接相关,弄清楚两者需求的差异可能是有必要的。
卷积核子集
我们能否学习到更好的函数架构?CNN 卷积核子集的失败示例:5x5 卷积核是 3x3 卷积核的严格超集,但学习效果往往更差,即使有更多的参数。权重衰减应该减少噪声特征的影响,但这个过程可能需要很长时间。
参数共享提升性能
CNN 的共享权重在生物学上不太合理,但有点像在移动一个焦点。
使用非共享 CNN 参数进行测试的效果更差,至少在几百万步的范围内是这样。从理论上讲,不共享在极限情况下应该更好,而且你可以进行转换。
分解的一维 CNN
将 CNN 分解为两个一维卷积应该会更有帮助,在 CIFAR-10 数据集上确实如此,但在强化学习任务中并不会。
各向同性 CNN
一旦有了池化层或步长卷积,CNN 就不再是完全位置无关的。
边缘行为,标准的最大池化不支持环绕选项。
扩张的各向同性 CNN
可以高效地精确计算所有可能的图像偏移。
各向同性 DenseNet CNN
我喜欢 DenseNet,每个通道都能访问它之前的所有内容,而不仅仅是前一层的通道。不清楚如何在图像尺寸变化时进行扩展,但与各向同性 CNN 结合很简洁。
循环各向同性半密集 CNN
不使用帧堆叠,每帧评估一次卷积。延迟随着与每个像素的距离增加而增加。
原文链接:
声明:本文由 InfoQ 翻译,未经许可禁止转载。
今日好文推荐
12年首次大改!真有人喜欢苹果的“液态玻璃”吗?至少Flutter 开发者的噩梦开始了
TypeScript“杀疯了”!60% 到 70% YC 创企用它构建 AI Agent,赶超 Python 有戏?
“不是 Cursor 不够强,是 Claude Code 太猛了” !创始人详解Claude Code如何改写编程方式
我用大模型砌“屎山雕花”:5天肝出几万行代码!产品经理的AI编程翻车记
来源:InfoQ