PS: 本文是算法课程展示的文案,伴着PPT味道更佳哦~
贝叶斯理论是一套可以用来解释机器学习方法的理论。在介绍贝叶斯理论之前,我先介绍一些相关的背景知识。
这里我们主要聚焦于有监督学习。给定N个样本的数据集,其中第
i
个样本表示为
举房价预测的例子,我们要根据房屋的面积以及房间的数量来预测房屋的价格。这里
有了这批数据之后,我们可以建立如下传统模型:
当然,模型的预测结果 yi^ 和真实标签 yi 之间会存在某种程度的误差 loss(yi,yi^;θ) 。这里我们定义模型在整个数据集上的误差 loss(θ) 为数据集中每个样本的误差的求和平均:
但是,一味地迎合现有数据集中的数据,可能会导致模型对没有见过的数据的预测效果十分地糟糕,即会出现严重的过拟合问题。过拟合问题在函数曲线上表现为剧烈地振荡,因为模型要完美地拟合某些数据点。在函数参数上表现为某些参数的取值十分巨大。
因此,为了在一定程度上缓解过拟合问题,我们可以对模型参数的取值做正则化限制 reg(θ) 。我们把正则化项加入到损失函数中,就可以得到正则化的损失函数(通过ppt动画效果添加到原有的loss函数的后面)。
模型训练好之后,对于一个新来的特征值 xi ,我们可以给出预测结果为
这一小节讲的内容总结如下:
——————
我们来重新审视这个传统模型。对于一个特征值 xi ,传统模型的预测结果为 yi^ ,而对于其它预测结果 y∗i 的靠谱程度,如果真实标签 yi 存在的话,我们可以使用 loss(yi,y∗i;θ) 来衡量,其值越大,预测值 y∗i 越不靠谱;如果真实标签 yi 不存在的话,我们也就无可奈何了。
但是,对于其他预测结果 y∗i 靠谱程度的衡量,我们有一件更厉害的工具 —— 概率。我们考虑这样一个模型,对于一个特征值 xi ,我们可以输出每一个可能的预测结果 y∗i 以及它们的概率。概率越小,相当于损失函数的取值越大。概率越大,相当于损失函数的取值越小。也就是说,对于每个特征值,我们输出的是一个关于 y∗i 的概率分布 p(y∗i|xi;θ) 。概率越大,我们认为某个预测结果越靠谱。我们把这个模型称为贝叶斯模型;
在模型训练的时候,我们假设数据集中的样本点是独立同分布的,那么整个数据集 D 的概率就等于每个样本点发生概率的乘积,我们把其称为数据集的似然函数(likelihood):
同样,我们也可以使用最大化后验估计的方法来对模型的参数进行求解:
模型训练好之后,对于一个新的特征值 xi ,模型将把概率最大的预测值作为输出结果。即
这里值得关注的是,我们只使用了参数点 θ^ 来做新特征值的预测,这种预测方法称为点估计方法。我们考虑的一个问题是,虽然 θ^ 是最好的,但是在模型预测的时候,我们可不可以让不那么好的参数也能够参与到决策中来呢? 正所谓“三个臭皮匠,赛过诸葛亮”。这种预测方法称为贝叶斯估计法。我们给出的方案是,用参数的后验概率值 p(θ|D) 来作为其参与决策的效力:
这一小节讲的内容总结如下:
——————
我们把上面这种直接对 p(y∗i|xi;θ) 进行概率分布建模的方法称为贝叶斯的判别模型。这种模型很符合我们的直观思维,由特征值得到预测结果,从原因中得到结果。另外一种模型,它是利用贝叶斯公式
这是什么意思呢?比如说你拍了一张照片,然后问里面的那只动物是猫还是熊猫。如果我直接根据图片中动物的特征进行判断的话,那就是判别模型的思维;如果我先思考一下,如果是猫的话,应该具有哪些特征 p(xi|y∗i=猫) ,然后猫在生活中常不常见 p(y∗i=猫) ;如果是熊猫的话,应该具有哪些特征 p(xi|y∗i=熊猫) ,然后熊猫在生活中常不常见 p(y∗i=熊猫) ;经过这一番仔细的思考之后,我再做出这只动物是猫还是熊猫的判断,这就是生成模型的思维。这是一个由果索因,再由因执果的过程。
为什么这个模型被称为生成模型呢? 因为在计算 p(y∗i|xi;θ) 的过程中,我们先建立了 p(xi|y∗i;ϕ) 的概率分布模型。 p(xi|y∗i;ϕ) 是什么意思呢? 给定标签 y∗i ,我们能够生成对应的特征 xi 。这时候就已经不是你给我一张照片,然后让我判断是猫还是熊猫那么简单了。而是说,我想看一张熊猫的照片,然后你就能够给我生成一张熊猫的照片,That is amazing。
贝叶斯生成模型的模型训练和模型预测过程与判别模型相同,这里我们就不再赘述了。