神经网络可以用来设计算法吗?


9

在玩棋盘游戏中神经网络获得越来越多的成功之后,人们感到我们设定的下一个目标可能比在Starcraft中击败人类更有用。更确切地说,我想知道是否

可以训练神经网络解决经典算法问题吗?

在这里,我的意思是,例如,网络将获得带有加权边的输入图,并指定了两个顶点和,我们要求它尽快找到最短的路径。然后我猜想神经网络会发现并训练自己使用Dijkstra或类似的东西。Gstst

一方面,我们知道神经网络TC0计算能力为。另一方面,我不知道这是否一定与我的问题有关。即使这样,对于大多数问题,我们仍然不知道是否可以在解决它们。看看神经网络是否可以训练自己,可能很好地指示了是否有快速的算法。例如,如果神经网络无法训练自己快速求解SAT,那么(甚至更多)可能。我想知道神经网络将如何处理图形化或工厂化。TC0NPTC0

当然,提取算法是一个完全不同的问题。我怀疑专家们知道该怎么做,但是讨论不是这个问题的主题。

两天后添加:在看到答案后,让我指定如果您的答案是否定的,那么我想知道

为什么下棋比Dijkstra或Graphisomorphism更容易?


评论不作进一步讨论;此对话已转移至聊天
列夫·雷津

Answers:


2

根据该博客作者Reza Zadeh的说法,即使仅针对三分之二的训练示例,训练神经网络以产生正确的输出在计算上也很困难:

实际上,在1988年,J。Stephen Judd证明了以下问题是NP难题的:

给定一个通用的神经网络和一组训练示例,该网络是否存在一组边缘权重,以便网络为所有训练示例生成正确的输出?

贾德还表明,即使仅需要网络为三分之二的训练示例产生正确的输出,问题仍然是NP问题,这意味着即使在最坏的情况下,即使对神经网络进行近似训练也本质上是困难的。在1993年,Blum和Rivest的消息变得更糟:即使是只有两层和三个节点的简单网络,也很难训练NP!


1
我真的不知道这如何回答我的问题。
domotorp

在您编辑帖子之前,您的第一个问题是关于训练NN。自从您添加了CC标签以来,我的回答表明,无论您的算法问题是在P还是NPC中,都很难训练NN
Mohammad Al-Turkistany

如果我含糊不清,我感到抱歉。
domotorp

0

这不是一个完整的答案,我在神经网络方面也不是很有经验,但可能会有所帮助。

实质上,NN被提供了输入并产生了响应。然后通过实践训练它们对域中的“相似”输入产生相似的响应,例如,对相同动物的图像使用相同的标签,或者对“良好”的象棋位置给予较高的评价,其中良好意味着较高的获胜机会。

因此,正如我所评论的那样,神经网络是一种非统一的计算模型,其工作方式与在Turing Machines上运行的逐步算法完全不同。相反,可以将它们视为使用连续数学而不是布尔值的“软”电路,并且可以对其进行调整或训练,并允许其出错。

为什么下棋比Dijkstra或Graphisomorphism更容易?

在某种程度上,这是要求某人尽其所能回答一个问题,与要求他们提供一个正确答案以及证明它是正确的证明之间的区别。在某种程度上,这是解决固定大小的问题与同时针对所有可能的输入大小解决问题之间的区别。

每次Dijkstra在实例上运行时,实例可以是任意大小,它隐式证明其输出是一个真实的答案,而没有其他答案。在国际象棋和图像识别中,一个可以给出最佳答案,并且可以容忍错误。而且,仅训练网络一次解决一种规模的这些问题。我认为我们尚不知道如何将这种神经网络解决方案推广到大小和形状完全不同的问题实例。

我不认为我们应该假定神经网络无法解决最短路径或类似的算法问题,但解决不是一步一步的算法,该算法总是正确的一个根本不同的方式解决问题。

回到神经网络和电路之间的相似之处,请注意,电路已经研究了数十年,但从我对上一个问题的答案(5)缺乏答案来看,我们几乎不了解如何为给定结构构造完全正确的电路除了通过将统一算法(Turing Machine)转换为电路之外,其他问题。


我认为没有一个答案会有所不同-两名玩家可以通过竞争找到更短路径的方式来玩Dijkstra。可伸缩性可能是一个更严重的问题-您认为NN可以学习如何玩NIM吗?
domotorp

@domotorp,我认为正确的算法与不正确但近似的启发式算法之间在概念和实践上都存在巨大差异。您没有询问为什么国际象棋比近似最短路径难,而是您询问国际象棋比Dijkstra难,这在所有输入大小上都可以证明100%正确。回复:尼姆,不知道;您需要一个以任意大的输入量开头的NN体系结构...
usul

0

我无论如何都不是专家,但我不明白为什么不这样做。

神经网络从根本上根据事先已经知道的某种“成本/收益模型” 执行优化。此外,搜索空间是定义明确的,具有已知有效和无效的移动以及易于定义的“变化”。即使对于AlphaZero和AlphaGo,成本函数也可能基于获胜率,并在进行一次举动之后针对所有可能的举动得出了胜率分布,或对此进行了某种启发。

对于设计算法,您实际上是在要求程序学习如何输出与“执行算法”的程序相对应的正确字符串(具有已知的隐式编码和成本函数)。但是,实现一个程序所用的算法可能无限多。因此,也许您需要定义正确的“适合度”指标。

但是,即使对于某些程序,“适应性”指标也可能很难定义。时间?占用空间?量化“副作用”?理想情况下,您将生成仅执行您想要执行的“最短程序” 。

我想如果您找到正确的适合度指标和调整算法,就可以做到。


-3

“神经网络”将向量从一维空间转换为另一维空间。因此,它们不过是高度非线性的函数逼近器。甚至神经网络也使用近似算法来使损失最小化。但是训练神经网络来设计新算法是毫无疑问的。tomas mikolov使用堆栈增强递归神经网络在这一领域做了一些工作,我也听说过该领域的“神经图灵机”。然而,找到最佳策略已成为研究强化学习的根本原因,这与您的问题有些相关。但是在不久的将来至少不能使用神经网络来设计新算法。


我认为适合游戏的最佳策略与针对相应问题的最佳算法相同。
domotorp

@domotorp“策略”更多地是一种启发式而非算法
riemann77

-6

我是一名QA自动化工程师,所以不要声称拥有神经网络方面的专业知识,但是从语言上讲,是的,NN可以自己创建算法。人类本身在某种程度上是NN,我们会创建算法,因此,我们创建的人工NN系统可以自己创建算法是有理由的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.