【问题标题】:Applications for the Church Programming Language教会编程语言的应用
【发布时间】:2011-02-03 01:05:58
【问题描述】:

有人使用过Church 编程语言吗?任何人都可以推荐实际应用吗?我刚刚发现了它,虽然它听起来像是解决了人工智能和机器学习中的一些长期存在的问题,但我对此表示怀疑。我从未听说过它,并且惊讶地发现它实际上已经存在了几年,并已在Church: a language for generative models 的论文中宣布。

【问题讨论】:

  • 充其量,讨论问题应该被标记为社区维基。大多数情况下,它们不适合 Stack Overflow 的格式。
  • 在阅读了项目的 wiki 和文档之后,很明显这只是另一种没有严肃未来的玩具语言。这些例子都不是特定于 Church 的,几乎可以用任何语言轻松复制。引起我注意的文章显然夸大了并歪曲了该项目的范围。投票结束。

标签: artificial-intelligence machine-learning church-pl


【解决方案1】:

这篇文章很可能打算在愚人节发布。 这是去年三月下旬的另一篇文章。 http://dspace.mit.edu/handle/1721.1/44963

【讨论】:

    【解决方案2】:

    对于实际应用的问题,我不知道该说些什么。使用生成模型对认知能力进行建模是否构成了您心目中的“实际应用”?

    Church 的关键重要性(至少现在是这样)是它允许我们这些使用概率推理解决方案来解决 AI 问题的人以更简单的方式进行建模。它本质上是 Lisp 的一个子集。

    我不同意 Chris S 的观点,即它完全是一种玩具语言。虽然其中一些推理问题可以用其他语言复制(我在 Matlab 中构建了几个),但它们通常不是很可重用,你真的必须喜欢在 4 和 5 深度循环中工作(我讨厌它)。

    Church 没有以这种方式解决问题,而是利用了 lamda calaculus 的递归优势,并且还允许一种称为记忆的东西,这对生成模型非常有用,因为您的生成模型通常在一次又一次的试验中不一样——尽管对于测试你真的需要这个。

    我想说,如果您正在做的事情与贝叶斯网络、分层贝叶斯模型、POMDP 的概率解决方案或动态贝叶斯网络有关,那么我认为 Church 是一个很大的帮助。值得一提的是,我曾与 Noah 和 Josh(Church 的两位作者)合作过,目前没有人能更好地处理概率推理(恕我直言)。

    【讨论】:

    • Lamda calaculus 已在多种语言的数十个库中实现。记忆化是一种与时间一样古老的设计模式。这里没有什么新鲜事。我仍然不清楚他们为什么觉得他们需要发明另一种 Lisp 方言,而不是仅仅使用 Common Lisp 或 Scheme。
    • Cerin,语言的重点既不是 lambda 演算本身,也不是记忆,而是通过编写一个模拟“世界”的程序来表示“世界”的概率模型的能力,然后问有关特定事件的可能性有多大的问题。例如,如果您编写一个程序来描述如何将 3D 对象投影到 2D 图像中,您可能会问:给定此图像,生成它的 3D 对象是什么?也就是说,你会自动从一个相对简单的图像投影问题转到更难的 vision 问题。你给出 output 并得到 input,有概率。
    【解决方案3】:

    你知道有什么比我说的更能描述教会吗?这篇 MIT 文章:http://web.mit.edu/newsoffice/2010/ai-unification.html

    这有点夸张,但我也不能幸免于本文中的乐观情绪。

    【讨论】:

      【解决方案4】:

      Church 是概率编程语言家族的一部分,它允许将模型的估计与其定义分开。这使得希望应用机器学习但本身不是核心机器学习研究人员的人更容易使用概率建模和推理。

      长期以来,概率编程意味着您必须为您的数据建立一个模型并自己推导出模型的估计值:您有一些观察值,并且您想了解参数。模型的结构与您如何估计参数密切相关,并且您必须具备相当先进的机器学习知识才能正确进行计算。最近的概率编程语言试图解决这个问题,并使数据科学家或从事机器学习工作的人更容易获得这些东西。

      作为一个类比,考虑以下几点:

      您是一名程序员,您想在计算机上运行一些代码。回到 1970 年代,您必须在穿孔卡片上编写汇编语言并将它们输入大型机(您必须为此预定时间)才能运行您的程序。现在是 2014 年,有一些高级的、简单易学的语言,即使你不了解计算机体系结构的工作原理,你也可以用这些语言编写代码。了解计算机如何使用这些语言编写代码仍然很有帮助,但您不必必须这样做,而且编写代码的人比使用穿孔卡片编程的人要多。

      概率编程语言对使用统计模型的机器学习也有同样的作用。此外,Church 并不是唯一的选择。如果您不是函数式编程爱好者,您还可以查看以下图形模型中的贝叶斯推理框架:

      【讨论】:

        猜你喜欢
        • 2010-09-06
        • 2011-11-27
        • 2017-04-07
        • 1970-01-01
        • 1970-01-01
        • 2011-11-22
        • 2011-01-03
        • 2010-10-01
        相关资源
        最近更新 更多