机器学习日志8
最优边界分类器
对于我们前面学习的算法,我们的目标是寻找最大的边距从而使得我们的决策边界(超平面)更加可信。我们讲这种思想数学化表示为:
max????,w,b ????
s.t. y(i)(wTx(i) +b)≥????, i=1,…,n
||w||=1
对于中间公式说明,训练样本到决策边界的距离最小为样本集的geometric margin,其中约束||w||=1目的是让functional margin等于geometric margin;
但是约束条件 ||w||=1使得上面的问题是一个非凸优化问题,这会使得运算比较困难,所以我们尝试将问题转化成为另一种格式
由于γ = γˆ/||w|,所以我们最大化的目标变成了 γˆ/||w||,即所有样本点的距离都大于functional margin,到此,我们摆脱了||w|| = 1 的约束条件,但是我们现在要最大化γˆ/||w||,这同样是一个非凸问题,同样不利于运算,所以我们继续向下;
记得我们在学习functional margin时有提过,我们可以随意缩放w和b的值,但是却可以不影响决策边界,下面就到应用他的时候了我们要缩放w和b使得:
所以我们最大化γˆ/||w|| 的目标变成了最大化1/||w||,这同理于最小化||w||2,所以问题转化为数学形式为:
现在这个问题变成了凸二次目标和线性约束,它的结果就是最优边界分类器,可以利用QP软件求得结果。
核心方法
特征映射
前面我们根据x和y的线性关系学习了线性回归,今天我们将要学习一种非线性关系的方法;假设我们有三次函数
y = θ3x3 + θ2x2 + θ1x + θ0.我们通过对对变量的重写可以将他转换成linear function(一般指一次函数),首先我们定义:????:ℝ—>ℝ4:
让θ ∈ ℝ4包含输入θ0, θ1, θ2, θ0随后我们就可以重新写出我们的公式为:
这样三次函数就改写成了以????(x)表示的一次函数,为了区分输入的x和由x生成的????我们将x称为属性,将????(x)称为特征变量,将????称为特征地图;
带有特征的最小均方差
我们将推导梯度下降算法来拟合模型θTφ(x),回忆我们训练θTx的最小二乘问题,批梯度下降的公式为:
设????:ℝd—>ℝp是将属性x映射到ℝp维特征????(x)的特征地图,现在我们要训练的是????属于ℝp的函数θTφ(x),我们可以利用????(x(i))替换上面所有出现的x(i):
同样,相应的随机梯度下降更新规则为:
带有核技巧的最小均方:
当特征????(x)是非常高纬度时,梯度下降和随机梯度下降的计算成本将会非常的高昂;假设对于特征地图????我们有更高纬度的输入,即x∈ℝd且让????(x)为一个包含小于3阶关于x的单项式的向量,我们就会有:
????(x)的维度是d3阶的。这对于计算而言是一个过长的向量———当d = 1000时,每次更新至少需要计算并存储10003= 109维向量,这比普通最小二乘更新的更新规则慢106倍。
显然,d3阶的运行时间和内存使用是不可避免的,因为向量????本身的维度就接近于d3阶,即p≈d3,并且我们需要更新并存储每个输入的????并存储,所以我们要介绍核技巧,它可以明显的节省运行时间并且不用明确的存储????;
简单的说,我们假设初始值????=0,并迭代:
观察到在任何时候,????是向量????(x(1)),…,????(x(n))的线性组合。我们可以将其归纳为,在初始时:
假设在某些点,当????1,…,????n∈ℝ时,????可以被表示为:
$$
????=\sum_{i=1}n\beta_i\phi(x{(i)})
\theta:=\theta+\alpha\sum_{i=1}n(y{(i)}-\thetaT\phi(x{(i)}))\phi(x^{(i)})
$$
我们的总体思想是通过一组系数????1,…,????n隐含表示p维向量????,为此我们导出系数????1,…,????n的更新规则,使用上面的公式,我们看到新的βi取决于旧的βi:
现在我们仍然在公司中存在????,替换????用:
我们将会得到:
我们通常将????(x(j))T????(x(i))写为<????(x(j)),????(x(i))>表示两个特征向量的内积,将????i视为????的新的表达形式,这样我们就成功的将批梯度下降算法改成了迭代更新????值的算法。显然对于每次迭代,我们仍需要计算每一对i,j的<????(x(j)),????(x(i))>,并且都需要消耗复杂度为O§的操作,但是,有两个重要属性可以挽救:
1.我们可以在循环开始之前为所有i,j对预先计算成对内积<????(x(j)),????(x(i))>。
2.对于我们在前面定义的特征
或者其他有趣的特征,计算<????(x(j)),????(x(i))>是非常高效的并且不需要结算的????(x(i))特别精确,这是因为:
因此计算<????(x(j)),????(x(i))>,我们可以首先计算复杂度为O(d)次的<x,z>,然后通过计算结果的常数去计算1+<x,z>+<x,z>2+<x,z>3.
如你所见,这里的向量内积计算是特别的基础,我们定义????×????—>ℝ的映射为Kernel关于特征映射????的函数表示为:
为了结束讨论,我们将最终算法记为如下:
1.对于所有i,j∈{1,…,n}使用1+<x,z>+<x,z>2+<x,z>3计算所有K(x,z)≙<????(x),????(z)>的值。
2.循环计算:
或用向量符号表示,令K为n×n矩阵,其中Kij = K(x(i),x(j)),我们有:
利用上面的算法,我们可以每次迭代用时间复杂度O(n)高效的更新????的显式表达????。最后,我们需要证明,显式表示β的足以计算预测θTφ(x)。确实,我们有:
您可能会意识到,从根本上讲,我们需要了解的有关特征映射φ(·)都封装在相应的内核函数K(·,·)中。我们将在下一部分中对此进行扩展。
内核属性
在最后一个小节中,我们从一个更为详细的特征映射定义开始,它和内核函数k(x,z)≙<????(x),????(z)>相呼应。内核函数的用法非常固定,以至于当内核函数被定义时,可以预测样本x,并且整个训练算法可以被完全的用内核语言写出,而不必退回到特征映射????。
因此,这样引入对另一个内核函数K(·,·)的定义,并且运行算法(11)注意到,在该算法中,在保证特征映射存在的条件下,我们不需要精确得到特征映射????,。
那么,什么样的内核函数才能和特征映射????相关呢?换句话说我们需要什么样的特征映射才能使得对于所有的x,z有K(x,z)=????(x)T????(z)。
如果我们可以通过给出有效内核函数的精确表征来回答这个问题,那么我们可以将选择特征映射的接口完全更改为选择内核函数K的接口。具体来说,我们可以选择一个函数K,验证其是否满足特征描述(从而存在一个K对应的特征图φ),然后可以运行更新规则(11)。这样做的好处是,我们不必能够计算φ或将其解析地写下来,而只需要知道其存在即可。在讨论了几个内核的具体示例之后,我们将在本小节末尾回答这个问题。
假设x,z∈ℝd,并且我们首先将K(·, ·) 假设为:
我们同样可以将它写成这样:
因此我们可以看到内核函数 K(x,z) = ⟨φ(x),φ(z)⟩和对应特征映射????(当d=3时):
再次看到内核方法的高效性,注意到无论如何计算高纬度的????(x)都需要复杂度O(d2),但是使用 K(x,z)只需要复杂度为O(d)的计算--------和输入的属性维度是线性的。
对于另一个相关的模型,我命定义 K(·,·)为:
这个内核函数对应的特征地图为:(d=3的情况下)
参数c控制着xi(一阶)和xixj(二阶)的相关权重。
更广泛的说,内核K(x, z) = (xT z + c)k对应
的特征空间,相应的,所有从xi1,xi2,…,xik最高为k阶。然而,尽管说在O(dk)维度的空间,计算K(x,z)仍然只需要复杂度O(d)的时间,并且因此,我们不需要精确的表达特征向量在非常高的维度上。
内核作为相似矩阵
现在我们来讨论稍有不同的内核,直观上,如果φ(x)和φ(z)特别接近,那么K(x, z) = φ(x)T φ(z)将会特别的大。相反地,如果φ(x)和φ(z)特别远,几乎到了垂直的程度,那么K(x, z) = φ(x)T φ(z)将会特别的小,所以,我们可以K(x,z)在某种程度上看成是φ(x)和φ(z)的相似程度。
根据这种直觉,假设对于您正在处理的一些机器学习问题,您想出了一些函数K(x,z),您认为这可以合理地衡量x和z的相似程度。例如,也许您选择了:
当x和z特别接近的时候这里的结果接近于1,反之接近于0。是否存在一种特征映射????使得K(x,z) = φ(x)T φ(z)?回答当然是有的,这种内核叫做高斯内核,并且对应一个无限维度的特征映射????。我们将对函数K需要满足哪些属性进行精确的描述,以便它可以是与某个特征映射φ对应的有效内核函数。
有效内核的必要条件
现在假设K确实是对应于某个特征映射φ的有效内核,我们首先将看到它满足哪些属性。首先,我们先想象由n个点组成的有限集(不一定是训练集){x(1),…,x(n)},然后定义一个n×n的方阵,它的(i,j)输入可以被表示为Kij=K(x(i),x(j)).这个矩阵被称为内核矩阵。注意,我们现在已经重复使用K既表示内核函数和内核矩阵,原因是他们显然有相似的关系。
现在如果,K是一个明显的内核,那么Kij=K(x(i),x(j))=????(x(i))T????(x(j))=????(x(j))T????(x(i))=K(x(j),x(i))=Kji,并且K必须是对称的。此外,我们让????k(x)作为向量????(x)的第k个向量,我们注意到,对于任何向量z,我们有
倒数第二步利用了,对于ai=zi????k(x(i)),
因此,我们证明了如果K是一个有效的内核(例如,如果K有对应的特征映射),那么对应的内核矩阵K∈ℝn×n是对称半正定的。
有效内核的充足条件
更一般地说,以上证明不仅是必要条件,而且是充分条件使K成为有效内核(也称为Mercer内核)。以下结果归因于Mercer.
定理(Mercer)
定义K:ℝd×ℝd—>ℝ.如果K是一个Mercer内核,那么对应内核矩阵的对称半正定是K是一个Mercer内核的充分必要条件。