0
点赞
收藏
分享

微信扫一扫

机器学习日志8

就是耍帅 2022-04-23 阅读 88
机器学习

最优边界分类器

对于我们前面学习的算法,我们的目标是寻找最大的边距从而使得我们的决策边界(超平面)更加可信。我们讲这种思想数学化表示为:

​ 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,所以问题转化为数学形式为:
m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 min_{w,b}\frac{1}{2}||w||^2 minw,b21w2

y ( i ) ( w T x ( i ) + b ) ≥ 1 , i = 1 , . . . , n y^{(i)}(w^Tx^{(i)}+b)≥ 1, i = 1,...,n y(i)(wTx(i)+b)1,i=1,...,n

现在这个问题变成了凸二次目标和线性约束,它的结果就是最优边界分类器,可以利用QP软件求得结果。

核心方法

特征映射

前面我们根据x和y的线性关系学习了线性回归,今天我们将要学习一种非线性关系的方法;假设我们有三次函数

y = θ3x3 + θ2x2 + θ1x + θ0.我们通过对对变量的重写可以将他转换成linear function(一般指一次函数),首先我们定义:𝜙:ℝ—>ℝ4:
在这里插入图片描述

让θ ∈ ℝ4包含输入θ0, θ1, θ2, θ0随后我们就可以重新写出我们的公式为:
在这里插入图片描述

这样三次函数就改写成了以𝜙(x)表示的一次函数,为了区分输入的x和由x生成的𝜙我们将x称为属性,将𝜙(x)称为特征变量,将𝜙称为特征地图;

带有特征的最小均方差

我们将推导梯度下降算法来拟合模型θTφ(x),回忆我们训练θTx的最小二乘问题,批梯度下降的公式为:
θ : = θ + α ∑ r = 1 n ( y ( i ) − h θ ( x ( i ) ) ) x ( i ) \theta:=\theta+\alpha\sum_{r=1}^n(y^{(i)}-h_\theta(x^{(i)}))x^{(i)} θ:=θ+αr=1n(y(i)hθ(x(i)))x(i)

: = θ + α ∑ r = 1 n ( y ( i ) − θ T x ( i ) ) x ( i ) :=\theta+\alpha\sum_{r=1}^n(y{(i)}-\theta^Tx^{(i)})x^(i) :=θ+αr=1n(y(i)θTx(i))x(i)

设𝜙:ℝd—>ℝp是将属性x映射到ℝp维特征𝜙(x)的特征地图,现在我们要训练的是𝛉属于ℝp的函数θTφ(x),我们可以利用𝜙(x(i))替换上面所有出现的x(i):
θ : = θ + α ∑ i = 1 n ( y ( i ) − θ T ϕ ( x ( i ) ) ) ϕ ( x ( i ) ) \theta:=\theta+\alpha\sum_{i=1}^n(y^{(i)}-\theta^T\phi(x^{(i)}))\phi(x^{(i)}) θ:=θ+αi=1n(y(i)θTϕ(x(i)))ϕ(x(i))
同样,相应的随机梯度下降更新规则为:
θ : = θ + α ( y ( i ) − θ T ϕ ( x ( i ) ) ) ϕ ( x ( i ) ) \theta:=\theta+\alpha(y^{(i)}-\theta^T\phi(x^{(i)}))\phi(x^{(i)}) θ:=θ+α(y(i)θTϕ(x(i)))ϕ(x(i))

带有核技巧的最小均方:

当特征𝜙(x)是非常高纬度时,梯度下降和随机梯度下降的计算成本将会非常的高昂;假设对于特征地图𝜙我们有更高纬度的输入,即x∈ℝd且让𝜙(x)为一个包含小于3阶关于x的单项式的向量,我们就会有:

𝜙(x)的维度是d3阶的。这对于计算而言是一个过长的向量———当d = 1000时,每次更新至少需要计算并存储10003= 109维向量,这比普通最小二乘更新的更新规则慢106倍。

显然,d3阶的运行时间和内存使用是不可避免的,因为向量𝛉本身的维度就接近于d3阶,即p≈d3,并且我们需要更新并存储每个输入的𝛉并存储,所以我们要介绍核技巧,它可以明显的节省运行时间并且不用明确的存储𝛉;

简单的说,我们假设初始值𝛉=0,并迭代:
θ : = θ + α ∑ i = 1 n ( y ( i ) − θ T ϕ ( x ( i ) ) ) ϕ ( x ( i ) ) \theta:=\theta+\alpha\sum_{i=1}^n(y^{(i)}-\theta^T\phi(x^{(i)}))\phi(x^{(i)}) θ:=θ+αi=1n(y(i)θTϕ(x(i)))ϕ(x(i))
观察到在任何时候,𝛉是向量𝜙(x(1)),…,𝜙(x(n))的线性组合。我们可以将其归纳为,在初始时:
θ = 0 = ∑ i = 1 n 0 ⋅ ϕ ( x ( i ) ) \theta=0=\sum_{i=1}^n0·\phi(x^{(i)}) θ=0=i=1n0ϕ(x(i))
假设在某些点,当𝜷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)})
$$

= ∑ i = 1 n β i ϕ ( x ( i ) ) + α ∑ i = 1 n ( y ( i ) − θ T ϕ ( i ) ) ϕ ( x i ) =\sum_{i=1}^n\beta_i\phi(x_{(i)})+\alpha\sum_{i=1}^n(y^{(i)}-\theta^T\phi_{(i)})\phi(x_{i}) =i=1nβiϕ(x(i))+αi=1n(y(i)θTϕ(i))ϕ(xi)

= ∑ i = 1 n ( β i + α ( y ( i ) − θ T ϕ ( x ( i ) ) ) ) ⏟ n e w    β i ϕ ( x ( i ) ) =\sum_{i=1}^n(\underbrace{\beta_i+\alpha(y_{(i)}-\theta^T\phi(x_{(i)})))}_{new\ \ \beta_i}\phi(x^{(i)}) =i=1n(new  βi βi+α(y(i)θTϕ(x(i))))ϕ(x(i))

我们的总体思想是通过一组系数𝜷1,…,𝜷n隐含表示p维向量𝛉,为此我们导出系数𝜷1,…,𝜷n的更新规则,使用上面的公式,我们看到新的βi取决于旧的βi:
β i : = β i + α ( y ( i ) − θ T ϕ ( x ( i ) ) ) \beta_i:=\beta_i+\alpha(y_{(i)}-\theta^T\phi(x^{(i)})) βi:=βi+α(y(i)θTϕ(x(i)))
现在我们仍然在公司中存在𝛉,替换𝛉用:
θ = ∑ j = 1 n β j ϕ ( x ( j ) ) \theta=\sum_{j=1}^n\beta_j\phi(x^{(j)}) θ=j=1nβjϕ(x(j))
我们将会得到:
∀ i ∈ { 1 , … … , n } , β i = β i + α ( y ( i ) − ∑ j = 1 n β j ϕ ( x ( j ) ) ϕ ( x ( i ) ) ) \forall i \in\{1,……,n\},\beta_i=\beta_i+\alpha(y^{(i)}-\sum_{j=1}^n\beta_j\phi(x_{(j)})\phi(x^{(i)})) i{1,n},βi=βi+α(y(i)j=1nβjϕ(x(j))ϕ(x(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 ) , ϕ ( z ) > = 1 + ∑ i = 1 d x i z i + ∑ i , z ∈ { 1 , … , d } x i x j z i z j + ∑ i , j , k ∈ 1 , … , d x i x j x k z i z j z k <\phi(x),\phi(z)>=1+\sum_{i=1}^dx_iz_i+\sum_{i,z\in\{1,…,d\}}x_ix_jz_iz_j+\sum_{i,j,k\in{1,…,d}}x_ix_jx_kz_iz_jz_k <ϕ(x),ϕ(z)>=1+i=1dxizi+i,z{1d}xixjzizj+i,j,k1,dxixjxkzizjzk

= 1 + ∑ i = 1 d + ( ∑ i = 1 d ) 2 + ( ∑ i = 1 d ) 3 =1+\sum_{i=1}^d+(\sum_{i=1}^d)^2+(\sum_{i=1}^d)^3 =1+i=1d+(i=1d)2+(i=1d)3

= 1 + < x , z > + < x , z > 2 + < x , z > 3 =1+<x,z>+<x,z>^2+<x,z>^3 =1+<x,z>+<x,z>2+<x,z>3

因此计算<𝜙(x(j)),𝜙(x(i))>,我们可以首先计算复杂度为O(d)次的<x,z>,然后通过计算结果的常数去计算1+<x,z>+<x,z>2+<x,z>3.

如你所见,这里的向量内积计算是特别的基础,我们定义𝟀×𝟀—>ℝ的映射为Kernel关于特征映射𝜙的函数表示为:
K ( x , z ) ≘ < ϕ ( x ) , ϕ ( z ) > K(x,z)≙<\phi(x),\phi(z)> K(x,z)=<ϕ(x),ϕ(z)>
为了结束讨论,我们将最终算法记为如下:

1.对于所有i,j∈{1,…,n}使用1+<x,z>+<x,z>2+<x,z>3计算所有K(x,z)≙<𝜙(x),𝜙(z)>的值。

2.循环计算:
∀ i ∈ { 1 , … … , n } , β i = β i + α ( y ( i ) − ∑ j = 1 n β j ϕ ( x ( j ) ) ϕ ( x ( i ) ) )                                  ( 11 ) \forall i \in\{1,……,n\},\beta_i=\beta_i+\alpha(y^{(i)}-\sum_{j=1}^n\beta_j\phi(x_{(j)})\phi(x^{(i)}))\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (11) i{1,n},βi=βi+α(y(i)j=1nβjϕ(x(j))ϕ(x(i)))                                (11)
或用向量符号表示,令K为n×n矩阵,其中Kij = K(x(i),x(j)),我们有:
β : = β + α ( y ⃗ − K β ) \beta:=\beta+\alpha(\vec y-K\beta) β:=β+α(y Kβ)
利用上面的算法,我们可以每次迭代用时间复杂度O(n)高效的更新𝛉的显式表达𝜷。最后,我们需要证明,显式表示β的足以计算预测θTφ(x)。确实,我们有:
θ ϕ ( x ) = ∑ i = 1 n β i ϕ ( x ( i ) ) ϕ ( x ) = ∑ i = 1 n β i K ( x ( i ) , x ) \theta\phi(x)=\sum_{i=1}^n\beta_i\phi(x^{(i)})\phi(x)=\sum_{i=1}^n\beta_iK(x^{(i)},x) θϕ(x)=i=1nβiϕ(x(i))ϕ(x)=i=1nβiK(x(i),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 T , z ) 2 K(x,z)=(x^T,z)^2 K(x,z)=(xT,z)2
​ 我们同样可以将它写成这样:
K ( x , z ) = ( ∑ r = 1 d x i z i ) ( ∑ j = 1 d ) = ∑ i = 1 n ∑ j = 1 d x i x j z i z j = ∑ i , j = 1 d ( x i x j ) ( z i z j ) K(x,z)=(\sum_{r=1}^dx_iz_i)(\sum_{j=1}^d)\\ =\sum_{i=1}^n\sum_{j=1}^dx_ix_jz_iz_j\\ =\sum_{i,j=1}^d(x_ix_j)(z_iz_j) K(x,z)=(r=1dxizi)(j=1d)=i=1nj=1dxixjzizj=i,j=1d(xixj)(zizj)
​ 因此我们可以看到内核函数 K(x,z) = ⟨φ(x),φ(z)⟩和对应特征映射𝜙(当d=3时):
在这里插入图片描述

​ 再次看到内核方法的高效性,注意到无论如何计算高纬度的𝜙(x)都需要复杂度O(d2),但是使用 K(x,z)只需要复杂度为O(d)的计算--------和输入的属性维度是线性的。

​ 对于另一个相关的模型,我命定义 K(·,·)为:
K ( x , z ) = ( x T + c ) 2 = ∑ i , j = 1 d ( x i x j ) ( z i z j ) + ∑ i = 1 d ( 2 c x i ) ( 2 c z z ) + c 2 K(x,z)=(x^T+c)^2\\=\sum_{i,j=1}^d(x_ix_j)(z_iz_j)+\sum_{i=1}^d(\sqrt{2c}x_i)(\sqrt{2c}z_z)+c^2 K(x,z)=(xT+c)2=i,j=1d(xixj)(zizj)+i=1d(2c xi)(2c zz)+c2
​ 这个内核函数对应的特征地图为:(d=3的情况下)
在这里插入图片描述

​ 参数c控制着xi(一阶)和xixj(二阶)的相关权重。

​ 更广泛的说,内核K(x, z) = (xT z + c)k对应
( d + k k ) \binom{d+k}{k} (kd+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的相似程度。例如,也许您选择了:
K ( x , z ) = e x p ( ∣ ∣ w − z ∣ ∣ 2 2 σ 2 ) K(x,z)=exp(\frac{||w-z||^2}{2\sigma^2}) K(x,z)=exp(2σ2wz2)
​ 当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,我们有
z T K z = ∑ i ∑ j z i K i j z j = ∑ i ∑ j z i ϕ ( x ( i ) ) T ϕ ( x ( j ) ) z j = ∑ i ∑ j z i ∑ k ϕ k ( x ( i ) ) ϕ k ( x ( j ) ) z j = ∑ z ∑ i ∑ j z i ϕ k ( x ( i ) ) ϕ k ( x ( j ) ) z j = ∑ k ( ∑ i z i ϕ k ( x ( i ) ) ) 2 ≥ 0 z^TKz=\sum_{i}\sum_{j}z_iK_{ij}z_j\\=\sum_{i}\sum_{j}z_i\phi(x^{(i)})^T\phi(x^{(j)})z_j\\=\sum_{i}\sum_{j}z_i\sum_{k}\phi_k(x^{(i)})\phi_k(x^{(j)})z_j\\=\sum_{z}\sum_i\sum_jz_i\phi_k(x^{(i)})\phi_k(x^{(j)})z_j\\=\sum_k(\sum_iz_i\phi_k(x^{(i)}))^2\\\ge0 zTKz=ijziKijzj=ijziϕ(x(i))Tϕ(x(j))zj=ijzikϕk(x(i))ϕk(x(j))zj=zijziϕk(x(i))ϕk(x(j))zj=k(iziϕk(x(i)))20
​ 倒数第二步利用了,对于ai=zi𝜙k(x(i)),
∑ i , j a i a z = ( ∑ i a i ) 2 \sum_{i,j}a_ia_z=(\sum_ia_i)^2 i,jaiaz=(iai)2
​ 因此,我们证明了如果K是一个有效的内核(例如,如果K有对应的特征映射),那么对应的内核矩阵K∈ℝn×n是对称半正定的。

有效内核的充足条件

​ 更一般地说,以上证明不仅是必要条件,而且是充分条件使K成为有效内核(也称为Mercer内核)。以下结果归因于Mercer.

定理(Mercer)

​ 定义K:ℝd×ℝd—>ℝ.如果K是一个Mercer内核,那么对应内核矩阵的对称半正定是K是一个Mercer内核的充分必要条件。

举报

相关推荐

0 条评论