判别式模型 vs 生成式模型

同样是处理分类问题,Logistic 回归模型直接通过参数 $w$ 和 $b$ 计算预测值与真实值的损失,并使用梯度下降策略进行参数优化,这属于判别式(Discriminative) 模型。而使用生成式(Generative) 模型进行分类,则会假设数据服从某种分布,例如高斯分布,去算与对应分布有关的参数,例如 $\mu^{1}, \mu^{2}, \Sigma^{-1}$, 再使用这些参数将 $w$ 和 $b$ 表示出来。生它们都可用于机器学习中监督学习算法,只是对于数据建模方式不同。

换而言之,判别模型是直接通过观测到的训练样本数据,学习后验分布 $p(y|x)$, 体现形式为直接将输入 $x$ 代入学得的函数 $f^{\ast}(x)$ 进行判别。而生成模型是间接的学习数据的后验分布 $p(y|x)$,它是先由数据学习联合概率分布 $P(x,y)$, 然后通过求解类别的先验概率 $P(y)$ 和类别条件概率 $p(x|y)$ 来反推后验分布,然后利用贝叶斯公式来求 $p(y|x)$, 以概率形式体现。之所以称为生成方法,是因为模型表示了给定输入 $x$ 产生输出 $y$ 的生成关系。

当模型给定后,所对应的参数空间或者说函数池也被给定。但是由于我们做出了不同的假设,最终根据同样的训练数据找出的参数会不一样。判别式模型没有对数据的分布进行任何假设,而生成式模型会根据分布假设去寻找参数,通常判别式模型得到的参数用于测试,效果会比生成式模型的参数好一些。

生成式模型优缺点:朴素贝叶斯举例

假设现在训练数据中有 $13$ 个样本,对应的类别标签如上图所示。如果这时有一个测试样本 $x=[1,1]$, 人类的直觉会将其分为类别 $1$, 我们看看朴素贝叶斯(Naive Bayes) 方法的输出会是什么。

朴素贝叶斯假设每个样本的每个特征产生的概率之间是独立的,即

根据上面的训练数据,可以计算出先验和条件概率:

接下来可以根据贝叶斯公式进行计算 $x$ 属于类别 $1$ 的后验概率:

结果发现 $P\left(C_{1} | x\right) < 0.5$, 即朴素贝叶斯认为基于训练数据的先验,测试样本 $x$ 属于类别 $2$ 的概率会更大一些,这和我们人类的直觉不符合。朴素贝叶斯不考虑样本特征之间的关系,并假设不同的特征是独立产生的,在类别 $2$ 中没有 $x$ 这样的样本,只是因为我们抽取的样本数量不够多,因此没有观察到这件事情。而朴素贝叶斯所做出的假设,就是帮我们脑补了“不同维度的特征是独立的”所潜在的影响。

在进行概率分布假设的情况下,生成式模型优势如下:

  • 受训练数据量影响比较小
  • 受噪声数据量影响比较小
  • 先验概率与已知类别的条件概率可以从不同的来源进行估计

频率学派 vs 贝叶斯学派

机器学习的本质可以理解成问题建模和解目标函数的参数优化两个过程。我们在解决线性分类问题时,使用了最大似然估计(Maximum Likelihood Estimation, MLE) 分别对概率生成模型和 Logistic 回归模型进行了参数估计,并且通过后验概率的 Sigmoid 函数形式找到了这两种模型之间的联系,这个过程十分舒畅。

在理解概率的概念时,频率学派和贝叶斯学派对世界的认知有本质不同:频率学派认为世界是确定的,有一个本体,这个本体的真值是不变的,我们的目标就是要找到这个真值或真值所在的范围;而贝叶斯学派认为世界是不确定的,人们对世界先有一个先验知识,而后通过观测数据对这个先验做调整,我们的目标是要找到最优的描述这个世界的概率分布。

随着数据量的增加,参数分布会越来越向观测到的数据靠拢,先验的影响力会越来越小。而如果先验是均匀分布,则贝叶斯方法等价于频率方法。因为直观上来讲,先验是均匀分布本质上表示对事物没有任何预判。另外要注意,人们的先验知识不一定是正确的,只是在有些时候比较奏效。所以两种学派之间的争论很多,对理解机器学习算法原理的思维角度也有所不同。

实际上,最大似然估计是频率学派常用的估计方法,假设观测到的抽样样本(统计学中常常使用这种说法) 或者说收集到的训练样本为 $X=\left(x_{1}, x_{2}, \ldots, x_{n}\right)$, 各个样本之间满足独立同分布(Independent and identical distribution, i.i.d), 那么最大似然估计参数 $\theta$ 的思路如下:

对于函数 $P(X | \theta)$, 如果 $\theta$ 是已知确定的,$x$ 是变量,这个函数叫做概率函数(Probability Function), 它描述对于不同的样本点 $x$, 其出现概率是多少。如果 $x$ 是已知确定的,$\theta$ 是变量,这个函数叫做似然函数(Likelihood Function), 它描述对于不同的模型参数,抽样出现这 $x$ 个的样本点的概率是多少,似然即“似乎是对的”。

参数估计中指的是第二种情况,我们希望使似然最大,意味着使用该参数再次进行同等规模的数据抽样,得到相同的数据的可能性最大。由于独立同分布的性质,整个抽样的先验概率可以写成多次单个样本的先验之积。取对数并不影响最优化的目的,因为其单调。同时这样做可以将求积的形式转化为求和的形式,这样降低了连乘带来的缩放影响,也利于进行计算微分。在前面加上符号,则变成了最小化问题,可以使用梯度下降方法。因此最大似然估计其实本质上,是在做最小化负对数似然(Negative Logarithm Likehood, NLL), 这个参数估计思想十分常见。

上面这些就是概率论中频率学派的思想,但是贝叶斯学派中的参数估计方法也很优雅,即最大后验估计(Maximum A Posteriori, MAP). 同样地假设观测到的抽样样本为 $X=\left(x_{1}, x_{2}, \ldots, x_{n}\right)$, 各个样本之间满足独立同分布,那么最大后验估计参数 $\theta$ 的思路如下:

上式中由第二行到第三行使用了贝叶斯定理,

而 $P(X)$ 与 $\theta$ 无关,因此在优化过程中可以忽略,而对比最大似然估计,你会发现:

因此最大后验估计和最大似然估计的不同之处仅在于多了个先验 $-\log P(\theta)$. 对 $\theta$ 的先验,无非是假设参数 $\theta$ 服从某一种分布,等同于多考虑了潜在的影响因素。这就好像你上班迟到了,老板骂你,不一定是因为你把什么工作搞砸了,可能只是他今天出门前和太太吵了一架。但是我们也要知道,先验知识不一定是正确的,只是人为进行的假设。

这种不仅想要让似然最大,而且希望参数出现概率 $P(\theta)$ 最大的思想,类似于给损失函数的参数加上一个惩罚项,即正则化思想。当先验 $P(\theta)=1$, 即均匀分布,此时的最大似然估计和最大后验估计没有区别。但是如果假定先验是常见的高斯分布,

对其取负对数似然后得到

此时你会发现,在最大后验估计中采用高斯分布假设参数,等同于在最大似然估计中使用了 $L_2$ 正则化,这也印证了前面的说法。如果你还不了解什么是 $L_2$ 正则化,后面讲解深度神经网络训练技巧时,会有具体的解释。

贝叶斯估计

频率派思想依赖于对数据的观察,贝叶斯派思想依赖于对先验的假设。由于现在机器学习算法使用的数据量越来越大,因此人们更多地倾向于使用频率派方法进行最大似然估计。换而言之,大规模的数据量已经可以更好的体现出数据的分布,而人为的先验反而会起到不正确的误导效果。

想要了解贝叶斯思想,最经典的书籍是 Christopher Bishop 的 Pattern Recognition and Machine Learning. 而想要正确地读懂一本书,需要了解作者的行文思路和组织方法。

这本书基本上将贝叶斯框架能囊括的机器学习方法都囊括了,除了最后一章的组合模型和第八章图模型属于比较通用的部分外,整本书的思路为:

  1. 基本模型建模
  2. 极大似然估计(MLE)
  3. 极大后验估计(MAP)
  4. 贝叶斯参数估计

贝叶斯参数估计又分为推断(Inference) 和预测(Predication) 两个过程,不能忽略 $P(X)$.

假设已有样本 $X$, 先不考虑计算 $P(\theta | X)$ 的实际难度,贝叶斯预测想要计算得到新样本 $\tilde{x}$ 的概率

求后验 $P(\theta | X)$ 其实变成了一个微积分问题,计算非常复杂甚至无法求解,因此会引申出许多新的计算方法。因此从贝叶斯角度来看可以发展出概率图模型,本质是想方设法求积分. 而由频率派发展出的模型,一般称为统计机器学习,本质上是优化问题。

想要理解贝叶斯思想,第二章讲解概率的知识需要全部弄懂。贝叶斯学派引入的先验分布并不是真正的经验知识,甚至为了数学上的方便,强行给了形式化的先验分布。这样的先验分布没有任何价值,反而污染了现有的观测数据。在介绍了线性回归和线性分类问题之后,以后各章讲到新的方法时都会先求解回归问题,再讲分类问题。引入线性模型中基函数之后,模型的计算量变得十分庞大,陷入维度灾难的困局。从第五章到第七章着手解决这个问题。因此在每一章需还应关注是如何简化计算量,避免维度灾难的问题。

一些题外话

总之读这类书就好像经历了科研的流程,总结已有理论,面对新情况发现新的问题,思考并突破局限性得出新的方法,再将新的方法总结成理论,接着又碰到了新的问题… 但如果不理解作者的行文思路,就好像山脚下的人听不懂山顶的人对半山腰风景的赞叹一样,原来是整个体系没有看清。讲究这方面的文章特别多,我尤其喜爱朱松纯(Song-Chun Zhu) 老师的博客。在我的技术类博客中为了深入浅出地写明一些东西,常常以朴素的语言形式进行描述,这种形式简明易懂,但带来的问题是可能不够严谨准确。或许等读者成长到一定的水平后,会发现其中有许多错误的细节。通俗易懂和严谨完备之间很难做到完美均衡,因此光看博客是不够的,一定要看领域专家写的书籍,在合适的阶段选择合适的材料。

如果想要系统了解频率派机器学习,则推荐 Trevor Hastie, Robert Tibshirani 与 Jerome Friedman 合著的 The Elements of Statistical Learning: Data Mining, Inference, and Prediction, 推荐的原因,是因为这些书都在主页提供了可供下载的免费电子版,内容高屋建瓴,非常不错。而我对概率图模型仅仅是一知半解,因此无法给出经验作为参考。

对机器学习了解到一定程度,形成自己的知识架构后,则可以阅读一些中文书籍,如周志华所著《机器学习》和李航所著《统计学习方法》;深度学习领域中文书籍如邱锡鹏所著《神经网络与深度学习》,它们的特点是内容干练但过于抽象,不利于初学者理解。这样的书在不同的阶段看,给读者的感受也是不一样的,不妨按图索骥,多读几遍。同样需要带着批判思想阅读,毕竟书中的表述未必就是准确的。

还是那句话,多读经典,多找前沿,多听讲座,多想想为什么。这也是一门艺术。