|
|
|
|
移动端

关于本书

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

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

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

关于本书

不管商业、科学、军事上还是日常生活中,许多决策都涉及不确定情况下的判断。当不同的因素将您引向不同方向,如何知道最应该注意的是哪个方面?概率模型可以表达关于您所处情况的所有相关信息。概率推理使用这些模型确定对决策影响最大的变量的概率。您可以使用概率推理预测最可能发生的情况:您的产品能否在目标价格上取得成功;患者对特定疗法的反应是否良好;您的候选人如果采用某种立场,能否赢得选举?您还可以使用概率推理推导出所发生情况的可能原因:如果产品失败,是不是因为价格太高?

概率推理也是机器学习的主要方法之一。您在概率模型中编码关于所在领域的初始信念,如用户对市场产品的一般反应。然后,提供训练数据(可能与特定产品的用户反应有关),更新信念以获得新模型。现在,可以使用新模型预测未来的结果,如规划中的产品是否成功,或者推导出观测结果的可能原因,如新产品失败的原因。

过去,概率推理使用专用语言表示概率模型。近年来,我们意识到可以使用常规的编程语言,这造就了概率编程。概率编程有三大好处。首先,在构建模型时,可以从编程语言的所有特征中获益,如丰富的数据结构和控制流。其次,概率模型很容易与其他应用程序集成。第三,可以从用于论证模型的通用推理算法中获益。

本书的目标是提供在日常活动中使用概率编程的知识。特别是:

如何构建概率模型并以概率程序表达。

概率推理的工作原理以及如何以各种推理算法实现。

如何使用Figaro概率编程系统构建实用的概率程序。

Figaro以Scala程序库的形式实现。和Scala一样,Figaro结合了函数式和面向对象编程风格。这对于不了解函数编程的人来说很有用。本书不使用高级函数式编程概念,所以您应该能在对此了解有限的情况下理解。同样,对Scala有所了解是有益的。尽管本书中常常会解释Scala的结构,但不是Scala的简介。同样,本书通常不使用Scala较为难懂的功能,所以略有涉猎就应该足够了。

路线图

本书的第1部分简介概率编程和Figaro。第1章首先解释概率编程的定义及其实用性,然后简单介绍Figaro。第2章是Figaro的使用教程,帮助您很快地了解概率程序的编写。第3章提供了一个完整的概率编程应用——一个垃圾邮件过滤器,包括论证给定电子邮件是常规邮件还是垃圾邮件的组件,以及从训练数据学习概率模型的组件。第3章的目标是在详细介绍建模技术之前,提供各种技术相互融合的全貌。

第2部分介绍概率程序的构建。第4章包含有关概率模型和概率程序的基本材料,这对理解它们,真正了解创建概率程序时需要做什么很重要。第5章提供了两种作为概率编程核心的建模框架——贝叶斯网络和马尔科夫网络。第6~8章描述了一组用于构建更高级程序的实用编程技术。第6章讨论使用Scala和Figaro集合组织涉及许多同类变量的程序的方法。第7章讨论面向对象编程,这种方法对于概率编程和常规程序同样有益。第8章介绍建模动态系统。动态系统是状态随时间推移而变化的系统,是这一章深入介绍的概率推理极其常见和重要的应用。

第3部分向您传授关于概率推理算法的知识。理解推理对于有效使用概率编程很重要,这样您就可以使用适合于任务的算法,对合适的方式配置,以支持有效推理的方式表达模型。第3部分在传授算法理论和使用这些算法的实践技巧之间达成了平衡。第9章是基础,介绍了捕捉概率推理中使用的主要思路的3条原则。第10章和第11章描述了两个主要的推理算法家族。第10章描述因子分解算法,包括对因子及其工作原理的介绍,以及变量消除和置信传播算法。第11章介绍抽样算法,特别关注重要性抽样和马尔科夫链蒙特卡洛算法。第10章和第11章专注于计算感兴趣的变量概率的基本查询,而第12章介绍如何使用因子分解和抽样算法计算其他查询,如多变量联合概率、变量最大可能值和观测证据的概率。最后,第13章讨论两个高级而重要的推理任务:监视随时变化的动态系统,从数据中学习概率模型的数值参数。

每章都有一组练习,涵盖了从简单计算、编程任务到开放思维练习的范围。

本书还包括两个附录。附录A是Figaro的安装指南。附录B是其他概率编程系统的概况。

关于代码和练习

本书的代码以等宽字体显示,以便和正文分开。许多代码清单中含有代码注释,强调了重要的概念。在某些情况下,清单之后有链接到解释的编号项目。

本书包含许多代码示例,其中大部分可以从本书网站www.manning.com/books/ practical-probabilistic-programming 的在线代码库中找到。该网站还包含部分练习答案。


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

51CTO读书频道二维码


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

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

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

读 书 +更多

Java网络编程精解

本书结合大量的典型实例,详细介绍了用Java来编写网络应用程序的技术。本书的范例都基于最新的JDK 1.5版本,书中内容包括:Java网络编程的...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊