对于这个复杂的问题,你会推荐什么类型的 AI?

人工智能 机器学习 深度学习 人工智能设计
2021-11-05 18:42:22

我正在尝试开发一种人工智能,它可以在我们运行测试用例的同时帮助调试大型软件系统。AI 可以访问系统开发人员可以访问的任何内容,即日志文件和来自跟踪点的执行数据。它还可以访问系统的结构和所有源代码。

该 AI 的最终目标是能够在执行期间检测运行时错误,并定位这些错误的来源。

我正在考虑使用深度神经网络,其中输入将是执行数据和日志输出。使用此输入,它将能够验证我们正在运行的系统的当前版本是否正常运行。这种方法的问题在于,它所评估的系统会随着它的开发而不断变化,因此 NN 将拥有的唯一培训材料来自系统的最后一个稳定版本(甚至可能会有一些错误)。此外,为我们可以训练神经网络的系统生成测试用例将非常耗时,并且会破坏首先使用神经网络的目的。

我想知道您认为哪种 AI 设计适合这项任务。如果您想了解与该问题相关的任何其他信息,请告诉我。据我所知,以前从未做过类似的事情。

值得一提的是,我的团队有一些非常强大的机器,我们可以在上面运行 AI。

3个回答

您正在尝试解决The Halting Problem的一个变体,即检测计算机程序是要停止还是永远运行的问题。

停机问题是不可计算的,这意味着不可能编写解决它的计算机程序。很容易看出你的问题也是不可计算的。如果您可以预测一个程序是否会产生错误,那么对于有人想要解决停止问题的任何程序 X,我们可以编写一个新程序:

  1. 运行(X)
  2. 错误(“X 完成运行”)。

并使用您的算法来确定 X 是否会完成运行。由于已知停机问题是不可计算的,这意味着您的问题也必须是不可计算的。

但这并不是说一切都丢失了。形式化验证是一个使用一些人工智能技术(主要基于推理,但我认为现在也有一些机器学习)来尝试为某些程序解决这个问题的领域。但它不能适用于每个程序。

我想你会发现这个链接很有帮助。它演示了如何识别大型任意字节数据中的模式。

https://devblogs.nvidia.com/malware-detection-neural-networks/

视频软件堆栈等大型软件系统的调试和验证 如果以视频软件堆栈的验证和调试为例,肉眼很难识别显示器上的故障。在这种情况下,您可以使用基于 DNN 的图像分类器来识别功能故障。