|
|
|
|
移动端

前言

《概率编程实战》本书的作者Avi Pfeffer正是主流概率编程系统Figaro的首席开发者,他以详尽的实例、清晰易懂的解说引领读者进入这一过去令人望而生畏的领域。通读本书,可以发现概率编程并非“疯狂科学家”们的专利,无需艰深的数学知识,就可以构思出解决许多实际问题的概率模型,进而利用现代概率编程系统的强大功能解题。本节为前言。

作者:姚军 译来源:人民邮电出版社|2018-01-20 16:55

【新品产上线啦】51CTO播客,随时随地,碎片化学习

前言

概率编程是一个激动人心的新领域,正在快速地引起人们的兴趣,从学术领域进入程序员的世界中。本质上,概率编程是创建概率推理模型的新方法,这种模型用来根据观测预测或者推理未知的事物。概率推理很久以来都是机器学习的核心方法之一,在机器学习中,使用了概率模型来描述从经验中得到的知识。在概率编程之前,概率推理系统局限于包含贝叶斯网络等简单、固定结构的模型。而概率编程提供了编程语言的全部能力以表现模型,使概率推理系统摆脱了这些桎梏。这正如从电路转向高级编程语言。

我从青少年时代用BASIC语言开发一个足球模拟程序时就致力于概率编程,只是当时还没认识到。这个模拟程序使用“GOTO 1730 + RANDOM * 5”这样的指令表示随机的事件顺序。经过精心的调校,模拟程序已经很逼真,足以让我娱乐数个小时。当然,在随后的岁月中,概率编程已经逐渐成熟,不再只是包含随机目标的GOTO语句了。

1997年,我和Daphne Koller、David McAllester合作编撰了第一篇关于概率编程的论文。这篇论文引入了一种类似Lisp的概率语言,但是主要的创新是根据关于输出的证据,推理程序可能特征的一种算法。这一创新不仅提供了运行程序以获得可能执行方式的手段,还反向论证和推理了产生观测结果的原因,从而使概率语言超越了典型的概率模拟语言。

21世纪初,我开发了第一种基于函数式编程的通用概率编程系统IBAL。IBAL有很强的表达能力并包含新型推理算法,但是几年之后,我逐渐对其局限性感到不满,主要是难以与数据交互、与应用程序集成。这些局限性促使我在2009年开始开发新的概率编程系统,我将其定名为Figaro。Figaro以实用性作为首要目标,同时并没有牺牲概率编程能力。这导致了将Figaro作为Scala程序库的设计决策,该决策使得概率编程模型更容易与Java虚拟机应用集成。同时,Figaro具备了我所知的概率编程系统中最广泛的表现特征和推理算法。Figaro现在是一个开源GitHub项目,最新版本号为3.3。

概率编程可能是一种难以掌握的技术,因为它需要多种技能,其中主要的是编写概率模型和编写程序的能力。对于许多程序员来说,编写程序很自然,但是概率建模有些神秘。本书的目的是揭开概率建模的神秘面纱,告诉您如何在创建概率模型时高效编程,帮助您有效地使用概率编程系统。本书假定读者在机器学习或者概率推理上没有任何背景。函数式编程和Scala的经验有所帮助,但是要使用本书并不一定要成为Scala的奇才,Scala专业知识也可能因为阅读本书而增长。

阅读本书之后,您应该可以在没有机器学习博士学位的情况下,为许多应用程序设计概率模型,从数据中获得有意义的信息。如果您是某个领域的专家,本书能够帮助您表达脑海中或者纸面上的模型,使它们可以运算,实现对不同概率的计算和分析。如果您是一位数据科学家,本书可以帮助您开发比其他工具更丰富、更详细和更精确的模型。如果您是软件工程师或者架构师,正寻求在系统中加入不确定情形下的推理能力,本书不仅能够帮助您构建处理不确定性的模型,还能将这些模型集成到应用程序中。不管因为何种原因选择本书,我都希望您能够喜欢它,并从中得益。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目      下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

超级网管员——网络设备

本书深入细致地介绍了用于构建网络的最重要的硬件设备——交换机、路由器、安全设备和无线设备,涵盖了原理、参数、分类、适用、规划、接口...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊