# 基于注意力机制的四种增强型RNN（下）

> 来源：梦飞idc云平台 | 原文：https://www.mfisp.com/20666.html | 发布：2023-05-22 | 更新：2023-05-22 | 分类：建站教程

## **三：自适应计算时间**

 

标准RNN在每个时间步骤执行相同的计算量。 这似乎太不直观了。 举个例子来说，人在思考更难的问题时是不是会动更多的脑筋？并且在每个时间步骤执行相同的计算量会限制RNN处理长度为n的列表时的时间复杂度为O(n)。

 

自适应计算时间[15]是一种让RNN在每步执行不同计算量的方法。 总体来看，这个想法的主旨很简单：允许RNN为每个时间步执行多个计算步骤。

 

为了让网络学习到需要执行多少个计算步骤，我们希望计算步骤的数量是可微的。 我们使用与之前相同的技巧来实现这一点：即不是直接去确定离散的计算步骤，而是建立一个在计算步骤数量上的注意力分布。 输出是每个步骤输出的加权求和。

 

## **四：神经元程序员**

 

神经网络在许多任务中都非常出色，但他们也很难做一些基础的东西，比如算术题，这对普通的计算方法来说则微不足道。如果能将神经网络与正常编程融合在一起，就两全其美了。

 

神经元程序员 [16]是一个这样的方法：它学习创建程序来解决任务。事实上，它不需要正确的程序的例子，就能学习生成正确的程序。它探索如何以编程为手段，去完成某项任务。

 

本文中的实际模型通过生成类似SQL的程序来查询表格，以回答关于表格的问题。但是，这里有一些细节使得它有点复杂，所以我们首先想象一个稍微简单的模型，给出一个算术表达式并生成一个程序来评估该表达式。

 

生成的程序是以一系列操作的形式存在的。每个操作基于过去操作的输出进行操作。所以一个操作可能是类似于“把两步之前的操作的输出和一步之前的操作的输出相加”这样的操作。它更像是一个Unix管道，而不是一个分配和读取变量的程序。

 

只要我们可以通过操作来定义导数，就可以根据概率分布来区分出程序的输出。然后，我们就可以定义一个损失函数来训练神经网络，以产生可以获得正确答案的程序。这样，神经元程序员就不需要参照好的程序，也能学会编程。神经程序员只需要问题答案来监督它的学习。

 

这就是神经元程序员的核心思想。但这篇论文中的神经元程序员，编写出的程序只能回答表格问题，而不能解算术题。还有一些不错的技巧：

 
 
- 多类别：神经元程序员中的许多操作处理标量数以外的类型。一些操作输出表格列或单元格的选择。只有相同类型的输出会合并在一起。 
- 参考输入：神经元程序员需要回答诸如“有多少城市人口超过100万？”等问题。为了促进这一点，一些操作允许网络在他们正在回答的问题中引用常量或列的名称。这种引用发生在指针网络的样式中[17]。 

 

神经元程序员不是神经网络编程的唯一方法。另一个令人愉悦的方法是神经元程序员 - 解释器[18]，它可以完成一些非常有意思的任务，但需要以正确的程序进行监督。

 

我们认为，缩小传统编程与神经网络之间的差距是非常重要的。虽然神经元程序员不是最终的解决方案，但我们还是能从中学到很多。

 

**代码**

 

## **光明前景**

 

在某种意义上，有一张纸写写画画的人比没有的人更聪明。使用数学符号的人可以解决缺乏数学符号时难以解决的问题。而计算机的使用使我们能够获得超乎寻常的卓越功绩。

 

一般来说，似乎有很多有趣的智力形式是人类创造性的启发式直觉，与一些像语言或方程这样更为清晰谨慎的媒介之间的相互作用。有时，媒介以物质的形式存在，为我们存储信息，阻止我们犯错误或繁复计算。在其他情况下，媒体是我们大脑里可操纵的模型。无论哪种方式，媒介对智能都很重要。

 

机器学习的最新研究也开始这么干了——把神经网络的直觉和别的东西结合起来。一种方法可以称为“启发式搜索”，例如AlphaGo[19]，既有一个玩围棋的模型，它也探索在神经网络直觉的指导下进行游戏。同样，DeepMath[20]使用神经网络作为处理数学表达式的“直觉”。我们在本文中提到的“增强型RNN”是另一种方法，将RNN连接到工程媒介，以扩展其通用功能。

 

与媒体互动，自然涉及到采取行动、观察以及采取更多行动的序列。这产生了一个重大挑战：怎样让机器学会采取行动？这听起来像是一个强化学习的问题。基于强化学习的研究正在试图解决这个问题的最难版本，不过其提出的解决方案难以实际使用。而注意力机制的奇妙之处在于，通过在部分上施加不同程度的注意力来运行所有的行动来解决问题。它有效，因为我们可以设计类似于NTM内存空间的媒介，来允许分数计算和可微。强化学习每次只走一条路，从中学习。而注意力机制则把路口的所有分叉，合而为一。

 

注意力机制的一个主要弱点是，每一步都要采取一次“行动”。这导致当你增加神经图灵机中的内存量时，计算成本也会线性增加。对此，想象一下这样的情景：先分散你的注意力，然后每次我们只需要访问部分存储空间。然而，如果你想让注意力依赖于存储内容，从而可以轻易的查看每个存储空间，这仍然很有挑战。我们已经看到了一些试图攻克这个问题而做出的尝试，比如[21]，但似乎还有很多工作要做。如果我们真的能够做出这样的次线性时间的注意力工作，那将是非常强大的成果！

---
本页由 梦飞idc云平台（https://www.mfisp.com）提供。站点导航见 https://www.mfisp.com/llms.txt
