有人使用过编程语言Church吗?任何人都可以推荐实际应用吗?我刚刚发现了它,虽然它听起来像是解决了人工智能和机器学习中的一些长期存在的问题,但我对此表示怀疑。我从未听说过它,并且惊讶地发现它实际上已经存在了几年,并已在论文Church: a language for generation models中宣布。
4 回答
对于实际应用的问题,我不知道该说些什么。使用生成模型对认知能力进行建模是否构成了您心目中的“实际应用”?
Church 的关键重要性(至少现在是这样)是它允许我们这些使用概率推理解决方案来解决 AI 问题的人以更简单的方式进行建模。它本质上是 Lisp 的一个子集。
我不同意 Chris S 的观点,即它完全是一种玩具语言。虽然其中一些推理问题可以用其他语言复制(我在 Matlab 中构建了几个),但它们通常不是很可重用,你真的必须喜欢在 4 和 5 深度循环中工作(我讨厌它)。
Church 没有以这种方式解决问题,而是利用 lamda calaculus 的递归优势,并且还允许一种称为记忆的东西,这对生成模型非常有用,因为你的生成模型通常在一次又一次的试验中不一样——尽管为了测试你真的需要这个。
我想说,如果你所做的与贝叶斯网络、分层贝叶斯模型、POMDP 的概率解决方案或动态贝叶斯网络有关,那么我认为 Church 是一个很大的帮助。对于它的价值,我曾与 Noah 和 Josh(Church 的两位作者)一起工作,现在没有人能更好地处理概率推理(恕我直言)。
Church 是概率编程语言家族的一部分,它允许将模型的估计与其定义分开。这使得希望应用机器学习但本身不是核心机器学习研究人员的人更容易获得概率建模和推理。
长期以来,概率编程意味着您必须为您的数据建立一个模型并自己推导出模型的估计值:您有一些观察值,并且您想学习参数。模型的结构与您如何估计参数密切相关,您必须具备相当先进的机器学习知识才能正确进行计算。最近的概率编程语言试图解决这个问题,并使数据科学家或从事机器学习工作的人更容易获得这些东西。
作为类比,请考虑以下内容:
你是一名程序员,你想在计算机上运行一些代码。早在 1970 年代,您必须在穿孔卡片上编写汇编语言并将它们输入大型机(您必须为此预定时间)才能运行您的程序。现在是 2014 年,有一些高级的、简单易学的语言,即使你不了解计算机体系结构的工作原理,你也可以用这些语言编写代码。了解计算机如何使用这些语言编写代码仍然很有帮助,但您不必这样做,而且编写代码的人比使用穿孔卡片编程的人要多得多。
概率编程语言对使用统计模型的机器学习也是如此。此外,Church 并不是唯一的选择。如果您不是函数式编程爱好者,您还可以查看以下图形模型中的贝叶斯推理框架:
- Infer.NET ,由英国剑桥的 Microsoft Research 实验室用 C# 编写
- stan,由哥伦比亚统计部门用 C++ 编写
你知道有什么比我说的更能描述教会的吗?这篇麻省理工学院文章:http ://web.mit.edu/newsoffice/2010/ai-unification.html
它稍微有点双曲线,但是,我不能免于本文中存在的乐观情绪。
很可能,这篇文章打算在愚人节发表。这是去年三月下旬的另一篇文章。 http://dspace.mit.edu/handle/1721.1/44963