SVM —— 理论推导

SVM

  • 支持向量
    • 线性可分
    • 最大间隔超平面
    • 最大间隔超平面的推导
    • 支持向量
    • 分类间隔的推导
    • 最优化问题
  • 对偶问题
    • 拉格朗日乘子法
    • 强对偶性
  • SVM 优化
  • 软间隔
    • 解决问题
    • 优化目标及求解
  • 核函数
    • 线性不可分
    • 核函数的作用
    • 常见核函数
  • SVM 算法优缺点

支持向量机(Support Vector Machine,SVM)是一种常用的监督学习算法,主要用于分类和回归任务。它的核心思想是找到一个最优的超平面或者曲面,将不同类别的样本点分开。

在二分类问题中,SVM 试图找到一个超平面来将两个类别的样本点分隔开,并使得两个类别距离超平面的最小间隔最大化。这个超平面被称为最大间隔超平面。对于非线性可分的情况,SVM 可以通过使用核函数将输入空间映射到高维特征空间,从而使数据在新的特征空间中线性可分。

训练 SVM 模型的过程包括以下步骤:

  1. 收集和准备训练数据集,确保数据集中的标签已知。
  2. 选择合适的核函数,并确定相应的参数。
  3. 构建目标函数,即最大化间隔的优化问题。
  4. 使用优化算法求解目标函数,找到最优的超平面或者曲面。
  5. 根据训练好的模型进行预测和分类。

支持向量

线性可分

通俗的讲:在二维空间中,如果两类点能够被一条直线完全分开,那么这两类点就是线性可分的。

严格的讲: D 0 D_0 D0 D 1 D_1 D1 n n n 维欧式空间中的两个点集,如果存在 n n n 维向量 w w w 和实数 b b b,使得所有属于 D 0 D_0 D0 x i x_i xi 都有 w x i + b > 0 wx_i + b > 0 wxi+b>0,而所有属于 D 1 D_1 D1 的点 x j x_j xj 都有 w x j + b < 0 wx_j + b < 0 wxj+b<0,则称 D 0 D_0 D0 D 1 D_1 D1 线性可分。

在这里插入图片描述

我们从线性可分的二分类问题入手,如下图所示:

在这里插入图片描述

上述图中,红点和蓝点分别表示两个不同的类别,数据显然是线性可分的,但是能够将两类数据分开的直线也显然不止一条。中间那条黑色实线为分界线,我们称之为决策面,一个决策面对应一个线性分类器。从分类结果上看,分类器 A 和分类器 B 的分类效果是相同的,都能把两个类别完全分开。

实际上,分类器 A 和分类器 B 的分类性能是有差距的,如下图所示:

在这里插入图片描述

在决策面不变的情况下,添加了一个红点数据。可以看到,分类器 A 依然能够很好的对其进行分类,而分类器 B 则出现了分类错误,显然分类器 A 的决策面更加稳健。

最大间隔超平面

在决策面不变且不会错分样本的情况下,移动决策面,可以在原决策面两侧分别找到一个极限位置,越过该位置就会导致错分,如上图中的虚线所示。虚线的位置由距离原决策面最近的样本点决定,两条虚线之间的垂直距离就是决策面的分类间隔。

显然,每一个能把两类数据正确分开的方向都有一个最优决策面,这些最优决策面都有各自的分类间隔,其中具有最大间隔的决策面就是 SVM 算法要寻找的最优解。最优解对应的两条虚线穿过的样本点,就是 SVM 中的支持样本点,称之为支持向量。

从二维扩展到多维空间时,能将 D 0 D_0 D0 D 1 D_1 D1 完全分开的 w x + b = 0 wx + b = 0 wx+b=0 就成了一个超平面。为了使这个超平面更具鲁棒性,我们会寻找出一个最佳超平面(即以最大间隔把两类样本分开的超平面),也称之为最大间隔超平面。

最大间隔超平面的推导

我们知道二维空间中的直线方程可写成如下:
y = a x + b y = ax + b y=ax+b
我们做个小改动,将 x x x 轴变成 x 1 x_1 x1,将 y y y 轴变成 x 2 x_2 x2,则有:
x 2 = a x 1 + b ⟹ a x 1 − x 2 + b = 0 x_2 = ax_1 + b \implies ax_1 - x_2 + b = 0 x2=ax1+bax1x2+b=0
将上述公式向量化,得:
[ a − 1 ] [ x 1 x 2 ] + b = 0 ⟹ w T x + b = 0 \begin{bmatrix}a & -1\end{bmatrix}\begin{bmatrix}x_1 \\ x_2\end{bmatrix}+ b = 0 \implies w^Tx + b = 0 [a1][x1x2]+b=0wTx+b=0
将上述公式从二维空间推广到 n n n 维空间,就变成了超平面方程(一个超平面在二维空间中的实例就是一条直线)。

因此,超平面可以用下式表示:
w T x + b = 0 w^Tx + b = 0 wTx+b=0
其中, w = [ w 1 , w 2 , . . . , w n ] T w=[w_1, w_2, ..., w_n]^T w=[w1,w2,...,wn]T x = [ x 1 , x 2 , . . . , x n ] T x=[x_1, x_2, ..., x_n]^T x=[x1,x2,...,xn]T

支持向量

在这里插入图片描述

距离超平面最近的样本点,就叫做支持向量。

分类间隔的推导

在二维空间中,点 ( x , y ) (x, y) (x,y) 到直线 A x + B y + C = 0 Ax + By + C = 0 Ax+By+C=0 的距离公式可以写成如下:
d = ∣ A x + B y + C ∣ A 2 + B 2 d = \frac{|Ax+By+C|}{\sqrt {A^2 + B^2}} d=A2+B2 Ax+By+C
将直线方程扩展到 n n n 维空间,点 x = ( x 1 , x 2 , . . . , x n ) x=(x_1, x_2, ..., x_n) x=(x1,x2,...,xn) 到超平面 w T x + b = 0 w^Tx + b = 0 wTx+b=0 的距离公式可以写成如下:
d = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ d = \frac{|w^Tx + b|}{||w||} d=∣∣w∣∣wTx+b
其中, ∣ ∣ w ∣ ∣ = w 1 2 + w 2 2 + ⋅ ⋅ ⋅ + w n 2 ||w||=\sqrt {w_1^2 + w_2^2 + ··· + w_n^2} ∣∣w∣∣=w12+w22+⋅⋅⋅+wn2

上式中的 d d d 就是分类间隔,分类间隔越大,我们就认为这个超平面的分类效果越好。此时,求解超平面的问题就转化成了求解分类间隔最大化的问题。

最优化问题

求解最佳超平面(最大间隔超平面)的过程,就叫做最优化。一个最优化问题通常考虑两个基本要素,目标函数与优化对象。在求解最佳超平面的过程中,分类间隔就是目标函数,超平面就是优化对象。我们需要对分类间隔与超平面进行数学建模。

超平面方程在上文中已推导得出,即为 w T x + b = 0 w^Tx + b = 0 wTx+b=0。其中 w w w 是超平面的法向量, b b b 是截距。假设有一个超平面能够将正例和负例完全分开,正例的标签为 1,负例的标签为 -1,那么我们的目标就是要找到最优的 w w w b b b,使得所有正例点满足 w T x + b > = 1 w^Tx + b >= 1 wTx+b>=1,所有负例点满足 w T x + b < = − 1 w^Tx + b <= -1 wTx+b<=1,并且最大化间隔(即正例点和负例点到超平面的距离之和)。

分类间隔方程在上文中也已推导得出,即为 d = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ d = \frac{|w^Tx + b|}{||w||} d=∣∣w∣∣wTx+b,这个就是目标函数。根据支持向量的定义我们知道,支持向量到超平面的距离为 d d d,其他样本点到超平面的距离大于 d d d

在这里插入图片描述

于是,我们可以得出:
{ w T x + b ∣ ∣ w ∣ ∣ ≥ d y = 1 w T x + b ∣ ∣ w ∣ ∣ ≤ − d y = − 1 \left\{\begin{matrix}\frac{w^Tx + b}{||w||} \ge d & y = 1 \\ \frac{w^Tx + b}{||w||} \leq -d & y = -1\end{matrix}\right. {∣∣w∣∣wTx+bd∣∣w∣∣wTx+bdy=1y=1
两边同时除以 d d d,得到:
{ w T x + b ∣ ∣ w ∣ ∣ d ≥ 1 y = 1 w T x + b ∣ ∣ w ∣ ∣ d ≤ − 1 y = − 1 \left\{\begin{matrix}\frac{w^Tx + b}{||w||d} \ge 1 & y = 1 \\ \frac{w^Tx + b}{||w||d} \leq -1 & y = -1\end{matrix}\right. {∣∣w∣∣dwTx+b1∣∣w∣∣dwTx+b1y=1y=1
由于 ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣ d d d 都是标量,都为正数,因此我们可以令 ∣ ∣ w ∣ ∣ d ||w||d ∣∣w∣∣d 1 1 1(之所以令它为 1 1 1,是为了方便后续的推导和优化,且这个做法对目标函数的优化并无影响),得到:
{ w T x + b ≥ 1 y = 1 w T x + b ≤ − 1 y = − 1 \left\{\begin{matrix}w^Tx + b \ge 1 & y = 1 \\ w^Tx + b \leq -1 & y = -1\end{matrix}\right. {wTx+b1wTx+b1y=1y=1
将两个方程合并(两边同乘以 y y y),得到:
y ( w T x + b ) ≥ 1 y(w^Tx + b) \ge 1 y(wTx+b)1
至此,我们可以得到超平面两侧的经过支持向量且与超平面平行的平面方程,如下图所示:

在这里插入图片描述

每个支持向量到超平面的距离可以写成如下:
d = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ d = \frac{|w^Tx + b|}{||w||} d=∣∣w∣∣wTx+b
由上述 y ( w T x + b ) ≥ 1 > 0 y(w^Tx + b) \ge 1 > 0 y(wTx+b)1>0,可以得到 y ( w T x + b ) = ∣ w T x + b ∣ y(w^Tx + b) = |w^Tx + b| y(wTx+b)=wTx+b y = ± 1 y = \pm 1 y=±1,进而得到:
d = y ( w T x + b ) ∣ ∣ w ∣ ∣ d = \frac{y(w^Tx + b)}{||w||} d=∣∣w∣∣y(wTx+b)
我们可以最大化这个距离:
m a x 2 ∗ y ( w T x + b ) ∣ ∣ w ∣ ∣ max \ 2*\frac{y(w^Tx + b)}{||w||} max 2∣∣w∣∣y(wTx+b)
这里乘上 2 2 2 是为了方便后续的推导,对目标函数没有影响。支持向量样本点有 y ( w T x + b ) = ∣ w T x + b ∣ = 1 y(w^Tx + b) = |w^Tx + b| = 1 y(wTx+b)=wTx+b=1,因此得到最大化距离:
m a x 2 ∣ ∣ w ∣ ∣ max \ \frac{2}{||w||} max ∣∣w∣∣2
将求解 d d d 的最大化问题转化为最小化问题,之所以这样做是为了方便对目标函数进行求导,不影响求解最优化问题,上述式子等效于下式:
m i n 1 2 ∣ ∣ w ∣ ∣ min \ \frac{1}{2}||w|| min 21∣∣w∣∣
去除 ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣ 的根号,便于后续计算,得到:
m i n 1 2 ∣ ∣ w ∣ ∣ 2 min \ \frac{1}{2}||w||^2 min 21∣∣w2
将目标函数与约束条件放在一起进行描述,得到最优化模型:
m i n 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w T x i + b ) ≥ 1 i = 1 , 2 , . . . , n min \ \frac{1}{2}||w||^2 \ \ s.t. \ \ y_i(w^Tx_i + b) \ge 1 \ \ i = 1, 2, ..., n min 21∣∣w2  s.t.  yi(wTxi+b)1  i=1,2,...,n
上述公式描述的是一个典型的不等式约束条件下的二次型函数优化问题,同时也是支持向量机的基本数学模型。

对偶问题

拉格朗日乘子法

如果集合中任意两个元素连线上的点也在集合中,那么这个集合就是凸集。

假设 f ( x ) f(x) f(x) 是定义在区间 L L L 上的函数,若对任意两点 x 1 , x 2 x_1, x_2 x1,x2 和任意的实数 λ ∈ ( 0 , 1 ) \lambda \in (0, 1) λ(0,1),总有 f ( λ x 1 + ( 1 − λ ) x 2 ) ≤ λ f ( x 1 ) + ( 1 − λ ) f ( x 2 ) f(\lambda x_1 + (1 - \lambda)x_2) \leq \lambda f(x_1) + (1 - \lambda)f(x_2) f(λx1+(1λ)x2)λf(x1)+(1λ)f(x2),则称 f ( x ) f(x) f(x) L L L 上的凸函数。

通常,我们求解的最优化问题有如下几类:

  • 无约束的优化问题,可以写成如下:
    m i n f ( x 1 , x 2 , . . . , x n ) min \ f(x_1, x_2, ..., x_n) min f(x1,x2,...,xn)
    对于此类问题,最常使用的方法便是费马定理,即求导,令导数为零,求出极值点。如果是凸函数,则能保证求出来的解是最优解。

  • 有等式约束的优化问题,可以写成如下:
    m i n f ( x 1 , x 2 , . . . , x n ) s . t . h i ( x 1 , x 2 , . . . , x n ) = 0 i = 1 , 2 , . . . , m min \ f(x_1, x_2, ..., x_n) \\ s.t. \ \ h_i(x_1, x_2, ..., x_n) = 0 \ \ i = 1, 2, ..., m min f(x1,x2,...,xn)s.t.  hi(x1,x2,...,xn)=0  i=1,2,...,m
    对于此类问题,最常使用的方法便是拉格朗日乘子法(Lagrange Multiplier),即用一个系数将等式约束与目标函数写在一起,形如 L ( x , λ ) = f ( x ) + ∑ i = 1 m λ i h i ( x ) L(x, \lambda) = f(x) + \displaystyle\sum_{i=1}^{m}\lambda _ih_i(x) L(x,λ)=f(x)+i=1mλihi(x) L ( x , λ ) L(x, \lambda) L(x,λ) 称为拉格朗日函数,系数 λ \lambda λ 称为拉格朗日乘子。

    对拉格朗日函数中的各变量进行求导,令其为零,可求得候选值集合,最后通过验证求得最优值。

    利用必要条件找到可能的极值点,判断是否为极值点,需要根据问题本身的具体情况进行检验,式子如下:
    { ∂ L ∂ x i = 0 i = 1 , 2 , . . . , n ∂ L ∂ λ i = 0 i = 1 , 2 , . . . , m \left\{\begin{matrix}\frac{\partial L}{\partial x_i} = 0 & i = 1, 2, ..., n\\ \frac{\partial L}{\partial \lambda _i} = 0 & i = 1, 2, ..., m \end{matrix}\right. {xiL=0λiL=0i=1,2,...,ni=1,2,...,m
    上述方程组称为等式约束的极值必要条件。等式约束下的拉格朗日乘子法引入了 m m m 个拉个朗日乘子,我们将 x i x_i xi λ i \lambda _i λi 都视作优化变量,因此共有 ( n + m ) (n + m) (n+m) 个优化变量。

  • 有不等式约束的优化问题,可以写成如下:
    m i n f ( x 1 , x 2 , . . . , x n ) s . t . g i ( x 1 , x 2 , . . . , x n ) ≤ 0 i = 1 , 2 , . . . , m min \ f(x_1, x_2, ..., x_n) \\s.t. \ \ g_i(x_1, x_2, ..., x_n) \leq 0 \ \ i = 1, 2, ..., m min f(x1,x2,...,xn)s.t.  gi(x1,x2,...,xn)0  i=1,2,...,m
    对于此类问题,最常使用的方法便是 KKT 条件法。同样地,用系数将所有的等式、不等式约束与目标函数写在一起,写在一起的函数也称为拉格朗日函数,系数也叫拉格朗日乘子。

本文中的优化问题属于有不等式约束的优化,针对这种情况,主要思想是通过引入松弛变量将不等式约束转化为等式约束。

在这里插入图片描述

我们的最优化模型如下:
m i n 1 2 ∣ ∣ w ∣ ∣ 2 s . t . g i ( w ) = 1 − y i ( w T x i + b ) ≤ 0 i = 1 , 2 , . . . , n min \ \frac{1}{2}||w||^2 \\ s.t. \ \ g_i(w) = 1 - y_i(w^Tx_i + b) \leq 0 \ \ i = 1, 2, ..., n min 21∣∣w2s.t.  gi(w)=1yi(wTxi+b)0  i=1,2,...,n
引入松弛变量 a i 2 a_i^2 ai2,得到 h i ( w , a i ) = g i ( w ) + a i 2 = 0 h_i(w, a_i) = g_i(w) + a_i^2 = 0 hi(w,ai)=gi(w)+ai2=0。这里加平方主要是为了不再引入新的约束条件,如果引入的松弛变量为 a i a_i ai,那我们必须要保证 a i ≥ 0 a_i \ge 0 ai0,才能使得 h i ( w , a i ) = 0 h_i(w, a_i) = 0 hi(w,ai)=0

由此,我们将不等式约束转化为了等式约束,并得到拉格朗日函数:
L ( w , λ , a ) = f ( w ) + ∑ i = 1 n λ i h i ( w ) = f ( w ) + ∑ i = 1 n λ i [ g i ( w ) + a i 2 ] λ i ≥ 0 L(w, \lambda , a) = f(w) + \displaystyle\sum_{i=1}^{n}\lambda _ih_i(w) = f(w) + \displaystyle\sum_{i=1}^{n}\lambda _i[g_i(w) + a_i^2] \ \ \ \ \lambda _i \ge 0 L(w,λ,a)=f(w)+i=1nλihi(w)=f(w)+i=1nλi[gi(w)+ai2]    λi0
根据等式约束优化问题的极值必要条件,联立方程:
{ ∂ L ∂ w i = ∂ f ∂ w i + ∑ i = 1 n λ i ∂ g i ∂ w i = 0 ∂ L ∂ a i = 2 λ i a i = 0 ∂ L ∂ λ i = g i ( w ) + a i 2 = 0 λ i ≥ 0 \left\{\begin{matrix}\frac{\partial L}{\partial w_i} = \frac{\partial f}{\partial w_i} + \displaystyle\sum_{i=1}^{n}\lambda _i\frac{\partial g_i}{\partial w_i} = 0 \\ \frac{\partial L}{\partial a_i} = 2\lambda _ia_i = 0 \\ \frac{\partial L}{\partial \lambda _i} = g_i(w) + a_i^2 = 0 \\ \lambda _i \ge 0\end{matrix}\right. wiL=wif+i=1nλiwigi=0aiL=2λiai=0λiL=gi(w)+ai2=0λi0
针对 λ i = 0 \lambda _i = 0 λi=0,有两种情况:

  • λ i = 0 , a i ≠ 0 \lambda _i = 0, a_i \ne 0 λi=0,ai=0。由于 λ i = 0 \lambda _i = 0 λi=0,因此约束条件 g i ( w ) g_i(w) gi(w) 不起作用,且 g i ( w ) < 0 g_i(w) < 0 gi(w)<0
  • λ i ≠ 0 , a i = 0 \lambda _i \ne 0, a_i = 0 λi=0,ai=0。此时, g i ( w ) = 0 g_i(w) = 0 gi(w)=0 λ i > 0 \lambda _i > 0 λi>0,可以理解为约束条件 g i ( w ) g_i(w) gi(w) 起作用了,且 g i ( w ) = 0 g_i(w) = 0 gi(w)=0
  • 综合可得, λ i g i ( w ) = 0 \lambda _ig_i(w) = 0 λigi(w)=0,且在约束条件起作用时,有 λ i > 0 , g i ( w ) = 0 \lambda _i > 0, g_i(w) = 0 λi>0,gi(w)=0;在约束条件不起作用时,有 λ i = 0 , g i ( w ) < 0 \lambda _i = 0, g_i(w) < 0 λi=0,gi(w)<0

由此,上述方程组转换为:
{ ∂ L ∂ w i = ∂ f ∂ w i + ∑ i = 1 n λ i ∂ g i ∂ w i = 0 λ i g i ( w ) = 0 g i ( w ) ≤ 0 λ i ≥ 0 \left\{\begin{matrix}\frac{\partial L}{\partial w_i} = \frac{\partial f}{\partial w_i} + \displaystyle\sum_{i=1}^{n}\lambda _i\frac{\partial g_i}{\partial w_i} = 0 \\ \lambda _ig_i(w) = 0 \\ g_i(w) \leq 0 \\ \lambda _i \ge 0\end{matrix}\right. wiL=wif+i=1nλiwigi=0λigi(w)=0gi(w)0λi0
以上便是不等式约束优化问题的 KKT(Karush-Kuhn-Tucker)条件, λ i \lambda _i λi 称为 KKT 乘子。上述式子直观地告诉我们,支持向量 g i ( w ) = 0 g_i(w) = 0 gi(w)=0,满足 λ i > 0 \lambda _i > 0 λi>0 即可;其他向量 g i ( w ) < 0 g_i(w) < 0 gi(w)<0,需满足 λ i = 0 \lambda _i = 0 λi=0

根据最优化模型,我们要求的是:
m i n 1 2 ∣ ∣ w ∣ ∣ 2 s . t . g i ( w ) = 1 − y i ( w T x i + b ) ≤ 0 i = 1 , 2 , . . . , n min \ \frac{1}{2}||w||^2 \\ s.t. \ \ g_i(w) = 1 - y_i(w^Tx_i + b) \leq 0 \ \ i = 1, 2, ..., n min 21∣∣w2s.t.  gi(w)=1yi(wTxi+b)0  i=1,2,...,n
即求 m i n L ( w , λ , a ) min \ L(w, \lambda, a) min L(w,λ,a) L ( w , λ , a ) L(w, \lambda, a) L(w,λ,a) 写成如下:
L ( w , λ , a ) = f ( w ) + ∑ i = 1 n λ i [ g i ( w ) + a i 2 ] = f ( w ) + ∑ i = 1 n λ i g i ( w ) + ∑ i = 1 n λ i a i 2 L(w, \lambda , a) = f(w) + \displaystyle\sum_{i=1}^{n}\lambda _i[g_i(w) + a_i^2] = f(w) + \displaystyle\sum_{i=1}^{n}\lambda _ig_i(w) + \displaystyle\sum_{i=1}^{n}\lambda _ia_i^2 L(w,λ,a)=f(w)+i=1nλi[gi(w)+ai2]=f(w)+i=1nλigi(w)+i=1nλiai2
由于 ∑ i = 1 n λ i a i 2 ≥ 0 \displaystyle\sum_{i=1}^{n}\lambda _ia_i^2 \ge 0 i=1nλiai20,故我们可以将上述问题转化为求 m i n L ( w , λ ) min \ L(w, \lambda) min L(w,λ),如下所示:
L ( w , λ ) = f ( w ) + ∑ i = 1 n λ i g i ( w ) L(w, \lambda) = f(w) + \displaystyle\sum_{i=1}^{n}\lambda _ig_i(w) L(w,λ)=f(w)+i=1nλigi(w)
假设目标函数找到了最佳参数,并取得了最小值 p > 0 p > 0 p>0,即 m i n 1 2 ∣ ∣ w ∣ ∣ 2 = p min \ \frac{1}{2}||w||^2 = p min 21∣∣w2=p。根据上述可知, λ i ≥ 0 , g i ( w ) ≤ 0 , ∑ i = 1 n λ i g i ( w ) ≤ 0 \lambda _i \ge 0, g_i(w) \leq 0, \displaystyle\sum_{i=1}^{n}\lambda _ig_i(w) \leq 0 λi0,gi(w)0,i=1nλigi(w)0,因此 m i n L ( w , λ ) = m i n f ( w ) + m i n ∑ i = 1 n λ i g i ( w ) = p + m i n ∑ i = 1 n λ i g i ( w ) min \ L(w, \lambda) = min \ f(w) + min \ \displaystyle\sum_{i=1}^{n}\lambda _ig_i(w) = p + min \ \displaystyle\sum_{i=1}^{n}\lambda _ig_i(w) min L(w,λ)=min f(w)+min i=1nλigi(w)=p+min i=1nλigi(w)。而要使得 ∑ i = 1 n λ i g i ( w ) \displaystyle\sum_{i=1}^{n}\lambda _ig_i(w) i=1nλigi(w) 最小,就要使得 λ i \lambda_i λi 最大。故最优化问题可转化为如下:
m i n L ( w , λ ) = min ⁡ w max ⁡ λ L ( w , λ ) s . t . λ i ≥ 0 min \ L(w, \lambda) = \min_{w}{\max_{\lambda}{L(w, \lambda)}} \ \ s.t. \ \ \lambda _i \ge 0 min L(w,λ)=wminλmaxL(w,λ)  s.t.  λi0

强对偶性

对偶问题就是将以下式子:
min ⁡ w max ⁡ λ L ( w , λ ) s . t . λ i ≥ 0 \min_{w}{\max_{\lambda}{L(w, \lambda)}} \ \ s.t. \ \ \lambda _i \ge 0 wminλmaxL(w,λ)  s.t.  λi0
变成了以下式子:
max ⁡ λ min ⁡ w L ( w , λ ) s . t . λ i ≥ 0 \max_{\lambda}{\min_{w}{L(w, \lambda)}} \ \ s.t. \ \ \lambda _i \ge 0 λmaxwminL(w,λ)  s.t.  λi0
假设对于函数 f ( x ) f(x) f(x),有:
m i n m a x f ( x ) ≥ m a x m i n f ( x ) min \ max \ f(x) \ge max \ min \ f(x) min max f(x)max min f(x)
也就是说,从最大的里面挑出来最小的也要比从最小的里面挑出来最大的大,这就是弱对偶关系,当且仅当等号成立时,满足强对偶关系。

满足以下两点,强对偶关系便能成立:

  • 对目标函数进行的优化属于凸优化问题。凸优化问题的定义:求取最小值的目标函数为凸函数的一类优化问题。
  • 满足 KKT 条件,KKT 条件是强对偶性的充要条件。

SVM 优化

我们已知 SVM 的优化问题为:
min ⁡ w 1 2 ∣ ∣ w ∣ ∣ 2 s . t . g i ( w , b ) = 1 − y i ( w T x i + b ) ≤ 0 i = 1 , 2 , . . . , n \min_w \ \frac{1}{2}||w||^2 \\ s.t. \ \ g_i(w, b) = 1 - y_i(w^Tx_i + b) \leq 0 \ \ \ \ i = 1, 2, ..., n wmin 21∣∣w2s.t.  gi(w,b)=1yi(wTxi+b)0    i=1,2,...,n
求解线性可分的 SVM 分类器的步骤为:

  1. 构造拉格朗日函数:
    min ⁡ w , b max ⁡ λ L ( w , b , λ ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 n λ i [ 1 − y i ( w T x i + b ) ] s . t . λ i ≥ 0 \min_{w, b}{\max_{\lambda}{L(w, b, \lambda)}} = \frac{1}{2}||w||^2 + \displaystyle\sum_{i=1}^{n}\lambda _i[1 - y_i(w^Tx_i + b)] \ \ s.t. \ \ \lambda _i \ge 0 w,bminλmaxL(w,b,λ)=21∣∣w2+i=1nλi[1yi(wTxi+b)]  s.t.  λi0

  2. 利用强对偶性进行转化(便于后续求导等操作):
    min ⁡ w , b max ⁡ λ L ( w , b , λ ) = max ⁡ λ min ⁡ w , b L ( w , b , λ ) \min_{w, b}{\max_{\lambda}{L(w, b, \lambda)}} = \max_{\lambda}{\min_{w, b}{L(w, b, \lambda)}} w,bminλmaxL(w,b,λ)=λmaxw,bminL(w,b,λ)

  3. 固定 λ \lambda λ,分别对参数 w w w 和参数 b b b 求偏导( L ( w , b , λ ) L(w, b, \lambda) L(w,b,λ) 关于 w 、 b w、b wb 最小化):
    ∂ L ∂ w = w − ∑ i = 1 n λ i x i y i = 0 ∂ L ∂ b = ∑ i = 1 n λ i y i = 0 \frac{\partial L}{\partial w} = w - \displaystyle\sum_{i=1}^{n}\lambda _ix_iy_i = 0 \\\frac{\partial L}{\partial b} = \displaystyle\sum_{i=1}^{n}\lambda _iy_i = 0 wL=wi=1nλixiyi=0bL=i=1nλiyi=0

  4. 将上述结果带回到拉格朗日函数:
    L ( w , b , λ ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 n λ i [ 1 − y i ( w T x i + b ) ] = 1 2 w T w + ∑ i = 1 n λ i − w T ∑ i = 1 n λ i y i x i − b ∑ i = 1 n λ i y i = 1 2 w T ∑ i = 1 n λ i y i x i − w T ∑ i = 1 n λ i y i x i − b ⋅ 0 + ∑ i = 1 n λ i = ∑ i = 1 n λ i − 1 2 ∑ i = 1 n ∑ j = 1 n λ i λ j y i y j x i T x j L(w, b, \lambda) = \frac{1}{2}||w||^2 + \displaystyle\sum_{i=1}^{n}\lambda _i[1 - y_i(w^Tx_i + b)] \\ = \frac{1}{2}w^Tw + \displaystyle\sum_{i=1}^{n}\lambda _i - w^T\displaystyle\sum_{i=1}^{n}\lambda _iy_ix_i - b\displaystyle\sum_{i=1}^{n}\lambda _iy_i \\ = \frac{1}{2}w^T\displaystyle\sum_{i=1}^{n}\lambda _iy_ix_i - w^T\displaystyle\sum_{i=1}^{n}\lambda _iy_ix_i - b · 0 + \displaystyle\sum_{i=1}^{n}\lambda _i \\ = \displaystyle\sum_{i=1}^{n}\lambda _i - \frac{1}{2}\displaystyle\sum_{i=1}^{n}\displaystyle\sum_{j=1}^{n}\lambda_i\lambda_jy_iy_jx_i^Tx_j L(w,b,λ)=21∣∣w2+i=1nλi[1yi(wTxi+b)]=21wTw+i=1nλiwTi=1nλiyixibi=1nλiyi=21wTi=1nλiyixiwTi=1nλiyixib0+i=1nλi=i=1nλi21i=1nj=1nλiλjyiyjxiTxj
    此时, L ( w , b , λ ) L(w, b, \lambda) L(w,b,λ) 只存在一个变量,即 λ \lambda λ

  5. 内部的最小值求解完成,接着求解外部的最大值:
    max ⁡ λ [ ∑ i = 1 n λ i − 1 2 ∑ i = 1 n ∑ j = 1 n λ i λ j y i y j x i T x j ] s . t . ∑ i = 1 n λ i y i = 0 λ i ≥ 0 \max_\lambda \ [\displaystyle\sum_{i=1}^{n}\lambda _i - \frac{1}{2}\displaystyle\sum_{i=1}^{n}\displaystyle\sum_{j=1}^{n}\lambda_i\lambda_jy_iy_jx_i^Tx_j] \\s.t. \ \ \displaystyle\sum_{i=1}^{n}\lambda _iy_i = 0 \\\lambda _i \ge 0 λmax [i=1nλi21i=1nj=1nλiλjyiyjxiTxj]s.t.  i=1nλiyi=0λi0
    优化问题变成了上述形式,这是一个二次规划问题,对于此类问题,常用序列最小优化(Sequential Minimal Optimization,SMO)算法进行求解。

    SMO 算法的核心思想非常简单,每次只优化一个参数,而固定住其他参数,仅求解当前这个优化参数的极值。

    SMO 算法每次只优化一个参数,但我们的目标函数有约束条件 ∑ i = 1 n λ i y i = 0 \displaystyle\sum_{i=1}^{n}\lambda _iy_i = 0 i=1nλiyi=0,没法一次只变动一个参数,所以我们选择一次变动两个参数。具体步骤如下:

    • 选择两个需要更新的参数 λ i 、 λ j \lambda _i、\lambda _j λiλj,固定其他参数,于是得到以下约束:
      λ i y i + λ j y j = c λ i ≥ 0 , λ j ≥ 0 \lambda _iy_i + \lambda_jy_j = c \ \ \ \ \lambda _i \ge 0, \ \lambda _j \ge 0 λiyi+λjyj=c    λi0, λj0
      其中 c = − ∑ k ≠ i , j λ k y k c = -\displaystyle\sum_{k \ne {i, j}}\lambda _ky_k c=k=i,jλkyk,由此得出 λ j = c − λ i y i y i \lambda_j = \frac{c - \lambda_iy_i}{y_i} λj=yicλiyi,也就是说,我们可以用 λ i \lambda _i λi 的表达式替代 λ j \lambda _j λj,这样就相当于把目标问题转化成了仅有一个约束条件 λ i ≥ 0 \lambda_i \ge 0 λi0 的最优化问题。

    • 对于仅有一个约束条件的最优化问题,可以对 λ i \lambda _i λi 进行求偏导,令导数为零,求出变量值 λ i _ n e w \lambda _{i\_{new}} λi_new,然后根据 λ i _ n e w \lambda _{i\_{new}} λi_new 求出 λ j _ n e w \lambda _{j\_{new}} λj_new

    • 多次迭代,直至收敛。

    通过 SMO 算法求得最优解 λ ∗ \lambda ^* λ

  6. 构造最大间隔超平面:
    w = ∑ i = 1 n λ i y i x i 1 − y i ( w T x i + b ) = 0 w = \displaystyle\sum_{i=1}^{n}\lambda _iy_ix_i \\1 - y_i(w^Tx_i + b) = 0 w=i=1nλiyixi1yi(wTxi+b)=0
    w w w 是已经求得的。我们知道所有 λ i > 0 \lambda _i > 0 λi>0 对应的点都是支持向量,那么我们可以随便找个支持向量,将其代入式子 1 − y s ( w T x s + b ) = 0 1 - y_s(w^Tx_s + b) = 0 1ys(wTxs+b)=0,两边同乘 y s y_s ys,因为 y s 2 = 1 y_s^2 = 1 ys2=1,因此得到 b = y s − w T x s b = y_s - w^Tx_s b=yswTxs。为了更具鲁棒性,可以求得支持向量的均值:
    b = 1 ∣ S ∣ ∑ s ∈ S ( y s − w T x s ) b = \frac{1}{|S|}\displaystyle\sum_{s \in S}(y_s - w^Tx_s) b=S1sS(yswTxs)
    至此, w w w b b b 均已求出。

    进而构造出最大间隔超平面 w T x + b = 0 w^Tx + b = 0 wTx+b=0

    分类决策函数 f ( x ) = s i g n ( w T x + b ) f(x) = sign(w^Tx + b) f(x)=sign(wTx+b),其中 s i g n ( ⋅ ) sign(·) sign() 为阶跃函数:
    s i g n ( x ) = { − 1 x < 0 0 x = 0 1 x > 0 sign(x) = \left\{\begin{matrix} -1 & x < 0 \\ 0 & x = 0 \\ 1 & x > 0 \end{matrix}\right. sign(x)= 101x<0x=0x>0
    将新样本点导入到决策函数中,即可得到样本的分类结果。

软间隔

解决问题

在实际应用中,完全线性可分的样本集是很少的,如果遇到了无法实现完全线性可分的样本集,该怎么办?如下图所示:

在这里插入图片描述

为了解决上述问题,就提出了软间隔,相比于硬间隔的苛刻条件,软间隔允许个别样本点出现在间隔带里面。也就是说,我们允许部分样本点不满足约束条件 1 − y i ( w T x i + b ) ≤ 0 1 - y_i(w^Tx_i + b) \leq 0 1yi(wTxi+b)0。为了度量这个间隔软到何种程度,我们为每个样本引入了一个松弛变量 ξ i \xi _i ξi,令 ξ i ≥ 0 \xi _i \ge 0 ξi0,且 1 − y i ( w T x i + b ) − ξ i ≤ 0 1 - y_i(w^Tx_i + b) - \xi _i \leq 0 1yi(wTxi+b)ξi0。如下图所示:

在这里插入图片描述

优化目标及求解

增加软间隔后,优化目标就变成了如下:
min ⁡ w 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 n ξ i s . t . g i ( w , b ) = 1 − y i ( w T x i + b ) − ξ i ≤ 0 ξ i ≥ 0 , i = 1 , 2 , . . . , n \min_w \ \frac{1}{2}||w||^2 + C\displaystyle\sum_{i=1}^{n}\xi _i \\ s.t. \ \ g_i(w, b) = 1 - y_i(w^Tx_i + b) - \xi _i \leq 0 \ \ \ \ \xi _i \ge 0, \ \ i = 1, 2, ..., n wmin 21∣∣w2+Ci=1nξis.t.  gi(w,b)=1yi(wTxi+b)ξi0    ξi0,  i=1,2,...,n
其中, C C C 是一个大于 0 0 0 的常数(惩罚参数),可以理解为对错误样本的惩罚程度。若 C C C 为无穷大, ξ i \xi _i ξi 必然为无穷小,如此一来线性 SVM 就又变成了线性可分,当 C C C 为有限值时,才会允许部分样本不遵循约束条件。

接下来,我们将针对新的优化目标进行最优化问题求解,求解步骤如下:

  1. 构造拉个朗日函数:
    min ⁡ w , b , ξ max ⁡ λ , μ L ( w , b , ξ , λ , μ ) = 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 n ξ i + ∑ i = 1 n λ i [ 1 − ξ i − y i ( w T x i + b ) ] − ∑ i = 1 n μ i ξ i s . t . λ i ≥ 0 μ i ≥ 0 \min_{w, b, \xi}{\max_{\lambda, \mu}{L(w, b, \xi, \lambda, \mu)}} = \frac{1}{2}||w||^2 + C\displaystyle\sum_{i=1}^{n}\xi _i + \displaystyle\sum_{i=1}^{n}\lambda _i[1 - \xi _i - y_i(w^Tx_i + b)] - \displaystyle\sum_{i=1}^{n}\mu _i\xi _i \\ s.t. \ \ \lambda _i \ge 0 \ \ \ \ \mu _i \ge 0 w,b,ξminλ,μmaxL(w,b,ξ,λ,μ)=21∣∣w2+Ci=1nξi+i=1nλi[1ξiyi(wTxi+b)]i=1nμiξis.t.  λi0    μi0
    其中, λ i 、 μ i \lambda_i、\mu_i λiμi 是拉格朗日乘子, w 、 b 、 μ i w、b、\mu_i wbμi 是优化问题的参数。

  2. 利用强对偶性进行转化:
    min ⁡ w , b , ξ max ⁡ λ , μ L ( w , b , ξ , λ , μ ) = max ⁡ λ , μ min ⁡ w , b , ξ L ( w , b , ξ , λ , μ ) \min_{w, b, \xi}{\max_{\lambda, \mu}{L(w, b, \xi, \lambda, \mu)}} = \max_{\lambda, \mu}{\min_{w, b, \xi}{L(w, b, \xi, \lambda, \mu)}} w,b,ξminλ,μmaxL(w,b,ξ,λ,μ)=λ,μmaxw,b,ξminL(w,b,ξ,λ,μ)

  3. 分别对参数 w 、 b 、 ξ i w、b、\xi_i wbξi 求偏导,并令偏导为零,得到如下关系:
    w = ∑ i = 1 n λ i y i x i 0 = ∑ i = 1 n λ i y i C = λ i + μ i w = \displaystyle\sum_{i=1}^{n}\lambda _iy_ix_i \\ 0 = \displaystyle\sum_{i=1}^{n}\lambda _iy_i \\ C = \lambda_i + \mu_i w=i=1nλiyixi0=i=1nλiyiC=λi+μi

  4. 将上述结果带回到拉格朗日函数:
    min ⁡ w , b , ξ L ( w , b , ξ , λ , μ ) = ∑ i = 1 n λ i − 1 2 ∑ i = 1 n ∑ j = 1 n λ i λ j y i y j x i T x j \min _{w, b, \xi} \ L(w, b, \xi, \lambda, \mu) = \displaystyle\sum_{i=1}^{n}\lambda _i - \frac{1}{2}\displaystyle\sum_{i=1}^{n}\displaystyle\sum_{j=1}^{n}\lambda_i\lambda_jy_iy_jx_i^Tx_j w,b,ξmin L(w,b,ξ,λ,μ)=i=1nλi21i=1nj=1nλiλjyiyjxiTxj
    最小化结果只有 λ \lambda λ,而没有 μ \mu μ,所以只需要最大化 λ \lambda λ 就好。

  5. 内部的最小值求解完成,接着求解外部的最大值:
    max ⁡ λ [ ∑ i = 1 n λ i − 1 2 ∑ i = 1 n ∑ j = 1 n λ i λ j y i y j x i T x j ] s . t . ∑ i = 1 n λ i y i = 0 λ i ≥ 0 C − λ i − μ i = 0 \max_\lambda \ [\displaystyle\sum_{i=1}^{n}\lambda _i - \frac{1}{2}\displaystyle\sum_{i=1}^{n}\displaystyle\sum_{j=1}^{n}\lambda_i\lambda_jy_iy_jx_i^Tx_j] \\s.t. \ \ \displaystyle\sum_{i=1}^{n}\lambda _iy_i = 0 \\\lambda _i \ge 0 \\C - \lambda_i - \mu_i = 0 λmax [i=1nλi21i=1nj=1nλiλjyiyjxiTxj]s.t.  i=1nλiyi=0λi0Cλiμi=0
    可以发现,软间隔与硬间隔相似,只是多了个约束条件。

    利用 SMO 算法求解最优拉格朗日乘子 λ ∗ \lambda ^* λ

  6. 构造最大间隔超平面:
    w = ∑ i = 1 n λ i y i x i b = 1 ∣ S ∣ ∑ s ∈ S ( y s − w T x s ) w = \displaystyle\sum_{i=1}^{n}\lambda _iy_ix_i \\b = \frac{1}{|S|}\displaystyle\sum_{s \in S}(y_s - w^Tx_s) w=i=1nλiyixib=S1sS(yswTxs)
    将求得的 λ i \lambda_i λi 代入上式,得到 w w w b b b,最终求得超平面 w T x + b = 0 w^Tx + b = 0 wTx+b=0

核函数

线性不可分

上述讨论的硬间隔和软间隔都是在说样本集的完全线性可分或大部分线性可分,但是我们可能会碰到的一种情况是样本点不是线性可分的,如下图所示:

在这里插入图片描述

这种情况的解决办法就是,将二维空间中线性不可分的样本点映射到高维空间中,让样本点在高维空间中实现线性可分,如下图所示:

在这里插入图片描述

对于在有限维度向量空间中线性不可分的样本,我们将其映射到更高维度的向量空间里,再通过间隔最大化的方式,学习得到的支持向量机,就是非线性 SVM。

我们用 x x x 表示原来的样本点,用 ϕ ( x ) \phi (x) ϕ(x) 表示 x x x 映射到新的特征空间后得到的新向量,那么分隔的超平面可以表示为 f ( x ) = w ϕ ( x ) + b f(x) = w\phi (x) + b f(x)=(x)+b

对于非线性 SVM,对偶问题就变成了如下:
min ⁡ λ [ 1 2 ∑ i = 1 n ∑ j = 1 n λ i λ j y i y j ( ϕ ( x i ) ⋅ ϕ ( x j ) ) − ∑ i = 1 n λ i ] s . t . ∑ i = 1 n λ i y i = 0 λ i ≥ 0 C − λ i − μ i = 0 \min_\lambda \ [\frac{1}{2}\displaystyle\sum_{i=1}^{n}\displaystyle\sum_{j=1}^{n}\lambda _i\lambda _jy_iy_j(\phi (x_i) · \phi (x_j)) - \displaystyle\sum_{i=1}^{n}\lambda _i] \\s.t. \ \ \displaystyle\sum_{i=1}^{n}\lambda _iy_i = 0 \\\lambda _i \ge 0 \\C - \lambda_i - \mu_i = 0 λmin [21i=1nj=1nλiλjyiyj(ϕ(xi)ϕ(xj))i=1nλi]s.t.  i=1nλiyi=0λi0Cλiμi=0
可以看到非线性 SVM 与线性 SVM 唯一的不同之处,就是之前的 ( x i ⋅ x j ) (x_i · x_j) (xixj) 变成了 ( ϕ ( x i ) ⋅ ϕ ( x j ) ) (\phi (x_i) · \phi (x_j)) (ϕ(xi)ϕ(xj))

核函数的作用

为什么需要核函数呢?这是因为低维空间映射到高维空间后,维度可能会很大,如果对全部样本进行点乘计算,可能会耗费很大的计算量。

但如果存在这样的一个核函数 k ( x , y ) = ( ϕ ( x i ) , ϕ ( x j ) ) k(x, y) = (\phi (x_i), \phi (x_j)) k(x,y)=(ϕ(xi),ϕ(xj)),使得 x i x_i xi x j x_j xj 在特征空间的内积等于它们在原始样本空间中通过函数 k ( x , y ) k(x, y) k(x,y) 计算得到的结果,我们就不需要计算高维甚至无穷维空间的内积了。

举个例子,假设我们有一个多项式核函数:
k ( x , y ) = ( x ⋅ y + 1 ) 2 k(x, y) = (x · y + 1)^2 k(x,y)=(xy+1)2
将样本点代入:
k ( x , y ) = ( ∑ i = 1 n ( x i ⋅ y i ) + 1 ) 2 k(x, y) = (\displaystyle\sum_{i=1}^{n}(x_i · y_i) + 1)^2 k(x,y)=(i=1n(xiyi)+1)2
展开后:
∑ i = 1 n x i 2 y i 2 + ∑ i = 2 n ∑ j = 1 i − 1 ( 2 x i x j ) ( 2 y i y j ) + ∑ i = 1 n ( 2 x i ) ( 2 y i ) + 1 \displaystyle\sum_{i=1}^{n}x_i^2y_i^2 + \displaystyle\sum_{i=2}^{n}\displaystyle\sum_{j=1}^{i-1}(\sqrt 2x_ix_j)(\sqrt 2y_iy_j) + \displaystyle\sum_{i=1}^{n}(\sqrt 2x_i)(\sqrt 2y_i) + 1 i=1nxi2yi2+i=2nj=1i1(2 xixj)(2 yiyj)+i=1n(2 xi)(2 yi)+1
如果没有核函数,则需要把原样本点向量映射为:
x ′ = ( x 1 2 , . . . , x n 2 , . . . , 2 x 1 , . . . , 2 x n , 1 ) x' = (x_1^2, ..., x_n^2, ..., \sqrt 2x_1, ..., \sqrt 2x_n, 1) x=(x12,...,xn2,...,2 x1,...,2 xn,1)
再将其运用于内积计算,才能与多项式核函数达到相同的效果。

可见核函数的引入一方面减少了计算量,另一方面也减少了存储数据时的内存消耗。

常见核函数

常用的核函数有如下:

  • 线性核函数:
    k ( x i , x j ) = x i T x j k(x_i, x_j) = x_i^Tx_j k(xi,xj)=xiTxj

  • 多项式核函数:
    k ( x i , x j ) = ( x i T x j ) d k(x_i, x_j) = (x_i^Tx_j)^d k(xi,xj)=(xiTxj)d

  • 高斯核函数:
    k ( x i , x j ) = e − ∣ ∣ x i − x J ∣ ∣ 2 σ 2 k(x_i, x_j) = e^{-\frac{||x_i - x_J||}{2\sigma ^2}} k(xi,xj)=e2σ2∣∣xixJ∣∣

上述是三个常用的核函数,其中只有高斯核函数是需要调参的。

SVM 算法优缺点

优点

  • 有严格的数学理论支持,可解释性强,不依靠统计方法,从而简化了通常的分类和回归问题;
  • 能找出对任务至关重要的关键样本(即支持向量);
  • 采用核技巧之后,可以处理非线性分类/回归任务;
  • 最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。

缺点

  • 训练时间长。当采用 SMO 算法时,由于每次都需要挑选一对参数,因此时间复杂度为 O ( N 2 ) O(N^2) O(N2),其中 N N N 为训练样本的数量;

  • 当采用核技巧时,如果需要存储核矩阵,则空间复杂度为 O ( N 2 ) O(N^2) O(N2)

  • 模型预测时,预测时间与支持向量的个数成正比。当支持向量的数量较大时,预测计算复杂度较高。

因此支持向量机目前只适合小批量样本的任务,无法适应百万甚至上亿样本的任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/220663.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AR室内导航如何实现?技术与原理分析

随着科技的进步&#xff0c;我们生活中许多方面正在被重新定义。其中之一就是导航&#xff0c;尤其是室内导航。增强现实&#xff08;AR&#xff09;技术的出现为室内导航带来了革命性的变革。本文将深入探讨AR室内导航的技术与原理&#xff0c;以及它如何改变我们的生活方式。…

【组合数学】生成函数

目录 1.形式幂级数2.生成函数性质3.生成函数求解递推关系4.生成函数在计数问题中的应用 1.形式幂级数 生成函数是解决计数问题的一种有效方法&#xff0c;它的中心思想是&#xff1a;对于一个有限或无限数列 a 0 , a 1 , a 2 , . . . {a_0,a_1,a_2,...} a0​,a1​,a2​,...&am…

数据分析的基本步骤

了解过数据分析的概念之后&#xff0c;我们再来说下数据分析的常规步骤。 明确目标 首先我们要确定一个目标&#xff0c;即我们要从数据中得到什么。比如我们要看某个指标A随时间的变化趋势&#xff0c;以期进行简单的预测。 数据收集 当确定了目标之后&#xff0c;就有了取…

SQL Server 查询处理过程

查询处理--由 SQL Server 中的关系引擎执行&#xff0c;它获取编写的 T-SQL 语句并将其转换为可以向存储引擎发出请求并检索所需结果的过程。 SQL Server 需要四个步骤来处理查询&#xff1a;分析、代化、优化和执行。 前三个步骤都由关系引擎执行&#xff1b;第三步输出的是…

camera曝光时间

曝光和传感器读数 相机上的图像采集过程由两个不同的部分组成。第一部分是曝光。曝光完成后&#xff0c;第二步就是从传感器的寄存器中读取数据并传输&#xff08;readout&#xff09;。 曝光&#xff1a;曝光是图像传感器进行感光的一个过程&#xff0c;相机曝光时间&#xf…

深度学习中的潜在空间

1 潜在空间定义 Latent Space 潜在空间&#xff1a;Latent &#xff0c;这个词的语义是“隐藏”的意思。“Latent Space 潜在空间”也可以理解为“隐藏的空间”。Latent Space 这一概念是十分重要的&#xff0c;它在“深度学习”领域中处于核心地位&#xff0c;即它是用来学习…

和葡萄酒时为什么要写品酒笔记?

如果你不把你的想法写下来&#xff0c;它们可能会在你离开房间之前就离开你的大脑。写笔记&#xff0c;包括令人难忘的品酒笔记&#xff0c;它是关于记录一些超越今天和明天的有意义的事情。这是你的记忆葡萄酒&#xff0c;对你来说最相关、最有区别的就是最重要的。最后&#…

桌面概率长按键盘无法连续输入问题

问题描述&#xff1a;概率性长按键盘无法连续输入文本 问题定位&#xff1a; 系统按键流程分析 图一 系统按键流程 按键是由X Server接收的&#xff0c;这一点只要明白了X Window的工作机制就不难理解了。X Server在接收到按键后&#xff0c;会转发到相应程序的窗口中。在窗…

CogVLM与CogAgent:开源视觉语言模型的新里程碑

引言 随着机器学习的快速发展&#xff0c;视觉语言模型&#xff08;VLM&#xff09;的研究取得了显著的进步。今天&#xff0c;我们很高兴介绍两款强大的开源视觉语言模型&#xff1a;CogVLM和CogAgent。这两款模型在图像理解和多轮对话等领域表现出色&#xff0c;为人工智能的…

【算法日志】非排序数组的二分查找应用

文章目录 前言 二分查找是一种比较简单且基础的查找算法&#xff0c;多用于排序数组的快速查找。但其实二分查找也有非排序数组的应用。 引例 Leetcode162 寻找峰值 本题是一道经典的二分查找算法题&#xff0c;要求找到一个比左右相邻值大的峰值。如果用暴力解法&#xff0…

【网络安全】网络防护之旅 - Java安全机制探秘与数字证书引爆网络防线

&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《网络安全之道 | 数字征程》⏰墨香寄清辞&#xff1a;千里传信如电光&#xff0c;密码奥妙似仙方。 挑战黑暗剑拔弩张&#xff0c;网络战场誓守长。 目录 &#x1f608;1. 初识网络安…

JS的浅拷贝和深拷贝

首先理解什么是浅拷贝和深拷贝&#xff1a; 浅拷贝&#xff1a; 浅拷贝只会复制对象的第一层属性&#xff0c;而不会递归地复制嵌套的对象。浅拷贝仅复制对象的引用&#xff0c;新对象和原始对象仍然共享相同的引用&#xff0c;因此对新对象的修改可能会影响到原始对象。浅拷…

自动化测试 (五) 读写64位操作系统的注册表

自动化测试经常需要修改注册表 很多系统的设置&#xff08;比如&#xff1a;IE的设置&#xff09;都是存在注册表中。 桌面应用程序的设置也是存在注册表中。 所以做自动化测试的时候&#xff0c;经常需要去修改注册表 Windows注册表简介 注册表编辑器在 C:\Windows\regedit…

WebSocket开发

目录 前言 1.介绍 2.原理解析 3.简单的聊天室搭建 4.点到点消息传输 总结 前言 WebSocket 是互联网项目中画龙点睛的应用&#xff0c;可以用于消息推送、站内信、在线聊天等业务。 1.介绍 WebSocket 是一种基于 TCP 的新网络协议&#xff0c;它是一种持久化的协议&…

Java精品项目源码新基于协同过滤算法的旅游推荐系统(编号V69)

Java精品项目源码新基于协同过滤算法的旅游推荐系统(编号V69) 大家好&#xff0c;小辰今天给大家介绍一个基于协同过滤算法的旅游推荐系统

056:vue工具 --- CSS在线格式化

第056个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

Netty应用(七) ----MQTT编解码器

目录 0.前言1. MqttEncoder--编码器1.1 构造方法1.2 encodeConnectMessage -- 连接消息1.3 encodeConnAckMessage - 确认连接1.4 encodePublishMessage -- 发布消息1.5 encodeSubscribeMessage - 订阅主题1.6 encodeUnsubscribeMessage - 取消订阅1.7 encodeSubAckMessage - 订…

HarmonyOS应用开发实战—开箱即用的应用首页页面【ArkTS】【鸿蒙专栏-34】

一.HarmonyOS应用开发实战—开箱即用的应用首页页面【ArkTS】【鸿蒙专栏-34】 1.1 项目背景 HarmonyOS(鸿蒙操作系统)是华为公司推出的一种分布式操作系统。它被设计为一种全场景、全连接的操作系统,旨在实现在各种设备之间的无缝协同和共享,包括智能手机、平板电脑、智能…

计算机网络(四)

九、网络安全 &#xff08;一&#xff09;什么是网络安全&#xff1f; A、网络安全状况 分布式反射攻击逐渐成为拒绝攻击的重要形式 涉及重要行业和政府部门的高危漏洞事件增多。 基础应用和通用软硬件漏洞风险凸显&#xff08;“心脏出血”&#xff0c;“破壳”等&#x…

出国旅游需要注意些什么

出国旅游是一种令人兴奋、令人期待的经历。然而&#xff0c;在进行这种经历之前&#xff0c;有几件事情是需要注意的。本文将为您介绍出国旅游需要注意的一些重要事项。首先&#xff0c;为了确保您的出国旅行顺利进行&#xff0c;您应该提前办理好您的签证和护照。不同国家对于…