Machine learning 如何调试数学方程的实现

Machine learning 如何调试数学方程的实现,machine-learning,statistics,scientific-computing,Machine Learning,Statistics,Scientific Computing,首先,我不确定是否将这个问题发布在CrossValidated或此处,因此如果它位于错误的位置,请随意移动这个问题 我一直对机器学习的一个子集——贝叶斯非参数学感兴趣。 作为我学习过程的一部分,我还尝试在该领域实施各种论文 我经常遇到的一个问题是,计算相关概率所需的方程往往非常复杂,并且包含很多项。 我经常发现调试这些方程变得非常烦人,因为即使方程没有正确实现,程序也可能运行,但给出了错误的答案 此外,在许多情况下,可能并没有官方的实现或在线提供的论文代码,这意味着我并没有什么可以检查我的答案

首先,我不确定是否将这个问题发布在CrossValidated或此处,因此如果它位于错误的位置,请随意移动这个问题

我一直对机器学习的一个子集——贝叶斯非参数学感兴趣。 作为我学习过程的一部分,我还尝试在该领域实施各种论文

我经常遇到的一个问题是,计算相关概率所需的方程往往非常复杂,并且包含很多项。 我经常发现调试这些方程变得非常烦人,因为即使方程没有正确实现,程序也可能运行,但给出了错误的答案

此外,在许多情况下,可能并没有官方的实现或在线提供的论文代码,这意味着我并没有什么可以检查我的答案

我的问题是:给定一些复杂的方程或数学表达式来实现

  • 你如何将数学翻译成代码
  • 如果代码中有一个“静默”错误,如何调试实现错误

  • 非常感谢。我试图列举一些例子,但我认为stackoverflow不支持mathjax。

    我担心你的问题太笼统了——把数学翻译成代码——只能给出非常笼统、模糊的答案。例如:将问题分解成小块,并独立测试这些小块。dmuir建议的分而治之方法是一个非常好的主意。此外,请看一看在计算机代数系统中表示方程的方法,以便检查它们是否与书籍或文章相匹配,并使用该表示方法验证您是否获得了特定输入的预期输出。从那里你可以用传统的编程语言(例如C或Fortran,可能还有其他语言)生成代码,你可以执行这些代码。我知道Maxima()可以做到这一点,我猜Sympy()或其他系统也可以。此外,请记住,您将在非常前沿的领域工作——您可能会在已发布的材料中发现错误或歧义,所以请睁大眼睛!最后,始终尝试在尽可能高的概念层次上工作——始终概括地陈述和解决问题,尽可能避免做出假设,以简化问题。这种方法将使未来的你们更容易理解你们现在在做什么。祝你好运,玩得开心,这是一个非常有趣和有益的话题。另外,可能stats.stackexchange.com更适合这些q。