CS229学习笔记之生成学习算法

来源:互联网 发布:php统计网站访问人数 编辑:程序博客网 时间:2024/05/22 11:39

到目前为止,我们讨论的学习算法都是直接对 p(yx;θ) 建模,即对于给定的x,y的条件分布,例如之前提到的逻辑回归。这里我们将讨论一种不同类型的学习算法。

学习算法可以分为两种,一种是尝试去直接学习得到 p(yx)(例如逻辑回归),或者尝试去学习直接将输入映射到0或1的方法(例如感知器算法),这种算法被称为判别学习算法;而另外一种学习算法被称为生成学习算法,这种算法会尝试对 p(xy)(以及 p(y) )建模。

当我们为 p(y) (被称为class priors) 和 p(xy) 建模后,我们的算法会使用贝叶斯定理来计算给定x后y的后验概率:

p(yx)=p(xy)p(y)p(x)

这里,分母可以通过 p(x)=p(xy=1)p(y=1)+p(xy=0)p(y=0) 来得到,注意到对于分类问题,我们需要对每种y的情况分别进行建模。当有一个新的x时,计算每个y的后验概率,并取概率最大的那个y。而由于只需要比较大小,p(x) 对于大家都是一样的,所以可以忽略分母,得到下式:

argmaxyp(yx)=argmaxyp(xy)p(y)p(x)=argmaxyp(xy)p(y)

高斯判别分析

我们学习的第一个生成学习算法叫高斯判别分析,在这个模型中,我们会假设 p(xy) 属于多元正态分布,在介绍GDA之前,首先简单介绍一下多元正态分布的属性。

多元正态分布

多元正态分布是在n维空间中的,其参数有:

均值向量μn
协方差矩阵Σn×nΣ0 对称且为半正定(所有特征值均不小于零)。

分布记作 (μ,Σ) ,概率密度公式为:

p(x;μ,Σ)=1(2π)n/2|Σ|1/2exp(12(xμ)TΣ1(xμ))

上述等式中,|Σ| 表示 Σ 的行列式。
对于一个属于多元正态分布 (μ,Σ) 的随机变量 X,根据期望与方差的计算公式可以得到:
E[X]Cov(X)=xxp(x;μ,Σ)dx=μ=E[(ZE[Z])(ZE[Z])T]=Σ

下面给出一些正态(高斯)分布的密概率度图像(二元):

Alt text

左边的图显示的分布均值为0(2×1的向量),协方差矩阵为 I2×2的单位矩阵),这样的正态分布又被称为标准正态分布。中间的图显示的分布均值为0且 Σ=0.6I ;而右边的图显示的分布 Σ=2I,可以看到随着 Σ 的变大,分布变得越来越“展开”,看起来就像变得越来越“扁”.

让我们来看看更多的例子。

Alt text

上图表示的分布均值均为0,对应的协方差矩阵为:

Σ=[1001];Σ=[10.50.51];Σ=[10.80.81]

左边的图就是标准正态分布,而可以看到随着非对角线上数值的增大,分布在45度方向上压缩的幅度越大。通过下面的轮廓图可以更清楚地展现这个特点。

这里写图片描述

下面是最后一组例子(改变 Σ 的值)

Alt text

上图对应的协方差为:

Σ=[10.50.51];Σ=[10.80.81];Σ=[30.80.81]

从左图和中图可以看到,随着元素值的减小(绝对值变大),分布在相反的方向上“压缩”得越明显。最后,右图中我们改变了对角线上的元素值,分布变得更趋近于椭圆。

在最后一组例子中,令 Σ=I,通过改变 μ ,我们可以移动分布的中心(均值)。

这里写图片描述

总而言之,多元正态分布与正态分布一样是钟型的曲线,参数 μ 会影响分布的位置(平移),而 Σ 会影响分布的形状。

高斯判别分析模型

对于一个分类问题,输入变量 x 是连续随机变量,我们可以使用高斯判别分析(GDA)模型,对 p(xy) 使用多元正态分布建模,模型如下:

yxy=0xy=1Bernoulli(ϕ)(μ0,Σ)(μ1,Σ)

其分布如下:
p(y)p(xy=0)p(xy=1)=ϕy(1ϕ)1y=1(2π)n/2|Σ|1/2exp(12(xμ0)TΣ1(xμ0))=1(2π)n/2|Σ|1/2exp(12(xμ1)TΣ1(xμ1))

这里模型的参数包括 ϕ,Σ,μ0,μ1,注意两个分布共享同一个协方差矩阵。数据的对数似然函数如下:

(ϕ,μ0,μ1,Σ)=logi=1mp(x(i),y(i);ϕ,μ0μ1,Σ)=logi=1mp(x(i)y(i);μ0,μ1,Σ)p(y(i);ϕ)

通过最大化 ,得到参数的极大似然估计为:
ϕμ0μ1Σ=1mi=1m1{y(i)=1}=mi=11{y(i)=0}x(i)mi=11{y(i)=0}=mi=11{y(i)=1}x(i)mi=11{y(i)=1}=1mi=1m(x(i)μy(i))(x(i)μy(i))T

用图形来表示,该算法可以表示为下图:

这里写图片描述

图中展示的是训练集,求得的高斯分布以及拟合至数据中,将数据分为了两类,注意两个高斯分布的形状与方向相同,因为它们共享同一个协方差矩阵,但是它们的均值不同。此外图中的直线表示决策边界:p(y=1|x)=0.5,在该边界的一侧,我们预测 y=1 是最可能的输出,在另一侧,则预测 y=0。

讨论:高斯判别分析与逻辑回归

高斯判别分析与逻辑回归之间有着有趣的关系。如果我们将 p(y=1x;ϕ,μ0,μ1,Σ)表示为 x 的函数,可以得到:

p(y=1x;ϕ,Σ,μ0,μ1)=11+exp(θTx)

这与逻辑回归的形式完全相同。但一般来说,对于相同的数据集两种算法会给出不同的边界,究竟哪一个更好呢?

如果 p(xy) 属于多元高斯分布(共享 Σ),那么 p(yx) 一定是逻辑函数。但是反之则不成立。这一结论表明高斯判别分析相较于逻辑回归提出了更强 的假设。如果这些假设都是正确的,那么高斯判别分析得到的结果会更好,是更好的模型。特别地,当 p(xy) 属于多元高斯分布(共享 Σ),GDA是渐近有效的。这说明在数据量比较有限的情况下,没有算法能比GDA的表现更好。因此,在这种情况下,GDA相比逻辑回归是一个更好的算法,即使对于较少的训练集,也可以取得更好的效果。

相反,因为进行了更弱的假设,所以逻辑回归有更好的鲁棒性,对于错误的模型假设不那么敏感。有很多不同的假设会导致 p(yx) 是逻辑函数的形式,比如泊松分布。但是如果我们对于这样的数据使用 GDA,那么结果会变得不可预测。

总结:GDA进行了更强的模型假设并且数据有效性更高(需要更少的数据来学习),但其前提条件是模型假设正确或近似正确。 逻辑回归进行较弱的假设,对于模型假设偏离的鲁棒性更好。特别地,如果数据集实际上不是高斯分布,那么在数据有限的情况下,逻辑回归一般会表现得比GDA更好。因此,实际中使用逻辑回归的情况比GDA多得多。

原创粉丝点击