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

标签 math machine-learning primes

编辑:我将其移至 cstheory.stackexchange.com

我想要对整数输入序列进行二元决策。对于序列中给定的 n,输出它是否为素数。不要使用 AKS,不要使用 Miller Rabin,不要使用试除法,甚至不要硬编码,因为最后一位数字必须是 1,3,7,9 并且它必须与 1 或 5 全等模 6。

仅使用机器学习。

我不确定,但我评估“普遍共识”是/将是机器学习技术(神经网络、SVM、二元分类器、聚类、贝叶斯推理等)将无法解决这个问题有问题吗?

人们怎么想?

好吧,其次,如果我们有一些带有一些有用信息的整数向量表示(未知),那么原则上是否存在任何主要反对机器学习能够将 n 分类为素数或合数的反对意见,因为我们可以可以这么说,“选择正确的功能”?

让我们忽略向量包含 n 因式分解的简单情况。

最佳答案

机器学习并不是一切的答案。机器学习,顾名思义,是从数据中学习。问题是,为了学习一些东西,我们需要数据中的一种模式,我们可以教算法学习。

根据定义:素数是大于 1 的自然数,除了 1 和它本身之外没有正因数。

这里的基本困难是素数序列

2、3、5、7、11、13、17、19、23、. 。 .

行为“不可预测”或“随机”,我们没有第 n 个素数的(有用的)精确公式!

即使您尝试训练算法,您也会得到近似解决方案的东西。 您无法选择足够好的特征来预测解决方案。

比方说,最困难的方法是使用以下功能训练模型:

  • 任何以偶数结尾的数字(2 除外)都不是质数。
  • 所有数字相加等于 3、6、9 或其约数的任何数字都不是质数。
  • 任何以 5 结尾的数字都不是素数。 (5 除外)
  • 任何数字相同的数字都不是素数。 (除非以 1 结尾)

您最终会得到所有以 1、3、7 或 9 结尾的素数,但并非所有素数都是素数。

因此,当我们想要精确的解决方案并且已经有精确的计算方法时,就不需要找到一种可以近似计算的算法。

关于math - 为什么机器学习不能识别素数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14266409/

相关文章:

memory-management - 如何处理 Torch 中的 GPU 内存泄漏问题?

machine-learning - 应用机器学习来分析混合语言

c - 埃拉托色尼分段筛算法

python - 在python中打印一系列素数

matlab - 水箱 Material 成本设计优化

math - haskell中的泰勒级数

html - 用于简单 html 页面的 WYSIWYG mathEditor

c# - 找到两条线之间的交点

c++ - 如何使用某种统计方法匹配软聚合特征(眼睛、 Nose 、嘴巴)?

c - 在 C 中打印合数的最大质因数