为什么机器学习不能识别素数?


13

假设我们有一个大小为n的整数V_n的矢量表示

该向量是机器学习算法的输入。

第一个问题:对于哪种表示形式,可以使用神经网络或其他矢量到位ML映射来学习n的素数/复合性。这纯粹是理论上的-神经网络的大小可能不受限制。

让我们忽略已经与素数测试相关的表示形式,例如:n个因子的空分隔列表,或者诸如Miller Rabin中存在的复合性见证。相反,我们将重点放在具有不同半径的表示形式上,或将其表示为(可能是多元)多项式的系数向量。或其他异国情调的人。

第二个问题:不管表示向量的具体细节如何,如果有的话,什么类型的ML算法将无法学习?同样,让我们​​省略上面例子中的“被琐碎的事所禁止”表示。

机器学习算法的输出为单个位,素数为0,复合数为1。

这个问题的标题反映了我对问题1的共识是“未知”而问题2的共识是“可能是大多数ML算法”的评估。我之所以这样问,是因为我对此一无所知,我希望有人能指明方向。

这个问题的主要动机(如果有的话)是:是否可以在特定大小的神经网络中捕获的素数集的结构存在“信息理论”限制?因为我不是这种术语的专家,所以让我重新阐述一下这个想法,看看是否对这个概念有一个蒙特卡洛近似值:素数集的算法复杂度是多少?素数是Diophantine可递归枚举的(并且可以满足特定的大二色子方程)是否可以用于捕获具有上述输入和输出的神经网络中的相同结构。


12
从理论上讲,您的问题定义不明确。机器学习算法的输入是什么?它们是如何产生的?该算法在学习任务之前会知道什么?
Lev Reyzin

3
我认为这对于本网站的当前形式来说不是一个好问题。
卡韦

4
它可以。但是在机器学习中,我们希望最大程度地减少测试数据集上的错误。现在,如果你训练上你可能最终学习˚F Ñ = ñ 2 - Ñ + 41和其中用于数字小于完美地工作41。但是之后,它的性能就不好了。人们已经尝试过了这一点(手动:-)),但到目前为止还没有成功。在ML中,我们尝试查找模式,但是如果没有任何模式怎么办?[1,20]f(n)=n2n+4141
Pratik Deoghare 2013年

1
您似乎在询问是否存在一种算法,该算法从自然数的有限序列到自然数的谓词给出一个函数,可以在给定素数序列的情况下正确输出素数谓词,但要受该算法的其他约束。如果有可能,进一步阐明您的限制并非易事。如果您尝试使其精确,则可能会看到。
Vijay D

1
一个简单的答案,因为很难近似您要查找的质数函数f的搜索空间(也就是说,如果n为素数,则f n 返回1 ,否则每n返回0 )。关于@PratikDeoghare注释,很难在S中找到模式。Sff(n)nnS
2013年

Answers:


-8

这是一个古老的问题/问题,与数论,数学,TCS尤其是自动定理证明有很多联系。[5]

古老而古老的问题是:“是否有计算素数的公式”

答案是,是的,从某种意义上说,有多种算法可以对其进行计算。

黎曼zeta函数可以重新定位为查找素数的“算法”。

在我看来,遗传算法是一种遗传算法,有一天可以通过巧妙的设置成功完成,即遗传算法是最有可能成功的最接近的已知技术。[6] [7] 这是从有限的一组示例中找到算法的问题,即机器学习,这与数学归纳非常相似。然而,到目前为止,关于遗传算法在数论中的应用似乎还没有太多研究。

在现有文献中,与此最接近的似乎是[8],该文献讨论了以自动化方式(即“自动化推测”)发展孪生素数猜想。

另一种方法是一个程序,该程序具有大量标准函数表以及一些复杂的转换逻辑,可以识别标准整数序列。这是Mathematica内置的名为findsequence[3] 的新功能。

它也与一个相对较新的领域有关,即“实验数学” [9,10]或TCS中也称为“经验”研究的领域。

在此要说明的另一个基本点是素数的序列不是“平滑的”,高度不规则,混沌,分形和标准的机器学习算法历来是基于数值优化和最小化误差(例如,梯度下降)的,并且不这样做很好地找到离散问题的确切答案。但是Google Analytics(分析)仍然可以成功,并且在该领域/领域也被证明可以成功。

[1] 是否有第n个素数的数学方程式 math.se

[2] 素数公式,维基百科

[3] Wolfram findsequence函数

[4] riemann zeta函数

[5] 自动定理证明的最高成功

[6] 遗传算法在现实世界中的应用

[7] 将遗传算法来自动THM证明通过王

[8] 使用HR,Otter和Maple colton 在数论中自动进行猜想

[9] 实验数学在TCS中是否有应用?

[10] 实验算法学阅读清单


1
这是一个很好的答案。不知道该网站是否同意,但这是我一直在寻找的东西。一堆探索和老化旧联系的新方向。谢谢,非常感谢。特别是GA。同样,您在两行之间阅读,并从机器学习概括为“素数形式”。这非常有帮助,谢谢。
Cris Stringfellow

11
@Cris,这个答案几乎没有关于机器学习的内容。从您对Aryeh答案的评论看来,您似乎不熟悉机器学习(请问您在哪里看到机器从一系列示例中学习了诸如素数测试的算法?)
Kaveh

6
GA可以从某种意义上“学习”素数测试算法,在这种意义上,谚语中的无限猴子将有一天键入莎士比亚的全部著作
Sasho Nikolov 2013年

@sasho,尚未得到证实,但是(是的,恕我直言)可能不是由于技术限制,而是缺乏尝试。koza演示了用于视频游戏(例如pacman)的GA“解决/学习”复杂算法(通过原始的Lisp树),还使用子组件构造了电路。这至少不难找到素数吗?真正的问题是,系统将拥有哪些类型的原语,它们将如何成为原语并仍能找到解决方案?
vzn13年

19

我认为问题很模糊,涉及一些误解,因此,此答案仅试图提供正确的词汇并为您指明正确的方向。

有两个直接研究此类问题的计算机科学领域。归纳推理计算学习理论。这两个领域密切相关,区别在于社会和美学领域,而不是形式上的领域。

AP(A)AAFP(A)

f:NA

iNf(i)=T, for some T in F.

因此,积极数据的呈现是对目标概念的枚举,通常还会附带一些其他公平条件。您可以类似地要求进行呈现,以根据单词是否使用语言来标记单词。同样,您可以添加其他条件以确保所有单词的公平性和覆盖范围。

RepMRepL(M)

p:NRepL(p(i))f(j)jikjkL(p(j))=L(p(j+1))

让我强调,这只是一种特定学习模型的一种特定形式化。但这是您开始提出和研究您感兴趣的问题之前的第0步。通过允许学习者和老师之间的互动,可以丰富学习模型。我们可以考虑非常特定的语言,甚至特定的表示形式(例如单调布尔函数),而不是任意的语言家族。在每种模型中可以学习的内容与学习的复杂性之间存在差异。这是基本不可能结果的一个示例。

Gold [1967]不能仅从积极数据中被动地学习包含所有有限语言和至少一种超有限语言的语言。

在解释这一结果时,应该非常小心。例如,达娜(Dana Angluin)在80年代就表明

k

k

Angluin [1987]可以从老师那里学到正规语言,老师可以回答对等查询并提供反例。在最小DFA和最大反例的长度的状态集中,该算法是多项式。

这是一个强大而积极的结果,最近已经发现了几种应用。但是,细节总是很重要,正如下面的论文标题所暗示的那样。

最小一致DFA问题不能在多项式之内近似 (Pitt and Warmuth,1989)。

现在您可能想知道,这与您的问题有什么关系?我的答案是,问题的数学定义的设计空间非常大,您在该空间中选择的特定点将影响您将获得的答案的类型。以上内容并不是对如何规范学习问题的全面调查。这只是为了演示您可能要研究的方向。我引用的所有参考文献和结果都过时了,此后此领域做了很多工作。您可以参考一些基本的教科书,以获取足够的背景知识,以准确的方式提出问题并确定所需的答案是否已经存在。


@Vijay D太好了,谢谢。
Cris Stringfellow

这是一个病态的问题。我在下面的回答(和评论)说明了原因。ML可以识别素数,但是从任何实际意义上讲都不会很长。这就是那个特殊野兽的本质。
Dominic Cerisano

12

学习算法的成功关键取决于表示形式。您如何将输入呈现给算法?在极端情况下,假设您将数字表示为主要因子序列-在这种情况下,学习非常简单。在另一个极端中,考虑将数字表示为二进制字符串。我知道的所有标准学习算法都将在这里失败。这是一个可行的方法:找到最小的图灵机,该图灵机接受所有正面示例,而拒绝所有负面示例。[练习:证明这是一个通用的学习者。]与此相关的一个问题是该任务不是图灵可计算的。从角度看,您能否学会仅基于二进制表示来识别素数?


如果我“学习”(例如Miller Rabin算法),则可以学习识别基于二进制表示的素数。但是我想超越诸如此类的事情,看看是否还有其他事情。为什么您提到的任务无法进行图灵计算?
Cris Stringfellow

6
我不了解如何在不提及例如目标函数类的情况下谈论学习问题。
Lev Reyzin

1
列夫当然是对的-但我认为对函数类的讨论将超出问题的范围... :)
Aryeh 2013年

-1

这个问题是现代研究的一部分:给定输入和输出数据,找到从输入产生输出的最简单算法。RNN网络是图灵完备的,因此从理论上讲,通过无穷的SGD,您可以最终得到RNN,它等效于以下代码:

bool isPrime(int n, int d) {
    if(n<2)
        return 0;
    if(d == 1)
        return true;
    else 
    {
        if(n % d == 0) 
            return false;
        else
            return isPrime(n, d - 1);
    }
}

在此数据集上:0 => 0,1 => 0,2 => 1,3 => 1,4 => 0,5 => 1,...等等

问题在于我们没有关于SGD收敛的实用可靠理论,也没有收敛或神经网络深度所需的时间估计。但是最新研究表明,同样的问题也可以解决:

https://zh.wikipedia.org/wiki/Neural_Turing_machine

https://www.microsoft.com/zh-cn/research/wp-content/uploads/2017/10/curr_opin_sys_biol_17.pdf

https://www.microsoft.com/zh-cn/research/wp-content/uploads/2016/12/cav13.pdf

使用Google Scholar搜索关键字...


-3

机器学习受计算复杂度法则的约束。

质因数分解问题在NP复杂度类别中,甚至可能是NP困难的(未证明)。

这就是为什么检测素数是机器学习中最难的问题之一,并且使用这种方法根本不可能实现。

量子计算机(QC)可以在多项式时间内完成,但是Shor的决策是蛮力的,不是机器学习。

基于Shor的QC学习算法可能是一种方法。我真的是在暗示这一点。


1
PRIMES用P表示,所以我不会说“检测素数”是ML或计算机科学的任何其他分支中最难的问题之一。正如我的回答及其下方的评论所解释的那样,“这一切都与代表有关”非常接近家。
Aryeh

抱歉,P≠NP!PRIMES是co-NP,要在P中解决它,目前需要一个完全不适合任何计算范式(尤其是机器学习,无论您如何表示)的Galactic算法。从任何实际意义上讲,它都是NP,并且可能是NP困难的,谢谢。
Dominic Cerisano

1
@Birkensocks您似乎已将Primality测试与Factoring混为一谈。实际上,“ PRIMES in P”是该论文的名称,该论文首先提供了多项式时间算法来检查素数,en.wikipedia.org / wiki / AKS_primality_test 。还要注意,理是在NP和合作-NP,所以不太可能是NP难的,参见例如blog.computationalcomplexity.org/2002/09/...
拉胡尔·萨维尼

是的,我想我已经说过了……
Dominic Cerisano
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.