这是一篇基于我对论文的理解的博文--《你能学会一种算法吗?用递归网络从简单问题到困难问题的概括》,来自Schwarzchild等人(2021)[链接]。
tl;dr- 在这里,作者在较简单的迷宫/拼图形式上训练了一个递归神经网络(RNN),并在测试时,在 "较难 "的问题上对其进行评估。与通常的训练/测试集评估不同,这里允许RNN在测试时 "思考更长时间"。更具体地说,它将拥有比训练阶段更多的递归块。作者注意到,与具有类似深度的简单前馈神经网络相比,RNN通过更长的思考时间,能够以一种原则性的方式解决更复杂的问题。这就是通过使用更多的递归层。这里,相似的深度是指RNN和前馈NN在训练时的有效深度。
优势--该论文开始了一个重要的方向--"如何使NN处理未见过的测试情况?使用比训练时更多的计算量能否帮助在测试时表现得更好?NNs能否从它的记忆(或内部表征)中进行概括/推断?"在这里,作者让RNN将它的理解推断到类似但 "更难 "的问题上。最初的实验看起来很有希望,并可能成为我们了解究竟是什么让更深(或更广)的模型表现更好的途径。
注意事项**-**除了少数直接的案例外,很难对问题的难度进行策划和排序。因此,在较容易的问题上进行训练并了解对较难问题的影响将是一个挑战。这也是其他研究方向上的一个已知问题,如课程学习(Bengio等人,2008)。
未来的方向--作者指出,由于有更好的感受野,利用扩张的卷积会得到更好的结果。一个渐进的补充可以是使用注意力层、变压器等来观察更大的接受区域的效果。因此,回答一个更大的问题,即什么是重要的--思考的时间更长,还是对整个空间有 "感觉",或者两者都有。此外,这里的循环迭代是通过使用相同的权重(权重共享)天真地增加。看看随机扰动一小部分权重的效果会很有趣。最后,尽管RNN思考的时间更长,但它仍然被预先定义为它们应该思考多长时间--使额外的递归步骤的数量由数据驱动可能是一个有趣的实验。
简介
人类显示出解决复杂问题的能力,这是在他们从较简单的玩具问题中学习的结果。例如,一个已经解决了3X3谜题的人,可以使用类似的逻辑并花费更多的时间来解决5X5谜题,尽管之前从未见过。更具体地说,人类可以通过 "更努力/更长久地思考",从较小的问题中汲取模式来解决更大的问题。
在Schwarzchild等人(2021)中,作者从人类的这些现象中得到启发,看看是否可以在神经网络(NN)中观察到类似的模式。也就是说,我们能否让神经网络根据从较简单的问题中学到的知识来解决_未见过的、更复杂的_ 问题。在这里,我们对3种主要的数据类型进行了分析--前缀和计算、迷宫和国际象棋。
在测试推理中思考更长的时间可以是一个有趣的和重要的问题,由于多种原因,但不限于---
- 对计算预算的限制 - 模型可以在测试时进化,而不是训练极深的网络。
- 这在问题不断演变(与训练相比,输入复杂度以及输入规模增加),且对测试分布的访问有限的领域可能特别有趣。
- 了解神经网络从其记忆中推断的能力,并为_泛化_带来一个新的视角。
在转移学习 (Hinton等人,2006;Raina等人,2007;Bengio等人,2012)、神经网络中的泛化 (Zhang等人,2016;Arora等人,2019;Maennel等人,2019)方面,已经有大量的文献在研究类似方面。2020;Garg等人,2021),元学习 (Schmidhuber,1987;Bengio等人,1992;Thrun & Pratt,1998;Andrychowicz等人,2016;Ravi & Larochelle,2017;Finn等人,2017),神经 结构搜索(Zoph等人,2016)等等。虽然,本文(Schwarzchild等人,2021)所使用的任务类型与上述工作不同--在这里,重点是使任务的完成情况符合要求。
- 这里的重点是让神经网络 "思考得更久",类似于人类,以解决更复杂的问题--也就是说,这里的模型被提供更多的计算(或更长的执行时间),直到它对答案有信心。在传统的迁移学习框架中,模型在_开放世界的知识_上进行预训练,然后在相关的下游任务上进行微调--目的是让模型从现有的大量数据中学习有用的表征,并将其用于提高下游任务的性能。
- 在元学习设置中,重点是学习一个_能够学习的_算法。而在目前的工作中,作者着眼于学习一种算法来解决一个具体的问题,例如,一个国际象棋的配置或一个拼图。
- 典型的_泛化与记忆_工作的重点是了解神经网络从数据中学习到了什么,以及它们在相同分布、不同分布等情况下基于其 "泛化误差"(训练/验证误差)的泛化程度如何。在这项工作中,重点是了解模型是否能从较小的问题中学习模式,并在较大的问题上使用这些模式--从而泛化--在额外计算的帮助下。
数据集
如前所述,作者在3种类型的问题上分析了这一假设
- 前缀和问题[链接]--这里,输入是一个长度为32位的二进制字符串(在测试时,使用40至44位字符串)。重点是计算二进制字符串模数2的前缀和。也就是说,输出将是一个等长的字符串,计算输入的模2的累积和。
前缀和modulo 2的一个例子。[来源]
2.迷宫- 训练时的输入是一个9x9的迷宫,测试时是一个13x13的迷宫。预计输出是一个二进制掩码输出,它突出了输入迷宫中绿色和红色小点之间的最短路径。
左图是一个迷宫的例子,绿点代表起点,红点代表终点(目的地)。白色像素是代理人可能采取的步骤,黑色像素是代理人不能走过的障碍物。右边的邻图显示了这些点之间的最短路径(这是网络的预期输出)。[来源]
3.**国际象棋--**输入数据是一个8x8x12的数组,输入的是棋盘中所有棋子的位置。这些配置的来源是在线平台Lichess。与之前的数据集不同的是,在训练和测试的时候,输入的大小不同,这里我们有不同的 "难度等级"。模型在难度较小的样本上训练(基于评级),在难度较大的样本上测试。
左边的图片是输入的国际象棋配置,右边的二进制掩码提示可以引导棋手获得胜利的(单一)最佳棋步。[来源]
模型结构和训练
基于递归块的_解卷_,测量有效深度的样本。[来源]
所用的前馈网络是基于ResNet架构的,但有一些变化--除了初始层和最后一个递归层之后,宽度没有变化,没有批处理,完全卷积--以确保递归模型尽可能地接近前馈实现。递归网络使用的模型结构与经典的ResNet模型类似。也就是说,这2个模型之间的主要区别在于,权重在递_归块_ 中是共享的,但在前馈网络中则不是。
结果
该图比较了最佳前馈模型和同等深度的递归模型。[来源]
前缀总和--我们可以从上图中看到,随着更多的迭代(递归块的解卷),性能会增加。
基于在32位字符串上训练后对40位字符串进行测试的结果。[来源]
**迷宫求解--**从下图中可以看出,模型在经历更多的迭代时,会改善并学习其路径。递归模型显示出比传统前馈模型更好的性能
这里可以直观地看到模型在解决迷宫问题上的顺序思考能力。另外,像素的颜色与模型对其输出的信心有关。[来源]
在8x8的谜题上训练后,在13x13的网格上的表现。递归模型的表现一直优于深度相当的前馈模型。
这里,递归模型与最佳前馈模型进行了比较。通过更长的思考时间,递归模型能够表现得更好。
**国际象棋--**对国际象棋观察到的趋势也是类似的。为了简洁起见,在考虑该谜题的最佳解决方案时,有一些边缘案例被省略了。
我们可以注意到一个类似的趋势,即模型正在依次分析所有可能的棋步,并且随着迭代的进行而更加自信。
与深度为20的最佳表现的前馈网络相比,在测试时更深入的思考有助于递归模型更好地解决更难的国际象棋难题。
讨论
作者提出了一个重要的问题,即递归层如何帮助。这里仍有许多未回答的问题
- 递归模型是如何模仿分层过滤器的,也就是说,尽管有权重共享,但与每层有特定过滤器的前馈网络相比,递归模型如何能够提取类似的模式来学习特定的模式?这个问题在作者的另一篇论文中得到了部分回答--《递归和深度的不寻常的相似性》[链接](关于这篇论文的更多内容即将发布!)。
- 我们如何才能让模型理解何时停止思考?人类在得出一个最佳的谜题解决方案后,不会突然向一个随机的方向发展,并最终得到一个错误的答案(至少,我们_大多_ 不会:)
- 了解思考时间长和能见度大的影响。这篇论文显示,利用扩张的卷积来获得更大的感受野有帮助。这是否意味着可能有一个方向,我们不仅可以研究模型思考的时间,而且,模型可以思考/感觉到什么(空间上)?
如果你已经读到这里,非常感谢,希望你能读到一些新的和有趣的东西请查看原始论文,以了解更多深入的分析和结果!请随时让我知道你的想法。我是这个文献的初学者,欢迎指出我理解中的任何错误!乐于学习!
PS - 所有数字都取自原始论文,如果没有,我也提到了来源。这些信息图表的所有功劳都归于原作者。谢谢!
让神经网络通过更长时间的 "思考 "来解决更棘手的问题!》最初发表在《走向数据科学》杂志上,人们通过强调和回应这个故事来继续对话。