Accelerating NeurASP with vectorization and caching
本文通过实现向量化、批处理和缓存,增强了神经符号框架 NeurASP 的可扩展性,从而在训练中实现了多个数量级的加速,并通过一个新的具有挑战性的纸牌游戏数据集验证了这一点。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
大局观:教机器人思考
想象一下,你正在试图教一个机器人玩扑克牌游戏。你有一个神经网络(机器人的“直觉”),它通过观察卡牌图片来猜测它们是什么。你还有一个逻辑规则集(机器人的“大脑”或“规则手册”),它根据这些猜测来计算最终得分。
问题在于,你只知道最终得分(例如:“总和是 15”)。你并不知道机器人对每张单牌的具体猜测是什么(例如:“那是红桃 7 还是黑桃 3?”)。
在过去,一个名为 NeurASP 的框架尝试通过猜测所有可能导致得分为 15 的卡牌组合,检查哪些组合有效,然后据此调整机器人的直觉。然而,这个过程就像是在尝试一粒一粒地数清沙滩上的每一粒沙子。这个过程非常缓慢,对于复杂的任务,计算机会在完成之前就直接超时放弃。
这篇论文介绍了一个增强版的 NeurASP,它让这个过程快了数千倍,使得机器人能够学习以前无法完成的复杂卡牌游戏。
三大瓶颈(以及如何修复它们)
作者确定了原始系统之所以如此缓慢的三个主要原因,并用巧妙的技巧修复了每一个。
1. “计算器”问题(向量化)
旧方法: 想象一位老师在考学生做乘法。旧的 NeurASP 代码要求学生一个接一个地进行数学运算,排成一长队。“2 乘以 3。好的,现在再乘以 4。好的,现在再乘以 5……” 这非常慢。
新方法: 作者教会了计算机使用向量化(Vectorization)。他们不再让计算机一个一个地做数学题,而是给了计算机一个巨大的计算器,可以一次性处理整叠数字。这就像是从单车道的土路切换到了 10 车道的高速公路。
- 结果: 计算概率和梯度(学习所需的数学运算)变得快了 100 到 1,000 倍。
2. “图书馆”问题(缓存)
旧方法: 想象你正在解一个拼图。每当你看到一个拼图块时,你都会走到图书馆,找到针对该特定拼图块的解决方案,把它记下来,然后走回来。即使你看到了同一个拼图块 1,000 次,你也会走 1,000 次去图书馆。
新方法: 作者意识到,一个拼图块的解决方案仅取决于最终得分,而不取决于特定卡牌的图像。如果最终得分是“15”,那么可能的卡牌组合始终是相同的,无论卡牌看起来是什么样子的。
他们建立了一个缓存(Cache)(一本个人笔记本)。第一次看到得分“15”时,他们去图书馆寻找答案并记录在笔记本中。接下来的 999 次看到“15”时,他们只需查看笔记本即可。
- 结果: 他们不再向图书馆询问 30,000 次答案,而是只询问了 19 次(针对每一个可能的得分)。这节省了大量时间。
3. “递送”问题(批处理)
旧方法: 原始代码就像一名快递员,送完一个包裹,回到仓库,取下一个包裹,然后再开车出去。
新方法: 新代码使用了批处理(Batch Processing)。它装载了一整卡车的包裹(数据),然后一次性完成交付。对于大型数据集,这种方式要高效得多。
新的挑战:“卡牌算术”
为了证明他们的新系统有效,作者创建了一个新的、困难的测试,称为卡牌算术(Card Arithmetic)。
- 旧测试: 之前的测试使用简单的数字(如 0-9 之间的两位数)。这就像是在做 2 + 3。
- 新测试: 他们使用了真实的扑克牌照片。共有 52 张不同的牌(黑桃 A、红桃 2 等),且规则涉及它们的数值乘法和加法。
- 难度: 对于单场游戏,可能有数万种不同的卡牌排列方式来得到正确的总和。
结果
当他们运行实验时:
- 速度: 新系统在几分钟内完成的任务,旧系统可能需要几天、几周甚至几个月才能完成。在某些情况下,旧系统由于太慢而直接崩溃(超时)了。
- 准确度: 新系统成功学习了卡牌游戏,即使面对 52 张不同牌的巨大复杂性,也实现了高准确度。
- 对比: 他们将自己的系统与另一个名为 Embed2Sym 的框架进行了比较。虽然 Embed2Sym 在简单任务上表现良好,但在卡牌游戏面前完全失败了,因为它在试图解决海量可能性时陷入了困境。而 NeurASP 则轻松应对。
一个奇特现象:“推理捷径”
论文还注意到了一些有趣的事情。有时,机器人得到了最终得分,但猜错了单个卡牌。
- 类比: 假设规则是“梅花 3(数值为 6)+ 黑桃 2(数值为 6)= 12”。机器人可能会猜“红桃 6 + 方块 6 = 12”。它算对了数学题,但卡牌猜错了。
- 因为不同的卡牌可以具有相同的数学数值,机器人找到了一个“捷径”来获得正确答案,而无需学习卡牌的真实身份。这表明虽然系统很快,但它有时会找到一些聪明但技术上并不完全正确的解题方式。
总结
作者将一个用于教 AI 利用逻辑和规则进行推理的缓慢、笨重的系统进行了“涡轮增压”升级。通过更好地组织数学运算(向量化)并记住过去的答案(缓存),他们将一个只能勉强处理简单加法的系统,变成了一个能在极短时间内掌握复杂卡牌游戏的强大系统。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。