神经网络可以检测素数吗?

人工智能 神经网络 预言 素数检验
2021-11-07 19:40:17

我不是在寻找一种找到素数的有效方法(这当然是一个已解决的问题)。这更像是一个“假设”的问题。

所以,理论上,你能不能训练一个神经网络来预测一个给定的数字是否n是合数还是素数?这样的网络将如何布局?

4个回答

A Compositional Neural-network Solution to Prime-number Testing , László Egri, Thomas R. Shultz, 2006中介绍了通过人工网络进行素数测试的早期成功

基于知识的级联相关 (KBCC) 网络方法最有希望,尽管这种方法的实用性被其他素数检测算法所掩盖,这些算法通常从检查最低有效位开始,立即将搜索减少一半,然后搜索基于其他定理和启发式直到floor(x). 然而,这项工作继续与 KBCC、Shultz 等进行基于知识的学习。人。2006年

这个问题实际上有多个子问题。首先,让我们写一个更正式的问题版本:“某种类型的人工网络能否在训练期间收敛到一种行为,该行为将准确测试输入范围是否为02n1, 在哪里n是整数表示中的位数,表示素数?”

  1. 它可以通过简单地记住整数范围内的素数来实现吗?
  2. 它可以通过学习分解和应用素数的定义吗?
  3. 它可以通过学习一个已知的算法吗?
  4. 它可以通过在训练期间开发自己的新算法来实现吗?

直接回答是肯定的,已经按照上面1.做了,但是是通过过拟合做的,不是学习素数检测的方法。我们知道人脑包含一个可以完成 2.、3. 和 4. 的神经网络,所以如果人工网络发展到大多数人认为可以达到的程度,那么答案是肯定的。截至撰写本答案时,不存在将它们中的任何一个排除在可能性范围之外的反证。

由于素数在离散数学中的重要性,它在密码学中的应用,更具体地说,在密码分析中的重要性,因此在素数测试中训练人工网络并不奇怪。我们可以在诸如A First Study of the Neural Network Approach in the RSA Cryptosystem、Gc Meletius 等著作中确定素数的数字网络检测在智能数字安全研究和开发中的重要性。等人,2002 年密码学与我们各自国家安全的联系也是为什么目前该领域的所有研究都不会公开的原因。我们这些可能有许可和曝光的人只能说没有分类的东西。

在民用方面,正在进行的被称为新奇检测的工作是一个重要的研究方向。像 Markos Markou 和 Sameer Singh 这样的人正在从信号处理方面接近新颖性检测,对于那些理解人工网络本质上是具有多点自调谐能力的数字信号处理器的人来说,很明显可以看到他们的工作如何直接应用于此问题。Markou 和 Singh 写道:“在许多应用中,新奇检测都非常重要,包括信号处理、计算机视觉、模式识别、数据挖掘和机器人技术。”

在认知数学方面,惊喜数学的发展,例如学习惊喜:理论与应用(论文),Mohammadjavad Faraji,2016 年可能会进一步推动 Ergi 和 Shultz 的开始。

理论上,神经网络可以逼近任何给定的函数。这个结果被称为普遍逼近定理

但是,如果您使用数字训练网络0N,您不能保证网络会正确分类该范围之外的数字(n>N)。

这样的网络将是一个常规的前馈网络(或MLP),因为递归不会对给定输入的分类添加任何内容。该NN的层数和节点数只能通过反复试验才能找到。

我是 Prairie View A&M 大学的本科生研究员。我刚刚花了几周时间调整 MLPRegressor 模型来预测n素数。它最近跌入了一个超低的最低点,第一个1000训练数据之外的推断产生的误差小于.02百分。即使在300000素数出来,大约是.5折扣。我的模型很简单:10隐藏层,在单个处理器上训练不到 2 小时。

对我来说,它引出了一个问题,“是否有一个合理的函数可以产生第 n 个素数?” 现在,算法在计算上变得非常繁重n. 查看最近发现的最大素数之间的时间间隔。其中一些相隔数年。我知道已经证明,如果存在这样的函数,它将不是多项式的。

是的,这是可行的,但考虑到整数分解问题是一个NP 问题BQP 问题

因此,纯粹基于经典计算的神经网络不可能以 100% 的准确率找到素数,除非 P=NP。