前  言
随着1997年5月11日“深蓝”首次击败了等级分排名世界第一的人类棋手加里·卡斯帕罗夫,人工智能(AI)技术在人们面前渐渐揭开神秘的面纱。一时间,街头巷尾、职场课堂,人们言必称AI。多少青年学子、技术少年从此埋头于研读数据分析和深度学习。
所谓“智能”,笔者认为除了记忆力外,最主要的特征就是逻辑推理能力。人工智能技术就是要让机器具有记忆力和逻辑推理能力。数字存储技术已经解决了机器的记忆力问题,因此,当今的人工智能技术要解决的主要问题就是让机器具有逻辑推理能力。事实上,人们在日常生活中时时刻刻都在运用逻辑推理能力做出各种判断。与以“‘蕴含关系’:由A得B为永真式”为基础的“普通逻辑”不同,真实生活中绝大多数的推理过程是以“概率”为基础的:由A可能得B。这就决定了在当今的人工智能技术中,概率论和数理统计将扮演核心角色之一。这也是每当看到一段机器学习的论文或算法,眼中就会充斥“贝叶斯原理”“回归”“检验”“预测”“控制”等术语的原因。这意味着作为王者的数学将回归信息技术:要弄懂机器学习的算法机理,概率论与数理统计是必需的基础。另一方面,Python语言以其简单易学、表达形式几乎与数学相同且带有丰富的科学计算及机器学习开发软件包成为数据分析计算及人工智能开发业界新宠。无论是概率统计爱上朴实灵巧的Python,还是Python仰慕敦厚可靠的数学,两者一定会碰撞出绚丽的火花。本书是这绚丽的火花中的一点火星:近40年高校教龄的数学老师(徐子珊)教学经验及年轻的高级研发工程师(曼彻斯特大学硕士、勃兰登堡理工大学博士徐若愚)研发技术的结合。
数理和信息类书籍,例题是读者与作者沟通的基本路径。本书围绕每个概率统计的主题(概念、定理、方法,通常为书中一节),均安排多个例题强化读者对该主题的理解、掌握,共有244个例题。笔者认为,无论是学习数学理论还是提高解决问题的能力,动手做足够量的练习是必不可少的。全书配置了205个练习题,所有的练习题除了提供参考答案方便检验外,每个练习题均有例可循:读者可在本习题前的例题中找到解题的方法和步骤。建议读者认真对待每一个练习题——无论是书面计算型题目还是编程型题目。因为“纸上得来终觉浅,绝知此事要躬行”。本书以概率统计计算为主题。然而,概念的明晰和逻辑的严密是数学学科的本色。本书将概率统计中的重要概念、术语以定义的形式展现,将重要的结论按逻辑层次展示为引理和定理。笔者特别赞赏那些在探究知识的过程中喜欢刨根问底的朋友,因为我们在学习或开发过程中首先必须相信自己做的是对的。数学定理的证明就能让我们建立起这样的自信,本书尽可能对书中论及的各条引理、定理做出证明。然而,有些引理、定理的证明比较冗长,为不影响那些想快速了解本书内容并用于开发实践的读者的阅读效率,笔者将书中部分定理证明放在所在章的附录中,方便有需要的读者翻阅。
10年前,作为一款工业软件,MATLAB是计算机上进行科学计算的主角。全世界各大学、研究所中的科研人员大都使用MATLAB模拟现实系统,建立数学模型,用试验数据进行计算验证。然而,随着机器学习技术迅速普及和深入,Python作为一门程序设计语言,以其开放性及丰富的科学计算工具包几乎能做MATLAB所做的一切工作且可直接用于人工智能系统的开发。本书选择Python及其科学计算应用包,包括用于快速数组处理的numpy、用于统计计算的scipy.stats、用于积分计算的scipy.integrate和用于绘制2D图形的matplotlib作为计算工具,对书中每一节讨论的概率统计的计算问题,给出Python解法。按书中内容的展开顺序,凡第一次出现Python语法、函数、数据表示对象都详细地介绍其书写规范、运用接口,包括参数和返回值的意义。书中的每段程序,均给出了详尽的解释,即使是编程零基础的读者,相信也不会遇到困难。本书作者的联系方式、代码可以通过如下二维码获得。
本书中的代码虽未必是最优的,但都是经过笔者深思熟虑的结果。笔者的思考出发点是让Python编程0基础的读者快速上手,故坚持两点:首先,优先使用Python及工具包提供的编程元素(数据结构、功能函数及类对象);其次,代码编写并未运用诸如OOP之类的高级编程技术,而仅仅严格运用模块化思想将一些通用的计算功能编写成更易理解的函数形式。具有较高水平的读者必要时完全可以运用已有的技术优化代码,譬如将与古典概型相关的各数据表达形式和功能函数封装成通用的古典概型类。
“百密一疏”是笔者数十年教学、写作的深刻体会之一。无论是一堂课、一门课、一篇论文还是一本书,下课后或学期末、交稿或付印后总会因发现或多或少的疏漏而感到无尽的遗憾。对于本书,笔者同样怀着诚惶诚恐的心情,期待读者指出书中的瑕疵乃至疏漏,在有机会修改的时候以臻完善。
特别说明:书中与程序中对应的变量和参数用正体。

徐子珊
2022年11月