如何使用本书(写在第十次印刷之际):[PDF]
http://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/MLbook2016.htm
本书 2016 年 1 月底出版, 首印 5000 册一周内竟告售罄; 此后 8 个月重印 9 次, 累积 72000 册; 先后登上亚马逊、京东、当当网等的计算机类畅销书榜首. 出乎预料的销量和受欢迎程度, 意味着本书读者已大大超出了预设的目标人群, 这使作者隐隐产生了些许不安, 感觉有必要说一说本书的立场, 以及使用本书需注意的一些事项. 因此, 在第 10 次印刷之际草就本文.
首先, 读者诸君务须注意, 本书是一本教科书.
如本书“后记”所述, 写作本书的主因是作者要开设“机器学习”课. 根据作者的从教经验, 若每堂课涉及页码过多, 则不少同学由于选修多门功课, 在课后或许难有兴趣和精力认真钻研阅读, 教师也会因“包袱太重”而失去个人发挥的空间. 因此, 作为一学期课程的教材, 本书篇幅进行了仔细考量: 16 章正文, 每章 6-7 节, 一般不超过 25 页. 研究生课程若每学期 18 周, 则除去习题和答疑时间, 基本上每周讲授一章; 本科生课程则可进度稍缓, 一学期讲授 9-10 章. 囿于此限, 作者需对内容材料、以及材料讲述的程度进行取舍; 否则若不分巨细,其篇幅可能令读者望而生畏. 因此, 读者不要指望本书是无所不包、“从入门到精通”的书籍. 事实上, 对机器学习这个发展极迅速、已变得非常广袤的学科领域, 那样的书尚不存在; 即便出现, 也非数千页不止, 不适于用作教科书.
第二, 这是一本入门级教科书.
作者以为, 入门阶段最需要的是理清基本概念、了解领域概貌. 这好比人们到了一个陌生的地方, 首先要去找张地图, 大致弄清哪里是山、哪里有水、自己身在何处, 然后才好到具体区域去探索.读者当然都希望所学“既广且深”, 但在有限时间内必先有个折中. 在入门阶段, “顾及细微”应该让位于“观其大略”, 否则难免只见树木、不见森林. 因此, 作者试图通过化繁为简的讲述, 使读者能在有限的篇幅中感受更多的、应该接触到的内容. 一定程度上说, 本书的主要目的就是为读者提供一张“初级地形图”、给初学者“指路”, 而本书提供的这张“地形图”, 其覆盖面与同类英文书籍相较不遑多让.
机器学习中存在多种学派可从其角度阐释其他学派的内容. 作者以为, 理解学派间的包容等价, 在进阶之后对融汇贯通大有裨益, 但在入门阶段, 先看到各自的本原面貌更为重要. 因为没有任何一个学派能完全“碾压”其他, 而过早先入为主地强化某学派观念, 对理解欣赏其他学派的妙处会埋下隐碍. 因此,本书尽可能从材料的“原生态”出发讲述, 仅在少数地方简略点出联系. 需说明的是, 作者试图以相近深度讲述主要内容. 读者若感到在某些地方“意犹未尽”, 或因作者以为, 入门阶段到此程度已可, 对其他内容的初窥优先于此处的进一步深究. 另外, 机器学习飞速发展, 很多新进展在学界尚无公论之前, 作者以为不适于写入入门级教科书中; 但为了不致于与学科前沿脱节, 本书也简略谈及一些本领域专家有初步共识的相对较新的内容.
第三, 这是一本面向理工科高年级本科生和研究生的教科书.
对前沿学科领域的学习, 必然需有基础知识作为先导. 为便于尽可能多的读者通过本书对机器学习有所了解, 作者已试图尽可能少地使用数学知识, 很多材料尽可能选择易于理解的方式讲述. 若读者感觉书中涉及的数学较深, 且自己仅需对机器学习做一般了解, 则不妨略过细节仅做概观, 否则建议对相关基础知识稍作复习以收全功. 囿于篇幅, 作者对许多材料尽可能述其精要、去其细冗,所涉数学推导在紧要处给出阐释, 对理工科高年级同学稍下工夫就易自行弄清的繁冗则惜墨不赘.
读者不要指望通过读这本入门级教科书就能成为机器学习专家, 但书中各章分别给出了一些文献指引, 有兴趣的读者不妨据此进一步深造. 另外, 互联网时代之信息获取已相当便利, 读者可以容易地在网上找到机器学习中关于单个“知识点”的内容, 而信息搜索是理工科学生必备的本领, 只需知道自己在“找”什么, 就应该一定能找到材料. 根据本书提供的“地形图”, 读者若渴望对某个知识点进一步探究, “按图索骥”应无太大困难.
第四, 这本书不妨多读几遍.
初学机器学习易陷入一个误区: 以为机器学习是若干种算法(方法)的堆积, 熟练了“十大算法”或“二十大算法”一切即可迎刃而解, 于是将目光仅聚焦在具体算法推导和编程实现上; 待到实践发现效果不如人意, 则又转对机器学习发生怀疑. 须知, 书本上仅能展示有限的典型“套路”,而现实世界任务千变万化, 以有限之套路应对无限之变化, 焉有不败!现实中更多时候, 需依据任务特点对现有套路进行改造融通. 算法是“死”的, 思想才是“活”的. 欲行此道, 则务须把握算法背后的思想脉络, 无论创新科研还是应用实践, 皆以此为登堂入室之始. 本书在有限篇幅中侧重于斯, 冀望辅助读者奠造进一步精进的视野心法. 读者由本书初入门径后, 不妨搁书熟习“套路”, 数月后再阅, 于原不经意处或能有新得. 此外, 作者在一些角落融入了自己多年研究实践的些微心得, 虽仅只言片语, 但可能不易得之, 进阶读者阅之或可莞尔.
读者若仅对某几种具体机器学习技术的算法推导或工程实现感兴趣, 则本书可能不太适合; 若仅需机器学习算法“速查手册”, 则直接查看维基百科可能更便利一些.
作者自认才疏学浅, 对机器学习仅略知皮毛, 更兼时间和精力所限, 书中错谬之处甚多, 虽每次印刷均对错处或易误解处做勘误修订, 但仍在所难免, 若蒙读者诸君不吝告知, 将不胜感激.
(邮件标题:“机器学习”勘误; 发送至: zhouzh AT nju.edu.cn. 因作者忙于科研教学且诸多俗务缠身, 时间精力所限, 非勘误的学习问题恕难回复, 敬请读者诸君海涵)
勘误修订
[部分修订是为了更便于读者理解,并非原文有误]
(第一版第13次印刷, 2016年11月):
(第一版第12次印刷, 2016年11月)
(第一版第11次印刷, 2016年10月)
(第一版第10次印刷, 2016年9月):
-
- p.156, 式(7.24)分母: "$N_i$" --> "N \times N_i"
- p.156, 式(7.25)下面一行: "其中 $N_i$" --> "其中 $N$ 是 $D$ 中可能的类别数, $N_i$"
- p.156, 式(7.25)下面第4行, 分母: "$17+3$" --> "$17 + 3 \times 2$"
- p.156, 式(7.25)下面第4行: "0.350" --> "0.304"
(第一版第9次印刷, 2016年8月)
(第一版第8次印刷, 2016年5月):
-
- p.5, 第2段倒数第3行: "3、2、2" --> "3、3、3"
- p.5, 第2段倒数第2行: "$4 \times 3 \times 3 + 1 = 37$" --> "$4 \times 4 \times 4 + 1 = 65$"
- p.26, 边注第2行: "2.6 节" --> "2.5 节"
- p.41, 式(2.33)上面一行: "正态分布, 且均值 …… 因此变量" --> "正态分布. McNemar检验考虑变量"
- p.41, 式(2.33)旁加边注: "$e_{01} + e_{10}$ 通常很小, 需考虑连续性校正, 因此分子中有 $-1$ 项"
- p.45, 第一个边注: "由式(2.37)" --> "考虑到噪声不依赖于$f$, 由式(2.37)"
- p.63, 式(3.45)下面一行: "$N-1$个最大" --> "$d'$个最大非零"
- p.63, 式(3.45)下面第2行: "矩阵." --> "矩阵, $d'\le N-1$."; 加边注: "最多有$N-1$个非零特征值"
- p.63, 式(3.45)下面第3行: "$N-1$维" --> "$d'$维"
- p.63, 式(3.45)下面第4行: "$N-1$通常远小于数据原有的属性数" --> "$d'$通常远小于数据原有的属性数$d$"
- p.100, 图5.5, 左图最上面的 "阈值$0.5$" --> "阈值$1.5$"
- p.100, 图5.5, 左图最右边的 "阈值$0.5$" --> "阈值$-1.5$"
- p.100, 图5.5, 左图中间的"1 -1 -1 1" --> "1 1 -1 -1"
- p.125, 式(6.18): "$y_s$" --> "$1/y_s$"
- p.136, 式(6.54): 右边最后一项中的四处 "$i$" --> "$j$"
- p.136, 式(6.54): 右边最后一项中最后的 "${\bm x}$" --> "${\bm x}_i$"
- p.152, 第三个式子等号右端: "$0.375$" --> "$0.625$"
- p.153, 第3行: "$0.038$" --> "$0.063$"
- p.153, 第6行: "$0.038$" --> "$0.063$"
- p.160, 式(7.29)下面第2行: "需多少字节来描述$D$" --> "对$D$描述得有多好";加边注: "可以从统计学习角度理解, 将两项分别视为结构风险和经验风险"
- p.239, 式(10.39)第二行式子: 去掉上标 "$2$"
- p.244, 第13行: "Locally" --> "Nonlinear dimensionality reduction by locally"
- p.244, 第14行: "2316" --> "2326"
- p.249, 式(11.2): "$i=1$" --> "$k=1$"
- p.253, 倒数第5行: "[Boyd and Vandenberghe, 2004]" --> "[Combettes and Wajs, 2005]"
- p.263, 倒数第4行, 插入: "Combettes, P. L. and V. R. Wajs. (2005). ``Signal recovery by proximal forward-backward splitting.'' \textit{Mutiscale Modeling & Simulation}, 4(4):1168--1200."
- p.277, 式(12.29): "$E(h) - \hat{E}(h)$" --> "$\left| E(h) - \hat{E}(h) \right|$"
- p.299, 式(13.9)后第三段第2行: "关于 $D_u$" --> "涉及 $C_u$"
(第一版第7次印刷, 2016年4月):
-
- p.42, 表2.5下面一段的第三行: "服从正态分布,其均值" --> "的均值"
- p.42, 倒数第二行加边注: "原始检验要求$k$较大(例如$>30$),若$k$较小则倾向于认为无显著区别"
(第一版第6次印刷, 2016年4月):
-
- p.56, 图3.1中,红色第一和第二个点的坐标互换
- p.114, 图5.15中, 卷积层 16@10x10 和 采样层 16@5x5 各去掉 8 个方块
- p.301, 式(13.12)的下一行: "$({\bm f}_l^{\rm T}\,{\bm f}_u^{\rm T})^{\rm T}$" --> "$({\bm f}_l^{\rm T}; {\bm f}_u^{\rm T})$"
- p.372, 图16.2: 从"s=健康"到"s=溢水"的 "r=1" --> "r=-1"
- p.376, 图16.5的边注: "第 4 行中式(16.4)的参数" --> "该参数在第4行使用"
- p.385, 第二行: "在使用策略时并不需要$\epsilon-$贪心" --> "而不是为了最终使用"
- p.387, 倒数第二行: "$\epsilon-$贪心策略, 而执行(第5行)的是原始策略" --> "原始策略, 而执行(第4行)的是$\epsilon-$贪心策略"
- p.393, 第四段第一行: 去掉 "[Kuleshov and Precup, 2000]和"
- p.395, 去掉最后一行
- p.396, 去掉第一行
- p.402, 式(A.32)加边注: "机器学习中 $\bf W$ 通常是对称矩阵"
(第一版第5次印刷, 2016年3月):
-
- p.62, 第1行加边注: "$(\bm{\mu}_0 - \bm{\mu}_1)^{\rm T} \bm{w}$ 是标量"
- p.78, 图4.4, 从右往左数: 第二个叶结点改为“好瓜”,第三个叶结点改为“坏瓜”
- p.85, 图4.8, 从右往左数: 第二个叶结点改为“好瓜”,第三个叶结点改为“坏瓜”
- p.85, 图4.8, 中间分支底层: “硬挺”--> “硬滑”
- p.89, 图4.9, 中间分支底层: “硬挺”--> “硬滑”
- p.103, 最后一行的式子: 求和的"$q$" --> "$l$"
- p.399, 式(A.9): "$A_{1 \sigma n}$" --> "$A_{n \sigma n}$"
- p.400, 第1行: "(1,4,3,2)" --> "(3,1,2)"
- p.402, 式(A.32)最后一行的式子中: "$2{\mathbf A}$" --> "$2{\mathbf A}^{\rm T}$"
(第一版第4次印刷, 2016年3月):
-
- p.59, 式(3.27)加边注: "考虑 $y_i \in \{0, 1\}$"
(第一版第3次印刷, 2016年3月):
-
- p.15, 第5行: "居功" --> "厥功"
- p.55, 最后一行: 式子括号中的逗号改为分号
- p.125, 第3行: "减小" --> "增大"
- p.125, 第4行,第6行: "减幅" --> "增幅"
- p.125, 第5行: "减小" --> "增长"
(第一版第2次印刷, 2016年2月):
-
- p.38, 第6行: "$\epsilon^{m'}$" --> "${m \choose m'} \epsilon^{m'}$"
- p.119, 第14行: "318--362" --> "533--536"
- p.404, 式(B.3)最后一行的式子 --> "$\lambda g({\bm x})=0$"
(第一版第1次印刷, 2016年1月):
-
- p.6, 图1.2: 图中两处"清脆" --> "浊响"
- p.28, 第3段倒数第2行: "大量" --> "不少"
- p.28, 边注: "例如 ……上百亿个参数" --> "机器学习常涉及两类参数: 一类是算法的参数, 亦称"超参数", 数目常在10以内; 另一类是模型的参数, 数目可能很多, 例如……上百亿个参数. 两者调参方式相似, 均是产生多个模型之后基于某种评估方法来进行选择; 不同之处在于前者通常是由人工设定多个参数候选值后产生模型, 后者则是通过学习来产生多个候选模型(例如神经网络在不同轮数停止训练)."
- p.31, 倒数第3行: "Event" --> "Even"
- p.256, 第4段: "固定住${\bf \alpha}_i$" --> "以${\bf \alpha}_i$为初值"
- p.256, 最后一段第1行: "${\bf E}_i =$" --> "${\bf E}_i = {\bf X} - $"
- p.385, 式(16.25)和(16.26): 两处"$r_i$" --> "$R_i$"
- p.385, 式(16.25)下一行: "若改用……" --> "其中$R_i$表示第$i$条轨迹上自状态$x$至结束的累积奖赏. 若改用……"
- p.386, 式(16.28)下一行: "始终为1" --> "对于$a_i=\pi(x_i)$始终为1"
- p.386, 图16.11, 第4步: 两处 "$\pi(x)$" --> "$\pi(x_i)$"
- p.386, 图16.11, 第6步的式子 --> "$R=\frac{1}{T-t}\left(\sum_{i=t+1}^T r_i\right) \prod_{i=t+1}^{T-1} \frac{\mathbb I(a_i=\pi(x_i))}{p_i}$"
- p.386, 图16.11, 边注"计算修正的累积奖赏." --> "计算修正的累积奖赏. 连乘内下标大于上标的项取值为1."; 去掉边注"重要性采样系数."