关于分类的线性模型的讨论
1. 引言
所谓分类模型,是指一类用于解决分类问题的数学模型。
分类的目标是将输入变量x分到K个离散的类别Ck中的某一类。最常见的情况是,类别互相不想交,因此每个输入被分到唯一的一个类别中。因此输入空间被划分为不同的决策区域(decision region),它的边界被称为决策边界(decision boundary)或者决策面(decision surface)。
在这篇文章中,我们讨论分类的线性模型。
所谓分类线性模型,是指决策面是输入向量x的线性函数,因此被定义为D维输入空间中的(D - 1)维超平面。
如果数据集可以被线性决策面精确地分类,那么我们说这个数据集是线性可分的(linearly separable)。
对于回归问题来说,目标向量t就是一个实数向量,它的值是我们想要预测的。在分类问题中,使用目标值的方式来表示类别标签有许多不同的方式。
对于概率模型来说,在二分类问题的情况下,最方便的表达方式是二元表示方法。这种方法中,有一个目标变量t ∈ {0, 1},其中t = 1表示类别C1,而t = 0表示类别C2。我们可以把t的值看成分类结果为C1的概率,这个概率只取极端的值0和1。
对于K > 2类问题,比较方便的方法是使用“1-of-K”编码规则。这种方法中,t是一个长度为K的向量。如果类别为Cj,那么t的所有元素tk中,只有tj等于1,其余的都等于0。
例如,如果我们有5个类别,那么来自第2个类别的模式给出的目标向量为:
与之前一样,我们可以把tk看成分类结果为Ck的概率。
我们在之前的文章中,我们讨论了分类问题的三种不同方法,即:
- 构造判别函数(discriminant function):直接把向量x分到具体的类别中
- 直接对条件概率分布 p(Ck | x) 进行建模,并使用这个概率分布进行最优决策,有两种不同的方法确定条件概率分布
- 把条件概率分布表示为参数模型,然后使用训练集来最优化参数
- 生成式方法,对类条件概率密度 p(x | Ck) 以及类的先验概率分布 p(Ck) 建模,然后使用贝叶斯定理计算后验概率分布
我们将在本文中分别讨论这3中方法。
在之前的关于线性回归模型的讨论中,模型的预测y(x, w)由参数w的线性函数给出。在最简单的情况下,模型对输入变量也是线性的,因此形式为
即y是一个实数。
然而对于分类问题,我们想预测的是离散的类别标签,或者更一般地,预测位于区间(0, 1)的后验概率分布。
为了完成这一点,我们考虑这个模型的一个推广,这个模型中我们使用非线性函数f (·)对w的线性函数进行变换,即
在机器学习的文献中,f(·)被称为激活函数(activation function),而它的反函数在统计学的文献中被称为链接函数(link function)。
决策面对应于y(x) = 常数,即wTx + w0 = 常数,因此决策面是x的线性函数,即使函数f (·)是非线性函数也是如此,因为最终都可以化简为x的线性系数的形式。
因此,由上式描述的一类模型被称为推广的线性模型(generalized linear model)。
但是, 需要注意的是,与回归中使用的模型相反,它们不再是参数的线性模型,因为我们引入了非线性函数f (·)。这会导致计算比线性回归模型更加复杂。
2. 判别函数
判别函数是一个以向量x为输入,把它分配到K个类别中的某一个类别(Ck)的函数。 本章中,我们把我们的精力集中于线性判别函数(linear discriminant function),即那些决策面是超平面的判别函数。
线性判别函数是一个泛概念,在这个概念框架之下,发展出了很多具体的实现方法。为了简化讨论,我们首先考虑两类的情形,然后把讨论扩展到K>2的情形。不同的线性判别函数之间的主要差异在于:寻找线性分界面的算法不同。
0x1:二分类
线性判别函数的最简单的形式是输入向量的线性函数,即:
其中w被称为权向量(weight vector),w0被称为偏置(bias)。
对于一个输入向量x,如 果y(x) ≥ 0,那么它被分到C1中,否则被分到C2中。
对应的决策边界因此由y(x) = 0确定,它对应着D维空间的一个(D-1)维的超平面。
考虑两个点xA和xB,两个点都位于决策面上。由 于y(xA) = y(xB) = 0,我们有wT(xA − xB) = 0,因此向量w与决策面内的任何向量都正交,从而w确定了决策面的方向。
类似地,如果x是决策面内的一个点,那么y(x) = 0,因此从原点到决策面的垂直距离为:
因此偏置参数w0确定了决策面的位置。下图给出了D = 2的情况下的这些性质:
二维线性判别函数的几何表示。决策面(红色)垂直与w,它距离原点的偏移量由偏置参数w0控制。此外,一个一般的点x与决策面的有符号的正交距离为y(x) / ||x||
我们可以引入一个额外的虚“输入”x0 = 1,这会使得记号更简洁,比较方便。引入“虚”输入后,我们定义w ̃ = (w0, w)以及x ̃ = (x0, x),从而:
在这种情况下,决策面是一个D维超平面,并且这个超平面会穿过(D+1)维扩展输入空间的原点。
0x2:多分类
现在考虑把线性判别函数推广到K > 2个类别。我们可能会尝试把多个二分类判别函数结合起来,构造一个K类判别函数。但是,这会产生一些严重的困难。
考虑使用 K-1 个分类器,每个分类器用来解决一个二分类问题,把属于类别Ck和不属于那个类别的点分开。这被称为“1对其他”(one-versus-the-rest)分类器。下图的左侧给出了一个涉及到三个类别的例子。这个例子中,这种方法产生了输入空间中无法分类的区域。
另一种方法是引入 K(K−1)/2 个二元判别函数,对每一对类别都设置一个判别函数。这被称为“1对1”(one-versus-one)分类器。这样,每个点的类别根据这些判别函数中的大多数输出类别确定。但是,这也会造成输入空间中的无法分类的区域,如下图所示。
一对一方法和一对多方法表明,使用二分类判别器直接构建多分类判别器是不合理的,一个更好的办法是,通过引入一个 K类判别函数,我们可以避免这些问题。这个 K类判别函数由 K个线性函数组 成,形式为:
然后对于点x,如果对于所有的 j ≠ k,都有yk(x) > yj(x),那么就把它分到Ck。于是类别Ck和Cj之间的决策面为yk(x) = yj(x),并且对应于一个(D-1)维超平面,形式为:
这样的判别函数的决策区域总是单连通的,并且是凸的。为了说明这一点,考虑两个点xA和xB,两个点都位于决策区域Rk中,如下图所示。
任何位于连接xA和xB的线段上的点都可以表示成下面的形式:
其中0 ≤ λ ≤ 1。根据判别函数的线性性质,有:
由于xA和xB位于Rk内部,因此对于所有j ≠ k,都有yk(xA) > yj(xA),以及yk(xB) > yj(xB), 因此
从而
也位于Rk内部,即Rk是单连通的并且是凸的。
0x3:学习线性判别函数的参数的方法
1、最小平方方法
在高斯误差的假设下,最小平方误差函数的最小化产生了参数值的简单的解析解。这个结论在一般的K分类问题上也同样成立。其中目标向量t使用了“1-of-K”二元表示方式。这种设置下,使用最小平方方法的一个理由是它在给定输入向量的情况下,近似了目标值的条件期望E[t | x]。
对于二元表示方法,条件期望由后验类概率向量给出。但是不幸的是,这些概率通常很难近似。事实上,近似的过程有可能产生位于区间(0, 1)之外的值,这是因为线性模型的灵活性很受限,我们稍后会讨论这个问题。
我们上一小节谈到,在K多分类情况下,每个类别Ck由自己的线性模型描述,即:
其中k = 1, . . . , K 。使用向量记号,我们可以很容易地把这些量聚集在一起表示,即:
其中W ̃是一个矩阵,第k列由D+1维向量w ̃k =(wk0,wTk)T组成,x ̃是对应的增广输入向量(1, xT)T ,它带有一个虚输入x0 = 1。
这样,一个新的输入x被分配到输出yk = w ̃Tkx ̃最大的类别中。
我们现在通过最小化平方和误差函数来确定参数矩阵W ̃。考虑一个训练数据集{xn,tn},其中n = 1,...,N,然后定义一个矩阵T,它的第n行是向量tTn 。我们还定义了一个矩阵X ̃,它的第n行是x ̃Tn 。
这样,平方和误差函数可以写成:
令上式关于W ̃的导数等于零,整理,可以得到W ̃的解,形式为:
这样我们得到了判别函数,形式为:
因此如果我们使用K分类的“1-of-K ”表达方式,那么这个模型做出的预测会具有下面的性质:
对于任意的x的值,y(x)的元素的和等于1。
但是,这个对于加和的限制本身并不能够让模型的输出表示为概率的形式,因为它们没有被限制在区间(0, 1)中,平方和最小化公式没有进行概率归一化处理。
最小平方方法对于判别函数的参数给出了精确的解析解。但是,即使作为一个判别函数,它仍然有很严重的问题。我们已经看 到,最小平方解对于离群点缺少鲁棒性,这一点对于分类问题也是一样的,如下图所示。
我们看到,右图中的额外的数据点对决策边界的位置产生了极大的改变,即使这也点能够被左图中的原始的决策边界正确地分类。这表明最小平方方法对于异常点很敏感。
平方和误差函数惩罚了“过于正确”的预测,因为他们在正确的一侧距离决策边界太远了。
但是,最小平方方法的问题实际上比简单的缺乏鲁棒性更加严重,如下图所示。
由三个类别组成的人工数据集的例子,训练数据点分别用红色(×)、绿色(+)、蓝色(◦)标 出。直线表示决策边界,背景颜色表示决策区域代表的类别。左图是一个使用最小平方判别函数的结果。我们看到分配到绿色类别的输入空间的区域过小,大部分来自这个类别的点都被错误分类。右图是使用logistic回归的结果,给出了训练数据的正确分类情况。
最小平方方法的失败并不让我们感觉惊讶。回忆一下,最小平方方法对应于高斯条件分布假设下的最大似然法,而二值目标向量的概率分布显然不是高斯分布。
换句话说,当目标随机变量符合高斯或近似高斯分布式,基于最小平方损失的概率建模才是有效的。
解决这个矛盾的一个方法是通过使用更恰当的概率模型,我们会得到性质比最小平方方法更好的分类方法。但是现在,我们继续研究另外的非概率方法来设置线性分类模型中的参数。
2、Fisher线性判别函数
我们可以从维度降低的角度考察线性分类模型。首先考虑二分类的情形。假设我们有一个D维输入向量x,然后使用下式投影到一维:
如果我们在y上设置一个阈值,然后把 y ≥ −w0 的样本分为C1类,把其余的样本分为C2类,那么我们就得到了之前讨论的标准的线性分类器。
通常来说,向一维投影会造成相当多的信息丢失,因此在原始的D维空间能够完美地分离开的样本可能在一维空间中会相互重叠。但是,通过调整权向量w,我们可以选择让类别之间分开最大的一个投影。
首先,考虑一个二分类问题,这个问题中有C1类的N1个点以及C2类的N2个点。因此两类的均值向量为:
如果投影到w上,那么最简单的度量类别之间分开程度的方式就是类别均值投影之后的距离。这说明,我们可以选择w使得下式取得最大值:
其中:
是来自类别Ck的投影数据的均值。
但是,通过增大w,这个表达式可以任意大。为了解决这个问题,我们可以将w限制为单位长度,即∑iwi2 = 1。
使用拉格朗日乘数法来进行有限制条件的最大化问题的求解,我们可以发现
w ∝ (m2 − m1)
但是,这个方法还有一个问题,如下图所示。
这幅图中的两个类别在原始二维空间(x1, x2)中可以完美地被分开,但是当投影到连接它们的均值的直线上时,就有了一定程度的重叠。
如果类概率分布的协方差矩阵与对角化矩阵差距较大,那么这种问题就会出现。
针对这个问题,Fisher提出的思想是:
最大化一个函数,这个函数能够让类均值的投影分开得较大,同时让每个类别内部的方差较小,从而最小化了类别的重叠。
投影将x的一组有标记的数据点变换为一位空间y的一组有标记数据点。来自类别Ck的数据经过变换后的类内方差为:
其中 yn = wTxn。我们可以把整个数据集的总的类内方差定义为:s21 + s22。
Fisher准则根据类间方差和类内方差的比值定义,即:
其中SB是类间(between-class)协方差矩阵,形式为:
SW被称为类内(within-class)协方差矩阵,形式为:
对公式关于w求导,我们发现J(w)取得最大值的条件为:
根据上式,我们看到SBw总是在(m2 - m1)的方向上。更重要的是,我们不关心w的大小,只关心它的方向,因此我们可以忽略标量因子(wTSBw)和(wTSWw)。将上式的两侧乘以SW-1,我们有:
上式的结果被称为Fisher线性判别函数(Fisher linear discriminant)。
虽然严格来说它并不是一个判别函数,而是对于数据向一维投影的方向的一个具体选择(模型参数)。然而,投影的数据可以接下来被用于构建判别函数,构建的方法为:
选择一个阈值y0,使得当y(x) ≥ y0时,我们把数据点分到C1,否则我们把数据点分到C2
例如,我们可以使用高斯概率分布对类条件概率密度p(y | Ck)建模,然后使用最大似然方法找到高斯分布的参数值。
我们注意到,y = wTx是一组随机变量的和,因此根据中心极限定理,我们可以做出高斯分布的假设。
3、Fisher线性判别函数与最小平方的关系
最小平方方法确定线性判别函数的目标是使模型的预测尽可能地与目标值接近。相反,Fisher判别准则的目标是使输出空间的类别有最大的区分度。
讨论一下这两种方法之间的关系是很有趣的。特别的,对于二分类问题,Fisher准则可以看成最小平方的一个特例。
目前为止,我们已经考虑了目标变量的“1-of-K ”表示方法。然而,如果我们使用一种稍微不同的表达方法,那么权值的最小平方解就会变得等价于Fisher解。
我们让属于C1的目标值等于N/N1 ,其中N1是类别C1的模式的数量,N是总的模式数量。这个目标值近似于类别C1的先验概率的导数。对于类别C2,我们令目标值等于 -N/N2 ,其中N2是类
别C2的模式的数量。
平方和误差函数可以写成:
令E关于w0和w的导数等于零,我们有
使用我们对于目标值tn的表示方法,我们可以得到偏置的表达式:
其中我们使用了下面的结果:
其中m是所有数据的均值,定义为:
再次使用我们对于tn的新的表示方法,上述方程变为:
其中,我们已经忽略了不相关的标量因子。因此权向量恰好与根据Fisher判别准则得到的结果相同。
4、感知器算法
线性判别模型的另一个例子是Rosenblatt(1962)提出的感知器算法。它在模式识别算法的历史上占有重要的地位。
它对应于一个二分类的模型,这个模型中,输入向量x首先使用一个固定的非线性变换(基函数)得到一个特征向量φ(x),这个特征向量然后被用于构造一个一般的线性模型,形式为:
其中非线性激活函数f(·)是一个阶梯函数,形式为:
用来确定感知器的参数w的算法可以很容易地从误差函数最小化的思想中得到。误差函数的一个自然的选择是误分类的模式的总数。
但是,因为激活函数是阶跃变化的,本身不可微,直接最小化误差的结果就是,会使误差函数变为w的分段常函数,从而当w的变化使得决策边界移过某个数据点时,这个函数会不连续变化。
因此我们考虑一个另外的误差函数,被称为感知器准则(perceptron criterion)。
为了推导这个函数,我们注意到我们正在做的是寻找一个权向量w,使得对于类别C1中的模式xn都 有wTφ(xn) > 0,而对于类别C2中的模式xn都有wTφ(xn) < 0。
使用t ∈ {−1, +1}这种目标变量的表示方法,我们要做的就是使得所有的模式都满足wTφ(xn)tn > 0。
对于正确分类的模式,感知器准则赋予零误差,而对于误分类的模式xn,它试着最小化−wTφ(xn)tn。因此,感知器准则为:
其中φn = φ(xn)和M表示所有误分类模式的集合。
某个特定的误分类模式对于误差函数的贡献,是w空间中模式被误分类的区域中w的线性函数,而在正确分类的区域,误差函数等于零。总的误差函数因此是分段线性的。
我们现在对这个误差函数使用随机梯度下降算法。这样,权向量w的变化为
其中η是学习率参数,τ是一个整数,是算法运行次数的索引。
注意,随着训练过程中权向量的不断改变,误分类的模式也会改变。
感知器学习算法可以简单地表示如下。我们反复对于训练模式进行循环处理,对于每个模式xn我们计算感知器函数。如果模式正确分类,那么权向量保持不变,而如果模式被错误分类,那么对于类别C1,我们把向量φ(xn)加到当前对于权向量w的估计值上,而对于类别C2,我们从w中减掉向量φ(xn)。下图说明了感知器学习算法。
感知器算法收敛性的说明,给出了二维特征空间(φ1, φ2)中的来自两个类别的数据点(红色和蓝色)。左上图给出了初始参数向量w,表示为黑色箭头,以及对应的决策边界(黑色直线),其中箭头指向被分类为红色类别的决策区域。用绿色圆圈标出的数据点被误分类,因此它的特征向量被加到当前的权向量中,给出了新的决策边界,如右上图所示。左下图给出了下一个误分类的点,用绿色圆圈标出,它的特征向量再次被加到权向量上,给出了右下图的决策边界。这个边界中所有的数据点都被正确分类。
如果我们考虑感知器学习算法中一次权值更新的效果,我们可以看到,一个误分类模式对于误差函数的贡献会逐渐减小。因为根据上面误差公式,我们有
当然,这并不表明其他的误分类模式对于误差函数的贡献会减小。此外,权向量的改变会使得某些之前正确分类的样本变为误分类。因此感知器学习规则并不保证在每个阶段都会减小整体的误差函数。
感知器收敛定理(perceptron convergence theorem)表明:
- 如果存在一个精确的解(即,如果训练数据线性可分),那么感知器算法可以保证在有限步骤内找到一个精确解。
- 但是,达到收敛状态所需的步骤数量可能非常大,并且在实际应用中,在达到收敛状态之前,我们不能够区分不可分问题与缓慢收敛问题。
- 同时,即使数据集是线性可分的,也可能有多个解,并且最终哪个解会被找到依赖于参数的初始化以及数据点出现的顺序。
- 此外,对于线性不可分的数据集,感知器算法永远不会收敛。
除了学习算法的这些困难之处以外,感知器算法无法提供概率形式的输出,也无法直接推广到 K > 2 个类别的情形。然而,最重要的局限性是它基于固定基函数的线性组合,无法提供对更复杂的非线性概率分布的拟合。
笔者思考:
决策树、SVM、线性判别器、深度神经网络梯度下降算法,机器学习领域的诸多算法,究其本质都是在讨论寻找D维分界面的方法。研究在确定数据集的情况下,如何充分挖掘数据的价值。这与代表传统领域的传统专家和领域专家之间并不矛盾,工业界常常出现的两阵营互相看不起的情况,笔者认为大可不必。领域专家解决的是产业和数据集本身的问题,他们做的事最核心的目的是提高最终效果的上限。光有数据是不够的,数据就像石油,还需要配合上算法,才能更好地从石油中提取出有价值的甲烷和工业原料,更好地造福社会。
3. 概率生成式模型
这一章,我们尝试用概率的观点考察分类问题,并且说明具有线性决策边界的模型如何通过对数据分布的简单假设得到。
0x1:概率生成式模型一般形式
对于概率生成式方法来说,我们对类条件概率密度p(x | Ck)和类先验概率分布p(Ck)建模, 然后使用这两个概率密度通过贝叶斯定理计算后验概率密度p(Ck | x)。
首先考虑二分类的情形。类别C1的后验概率可以写成:
类别C2也同理。
σ(a)是logistic sigmoid函数,定义为:
logistic sigmoid的反函数为:
被称为logit函数。它表示两类的概率比值的对数
也被称为log odds函数。
通俗的理解,a代表了正例和负例,各自后验概率的比值的log对数,被称为几率(odd),
- 当C1的后验概率大于C2的后验概率时,p(x | C1)p(C1) / p(x | C2)p(C2) >= 1,ln p(x | C1)p(C1) / p(x | C2)p(C2) >= 0.5,根据最大后验概率准则,C1为预测结果
- 当C2的后验概率大于C1的后验概率时,p(x | C1)p(C1) / p(x | C2)p(C2) <= 1,ln p(x | C1)p(C1) / p(x | C2)p(C2) <= 0.5,根据最大后验概率准则,C2为预测结果
下图给出了这个函数的图像。
“sigmoid”的意思是“S形”。这种函数有时被称为“挤压函数”,因为它把整个实数轴映射到了一个有限的区间中。
这个函数在许多分类算法中都有着重要的作用。它满足下面的对称性:
注意在上面公式中,我们只是把后验概率写成了一个等价的形式,
需要注意的是,改变a(x)的函数形式相当简单,sigmoid函数只是一个特殊。
我们之后会讨论a(x)是x的线性函数的情形。这种情况下,后验概率由一个通用的线性模型确定。
0x2:不同类条件概率密度形式下的概率生成式模型
我们现在考虑选择具体的类条件概率密度形式的情况下的结果,首先讨论连续输入变量x的情形,然后简短地讨论离散输入的情形。
1、连续输入
让我们假设类条件概率密度是高斯分布,然后求解后验概率的形式。首先,我们假定所有的类别的协方差矩阵相同。这样类别Ck的类条件概率为:
根据上一章关于类后验概率以及logistic sigmoid公式的定义,我们有:
其中我们定义了:
我们看到,高斯概率密度的指数项中x的二次型消失了(这是因为我们假设类概率的协方差矩阵相同),从而得到了参数为x的线性函数的logistic sigmoid函数。
下图给出了二维输入空间x的情况下的结果。
最终求得的决策边界对应于后验概率p(Ck | x)为常数的决策面,因此由x的线性函数给出,从而决策边界在输入空间是线性的。
先验概率密度p(Ck)只出现在偏置参数w0中,因此先验的改变的效果是平移决策边界,即平移后验概率中的常数轮廓线。
2、离散特征
现在让我们考虑离散特征值xi的情形。为了简化起见,我们首先考察二元特征值xi∈{0,1}。
如果有D个输入,那么一般的概率分布会对应于一个大小为2D的表格,包含2D−1个独立变量(由于要满足加和限制)。由于这会随着特征的数量指数增长,因此我们想寻找一个更加严格的表示方法。
这里,我们做出朴素贝叶斯(naiveBayes)的假设,这个假设中,特征值被看成相互独立的,以类别Ck为条件。因此我们得到类条件分布,形式为:
其中对于每个类别,都有D个独立的参数。代入公式
我们有:
这是输入变量xi的线性函数。
3、指数族分布
正如我们已经看到的,无论是服从高斯分布的输入,还是离散的输入,后验类概率密度都是由一般的线性模型和logistic sigmoid(K = 2个类别)或者softmax(K ≥ 2个类别)激活函数给出。
通过假定类条件概率密度p(x | Ck)是指数族分布的成员,我们可以看到上述结果都是更一般的结果的特例,logistic sigmoid也是指数族分布的一特例。
我们可以看到x的分布可以写成下面的形式:
对于二分类问题,我们把这个类条件概率密度的表达式代入公式
我们看到后验概率与之前一样,是一个作用在线性函数a(x)上的logistic sigmoid函数。a(x)的形式为:
类似地,对于K类问题,我们把类条件概率密度的表达式代入公式
得:
可以看到,这同样是一个x的线性函数。
笔者插入:
从概率的角度看分类,线性分类的目标是寻找最大后验概率估计。通过选择满足指数族分布的类条件概率分布p(x | Ck),最大后验概率公式,可以化简等价于作用在x的线性函数上的logistic sigmoid函数的形式。这本质上,就是生成式模型和判别式模型,在底层原理上的一致。
4. 概率判别式模型
对于二分类问题,我们已经看到,对于一大类的类条件概率密度p(x | Ck)的选择,类别C1后验概率分布可以写成作用于x的线性函数上的logistic sigmoid函数的形式。
类似地,对于多分类的情形,类别Ck的后验概率由x的线性函数的softmax变换给出。
对于类条件概率密度p(x | Ck)的具体的选择,我们可以使用了最大似然方法估计概率密度的参数以及类别先验p(Ck),然后使用贝叶斯定理就可以求出后验类概率。另一种方法是显示地使用一般的线性模型的函数形式,然后使用最大似然法直接确定它的参数。寻找这样的解有一个高效的算法,被称为迭代重加权最小平方 (iterative reweighted least squares),或者简称IRLS。
这种方法代表了判别式训练的一种形式。判别式方法的一个优点是通常有更少的可调节参数需要确定,正如我们稍后会看到的那样。并且预测表现也会提升, 尤其是当类条件概率密度的假设没有很好地近似真实的分布的时候更是如此。
0x1:固定基函数
对于分类模型来说,如果我们首先使用一个基函数向量φ(x)对输入变量进行一个固定的非线性变换,最终的决策边界在特征空间φ中是线性的,对应于原始x空间中的非线性决策边界,如下图所示。
线性分类模型的非线性基函数的作用的说明。左图中给出了原始的输入空间(x1, x2)以及标记为红色和蓝色的数据点。这个空间中定义了两个“高斯”基函数φ1(x)和φ2(x),中心用绿色十字表示,轮廓线 用绿色圆形表示。
右图给出了对应的特征空间(φ1, φ2)以及线性决策边界。决策边界由线性回归模型得到。对应的在原始空间中的非线性决策边界在左图中用黑色曲线标记出。
在特征空间φ(x)线性可分的类别未必在原始的观测空间x中线性可分。恰当地选择非线性变换能够让后验概率的建模过程更简单。
0x2:logistic回归
我们首先通过二分类问题开始我们对于一般线性模型方法的讨论。在之前的讨论中我们看到,在一些相当一般的假设条件下,类别C1的后验概率可以写成作用在特征向量φ的线性函数上的logistic sigmoid函数的形式,即:
且p(C2 | φ) = 1 − p(C1 | φ),σ(·)是logistic sigmoid函数。
使用统计学的术语,这个模型被称为logistic回归,虽然应该强调的一点是,这是一个分类模型而不是回归模型。
我们现在使用最大似然方法来确定logistic回归模型的参数。为了完成这一点,我们要使用logistic sigmoid函数的导数,它可以很方便地使用sigmoid函数本身表示如下:
对于一个数据集φn,tn,其中tn ∈ {0,1}且φn = φ(xn),并且n = 1,...,N,似然函数可以写成:
其中,t=(t1,t2,....,tN)T,且 yn = p(C1 | φn)。
我们可以通过取似然函数负对数的方式来定义误差函数,这种方式产生了交叉熵(cross-entropy)误差函数,形式为:
其中yn = σ(an)且an = wTφn。
1、最大似然估计
两侧关于w取误差函数的梯度,我们有:
我们看到,涉及到logistic sigmoid的导数的因子已经被消去,使得对数似然函数的梯度的形式十分简单。
特别地,数据点n对梯度的贡献为目标值和模型预测值之间的“误差”yn - tn与基函数向量φn相乘。
值得注意的一点是,最大似然方法对于线性可分的数据集会产生严重的过拟合现象。这是由于最大似然解出现在超平面对应于σ = 0.5的情况,它等价于wTφ = 0。
最大似然解把数据集分成了两类,并且w的大小趋向于无穷大。这种情况下,logistic sigmoid函数在特征空间中变得非常陡峭,对应于一个跳变的阶梯函数,使得每一个来自类别k的训练数据都被赋予一个后验概率p(Ck | x) = 1。
最大似然方法无法区分某个解优于另一个解,并且在实际应用中哪个解被找到将会依赖于优化算法的选择和参数的初始化。注意,即使与模型的参数相比数据点的数量很多,只要数据是线性可分的,这个问题就会出现。
通过引入先验概率,然后寻找w的MAP解,或者等价地,通过给误差函数增加一个正则化项,这种奇异性就可以被避免。
2、迭代重加权最小平方
在高斯噪声模型的假设的情况下,最大似然解有解析解。这是因为对数似然函数为参数向量w的二次函数。但是对于logistic回归来说,不再有解析解了,因为logistic sigmoid函数是一个非线性函数。
然而,函数形式并不是logistic sigmoid没有解析解的本质原因。精确地说,如果误差函数是凸函数,那么它就一定有一个唯一的最小值,反之则不成立。
对于没有解析解的情况,误差函数可以通过另一种高效的迭代方法求出最小值,这种迭代方法基于Newton-Raphson迭代最优化框架,使用了对数似然函数的局部二次近似。
为了最小化函数E(w),Newton-Raphson对权值的更新的形式为:
其中H是一个Hessian矩阵,它的元素由E(w)关于w的二阶导数组成。
让我们把Newton-Raphson更新应用到logistic回归模型的交叉熵误差函数上。我们看到这个误差函数的梯度和Hessian矩阵为:
我们看到Hessian矩阵不再是常量,而是通过权矩阵R依赖于w。这对应于误差函数不是二次函数的事实。
使用性质0 < yn < 1(这个性质来自于logistic sigmoid函数形式),我们看到对于任意向量u都有uTHu > 0,因此Hessian矩阵H是正定的。因此误差函数是w的一个凸函数,从而有唯一的最小值。
这样,logistic回归模型的Newton-Raphson更新公式就变成了:
其中z是一个 N 维向量,元素为:
由于权矩阵R不是常量,而是依赖于参数向量w,因此我们必须迭代地应用规范方程,每次使用新的权向量w计算一个修正的权矩阵R。
由于这个原因,这个算法被称为迭代重加权最小平方(iterative reweighted least squares),或者简称为IRLS。
与加权的最小平方问题一样,对角矩阵R可以看成方差,因为logistic回归模型的t的均值和方差为:
事实上,我们可以把IRLS看成变量空间a = wTφ的线性问题的解。这样,z的第n个元素zn就可以简单地看成这个空间中的有效的目标值。
zn可以通过对当前操作点w旧附近的logistic sigmoid函数的局部线性近似的方式得到。
0x3:probit回归
我们已经看到,对于由指数族分布描述的一大类(并不是所有)的类条件概率分布,最终求出的后验类概率为作用在特征变量的线性函数上的logistic(或者softmax)变换。
然而,不是所有的类条件概率密度都有这样简单的后验概率函数形式(例如,如果类条件概率密度由高斯混合模型建模),在logistic sigmoid之下还有更一般性的后验概率函数形式。
这个小节,我们将会回到二分类的情形,再次使用一般的线性模型的框架,即:
其中a = wTφ,且f (·)为激活函数。
我们选择其他的链接函数的原因可以通过噪声阈值模型看出来,如下所述。对于每个输入φn,我们计算an = wTφn,然后按照下面的方式设置目标值:
如果θ的值从概率密度p(θ)中抽取,那么对应的激活函数由累积分布函数给出:
如下图所示:
概率分布p(θ)的图形表示,这个概率分布用蓝色曲线标记出。这个例子中,这个分布由两个高斯分布混合而成。同时给出的还有它的累积密度函数f(a),用红色曲线表示。注意,蓝色曲线上的任意一点,例如垂直绿色直线标记出的点,对应于红色曲线在相同一点处的斜率。相反,红色曲线在这点上的值对应于蓝色曲线下方的绿色阴影的面积。在随机阈值模型中,如果a = wTφ的值超过某个阈值,则类 别标签的取值为t = 1,否则它的取值为t = 0。这等价于由累积密度函数f(a)给出的激活函数。
作为一个具体的例子,假设概率密度p(θ)是零均值、单位方差的高斯概率密度。对应的累积分布函数为:
这被称为逆probit(inverse probit)函数。它的形状为sigmoid形。注意,使用更一般的高斯分布不会改变模型,因为这样做等价于对线性系数w的重新缩放。
许多用于计算这个函数的数值计算包都与下面的这个函数紧密相关:
它被称为erf函数或者被称为error函数。它与逆probit函数的关系为:
基于probit激活函数的一般的线性模型被称为probit回归。
我们可以使用最大似然法来确定模型的参数,这是之前讨论的思想的一个直接推广。在实际应用中,使用probit回归得到的结果倾向于与logistic回归得到的结果类似。
在实际应用中经常出现的一个问题是离群点,它可能由输入向量x的测量误差产生,或者由目标值t的错误标记产生。
由于这些点可以位于错误的一侧中距离理想决策边界相当远的位置上,因此他们会严重地干扰分类器。
注意,在这一点上,logistic回归模型与probit回归模型的表现不同,因为对于x → ∞,logistic sigmoid函数像exp(-x)那样渐进地衰减,而probit激活函数 像exp(-x2)那样衰减,因此probit模型对于离群点会更加敏感。
然而,logistic模型和probit模型都假设数据点被正确标记了。错误标记的影响可以很容易地合并到概率模型中。我们引入一个概率ε,它是目标值t被翻转到错误值的概率。这时,数据点x的目标值的分布为:
其中σ(x)是输入向量x的激活函数。这里,ε可以事先设定,也可以被当成超参数,然后从数据中推断它的值。