这是一个神经图灵机执行复制/重复任务的例子。它已经学会了接受相对短的序列,并重复几次。正如你可以在上图看到的一样,开始的时候它犯错。但是最终看起来相当好,图中上边的是目标,下边的是输出。 神经图灵机的表现超越了长短时记忆网络 相反,你拿这个例子与长短时记忆网络(LSTM)相比,LSTM 实际上是一种非常强大的神经网络模型。它们会很快就倾向于崩溃。出现这种情况的原因是,LSTM 确实是在学习一些东西,但是它们并不是在学习算法。LSTM 试图一次解决整个问题,所以它们意识不到前两次所做的事情就是它们之后应该做的。 平衡括号表达式 在神经图灵机可以做到的事中,一个有趣的例子是它们可以识别平衡的括号。这个是特别有趣的,因为这涉及到的使用了栈(stack)的算法,所以本质上你可以随着左括号的进入去跟踪它们,然后尝试去匹配与之对应的右括号。这件事神经网络可以做,但是会以更加统计的方式完成,而神经图灵机实际上可以像人类程序员一样去完成这个任务。 好了,现在我们谈一下 bAbI 数据集以及为什么我们如此关注它。bAbI 数据集本质上是一系列后面带有问题的故事,atv直播,而且所有的问题都被设计成需要某种形式的推理能力才能回答。我这里有一个简单的例子——使用位置来进行推理。这里的关键点是,如果你问某人在哪里,实际上问的是他们最后去了哪里。这看起来非常明显,当涉及到人物捡起东西或者行走时,这个问题实际上会变得有些复杂。故事也会涉及到关于物体相对尺寸的实际推理。基本上,这件事情背后的基本理念永远是,一个在所有这种任务中表现良好的系统,接近一个更加通用的知识推理系统。 bAbI 数据集上的结果 这里仅仅是一些基于 bAbI 数据集的结果。注意,实际上 bAbI 数据集是训练集。就像我之前给你展示的,给定其中的每一个故事,你会看到的是,训练集实际上提供了一个提示,这涉及到实际故事中的什么内容对回答问题是重要的。事实证明,导致这个问题非常困难的原因,不仅是你必须做出逻辑推理,你还必须意识到什么东西是相关的。你会看到,这两者之间是存在竞争的。bAbI 数据集的许多子任务或者子部分都达到了超过 95% 的准确率,这作为系统通过给定领域的基准测试。 挑战和建议 神经图灵机可以做这些炫酷的事情:它们可以学会算法,它们可以理解一个小故事的意思,但是为什么我们不能一直用这些东西呢?嗯,它们的结构是如此地有趣,但也伴随着一些问题。 问题: 架构依赖; 大量的参数; 并不能从 GPU 加速中受益; 难以训练 首先,一旦你指定了一般的架构,在实现它的时候仍然需要做出很多决策。例如,对于每一个给定的输入或输出单元,在给定的时间步长下你能够读取或者写入多少向量?这些都很重要,它不仅仅是提高你的识别准确率的问题。如果你不能正确地做到这些,那它很有可能永远都得不到一个合理的结果。参数的数量是极其大的,这会让你的 RAM 压力很大。这是机器学习中的一个重要部分,它们并不会受益于 GPU 加速,虽然正如我们所见,GPU 加速是机器学习中的重要一部分。原因是这是序列式的,很难并行化,因为它们当下所做的都是基于之前的输入。很难将这些部分分解成容易的并行计算。它是很难训练的,这一点和我刚才提到的所有问题都有所不同。 难以训练: 数值不稳定性; 很难使用记忆(memory); 需要很好的优化; 实际中很难使用 (责任编辑:本港台直播) |