2010-03-31 133 views
12

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

+0

Slashdot,我猜? – Jacob 2010-03-31 17:25:43

+0

充其量,讨论问题应该被标记为社区维基。大多数情况下,它们不是Stack Overflow的适当格式。 – danben 2010-03-31 17:32:55

+1

在阅读了项目的wiki和文档之后,很明显这只是另一种没有严肃的未来的玩具语言。这些例子都不是特定于教会的,而且几乎可以在任何语言中复制。明显引起我注意的文章过分夸大和歪曲了项目的范围。投票结束。 – Cerin 2010-04-02 18:28:19

回答

6

我不知道该怎么说实际应用的问题。用生成模型建模认知能力是否构成了您的思想中的“实际应用”?

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

我不同意克里斯S,它是在所有的玩具语言。虽然这些推理问题中的一些可以用其他语言复制(我已经在Matlab中建立了几个),但它们通常不是很可重用,而且你真的必须热衷于在4和5中深入循环(我讨厌它)。

Church没有这样处理问题,而是使用lamda calaculus的递归优势,并且允许使用memoization,这对于生成模型非常有用,因为您的生成模型通常与试验后的试验不同 - 尽管为了测试你真的需要这个。

我想说,如果你所做的与贝叶斯网络,分层贝叶斯模型,POMDPs或动态贝叶斯网络的概率解决方案有任何关系,那么我认为教会是一个很好的帮助。对于它的价值,我与Noah和Josh(Church的两位作者)合作过,现在没有人更好地处理概率推论(恕我直言)。

+0

Lamda calaculus已经在几十种图书馆中用于多种语言。 memoization是一个与时间一样古老的设计模式。这里没有新东西。我仍然不清楚为什么他们觉得他们需要发明另一种Lisp方言,而不是仅仅使用Common Lisp或Scheme。 – Cerin 2010-04-22 13:20:23

+1

Cerin,语言的重点本身既不是lambda演算,也不是记忆,而是通过编写一个模拟它的程序来表示一个“世界”概率模型的能力,然后询问特定事件发生的可能性例如,如果您编写一个程序来描述如何将3D对象投影到2D图像中,则可以问:给定此图像时,生成它的3D对象是什么?也就是说,你自动从一个相对简单的图像投影问题转向更困难的视觉问题。你给出*输出*并得到*输入*,以概率。 – user118967 2015-03-12 18:30:33

2

教堂是概率编程语言家族的一部分,它允许将模型的估计从其定义中分离出来。这使得想要应用机器学习的人们更容易理解概率建模和推理,但是他们本身并不是硬核机器学习研究人员。

很长一段时间,概率编程意味着您必须为您的数据想出一个模型,并自己推导模型的估计值:您有一些观测值,并且您想要了解这些参数。模型的结构与估算参数的方式密切相关,并且您必须拥有相当先进的机器学习知识才能正确进行计算。最近的概率编程语言试图解决这个问题,并使数据科学家或从事机器学习工作的人员更容易获得。

打个比方,考虑以下因素:

你是一个程序员,你想在计算机上运行一些代码。早在20世纪70年代,你必须在打卡上编写汇编语言,然后将它们送入一台主机(为此你必须预定时间)以运行你的程序。现在是2014年,并且有高级,简单易学的语言,即使不知道计算机体系结构如何工作,也可以编写代码。了解计算机如何使用这些语言编写代码仍然很有帮助,但是您不需要就可以使用,而且如果您不得不使用打孔卡进行编程,则有更多的人编写代码。

概率编程语言对于使用统计模型的机器学习也是一样的。另外,教会不是这个的唯一选择。如果你不是一个函数式编程的奉献者,你也可以看看下面的框架,在图形模型贝叶斯推理: