【一起啃书】《机器学习》第六章 支持向量机

news2024/11/28 12:36:04

文章目录

      • 第六章 支持向量机
        • 6.1 间隔和支持向量
        • 6.2 对偶问题
        • 6.3 核函数
        • 6.4 软间隔与正则化
        • 6.5 支持向量回归
        • 6.6 核方法
        • 6.7 一些问题

第六章 支持向量机

6.1 间隔和支持向量

  给定训练样本集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } , y i ∈ { − 1 , + 1 } D = \{ ({x_1},{y_1}),({x_2},{y_2}),...,({x_m},{y_m})\} ,{y_i} \in \{ - 1, + 1\} D={(x1,y1),(x2,y2),...,(xm,ym)},yi{1,+1},分类学习最基本的想法就是基于训练集 D D D在样本空间中找到一个划分超平面,将不同类别的样本分开,但能将训练样本分开的划分超平面可能有很多,如下所示:

  直观上看,应该去找位于两类训练样本“正中间”的划分超平面,该超平面对训练样本局部扰动的“容忍”性最好,也就是该划分超平面所产生的分类结果是最鲁棒的,对未见示例的泛化能力最强。划分超平面的线性方程如下所示:
ω T x + b = 0 {{{\omega }}^T}x + b = 0 ωTx+b=0
  其中 ω = ( ω 1 ; ω 2 ; . . . ; ω d ) \omega = (\omega_1;\omega_2;...;\omega_d) ω=(ω1;ω2;...;ωd)为法向量,决定了超平面的方向; b b b为位移项,决定了超平面与原点之间的距离,下面定义样本空间中任意点 x x x到超平面 ( ω , b ) (\omega,b) (ω,b)的距离,如下所示:
r = ∣ ω T x + b ∣ ∥ ω ∥ r = \frac{{\left| {{\omega ^T}x + b} \right|}}{{\left\| \omega \right\|}} r=ω ωTx+b
  假设超平面 ( ω , b ) (\omega,b) (ω,b)能将训练样本正确分类,有如下定义:
{ ω T x i + b ⩾ + 1 , y i = + 1 ω T x i + b ⩽ − 1 , y i = − 1 \left\{ \begin{aligned} {{\omega ^T}{x_i} + b \geqslant + 1,{y_i} = + 1} \\ {{\omega ^T}{x_i} + b \leqslant - 1,{y_i} = - 1} \\ \end{aligned} \right. {ωTxi+b+1,yi=+1ωTxi+b1,yi=1
  如下图所示,距离超平面最近的这几个训练样本点使上式的等号成立,这些点被称为“支持向量”,两个异类支持向量到超平面的距离之和为 γ = 2 ∥ ω ∥ \gamma = \frac{2}{{\left\| \omega \right\|}} γ=ω2,也被称为“间隔”。

  欲找到具有“最大间隔”的划分超平面,需要找到满足约束条件的参数 ω \omega ω b b b,使得 γ \gamma γ最大,即
max ⁡ ω , b    2 ∥ ω ∥ s . t .     y i ( ω T x i + b ) ⩾ 1 , i = 1 , 2 , . . . , m \begin{aligned} &\mathop {\max }\limits_{\omega ,b}\ \ \frac{2}{{\left\| \omega \right\|}}\\ &s.t.\ \ \ {y_i}({\omega ^T}{x_i} + b) \geqslant 1,i = 1,2,...,m \end{aligned} ω,bmax  ω2s.t.   yi(ωTxi+b)1,i=1,2,...,m
  最大化 ∥ ω ∥ − 1 {\left\| \omega \right\|^{ - 1}} ω1,等价于最小化 ∥ ω ∥ 2 {\left\| \omega \right\|^2} ω2,于是得到如下表达,这也是支持向量机的基本型。
min ⁡ ω , b    1 2 ∥ ω ∥ 2 s . t .     y i ( ω T x i + b ) ⩾ 1 , i = 1 , 2 , . . . , m \begin{aligned} & \mathop {\min }\limits_{\omega ,b}\ \ \frac{1}{2}{\left\| \omega \right\|^2} \\ & s.t.\ \ \ {y_i}({\omega ^T}{x_i} + b) \geqslant 1,i = 1,2,...,m \end{aligned} ω,bmin  21ω2s.t.   yi(ωTxi+b)1,i=1,2,...,m
  虽然间隔看着貌似只与 ω \omega ω有关,但实际上 b b b通过约束隐式地影响着 ω \omega ω的取值,因为这些支持向量是使得等号成立的样本点,所以如果 b b b发生变化,那么 ω \omega ω也会发生变化。

6.2 对偶问题

  SVM基本型的对偶问题是将原始问题的最小化目标函数转换为最大化拉格朗日函数,利用拉格朗日对偶性,求解出拉格朗日乘子,从而得到超平面的参数。首先对原来的约束条件添加拉格朗日乘子 α i ⩾ 0 {\alpha _i} \geqslant 0 αi0,得到如下的拉格朗日函数:
L ( ω , b , α ) = 1 2 ∥ ω ∥ 2 + ∑ i = 1 m α i ( 1 − y i ( ω T x i + b ) ) L(\omega ,b,\alpha ) = \frac{1}{2}{\left\| \omega \right\|^2} + \sum\limits_{i = 1}^m {{\alpha _i}(1 - {y_i}({\omega ^T}{x_i} + b))} L(ω,b,α)=21ω2+i=1mαi(1yi(ωTxi+b))
  下面分别对 ω \omega ω b b b求偏导,得到如下结果:
ω = ∑ i = 1 m α i y i x i     ,      0 = ∑ i = 1 m α i y i \omega = \sum\limits_{i = 1}^m {{\alpha _i}{y_i}{x_i}\ \ \ ,}\ \ \ \ 0 = \sum\limits_{i = 1}^m {{\alpha _i}{y_i}} ω=i=1mαiyixi   ,    0=i=1mαiyi
  将上面求偏导的结果再带入到原来的拉格朗日函数中,就可以得到SVM基本型的对偶问题,如下所示:
max ⁡ α     ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j s . t .      ∑ i = 1 m α i y i = 0 \begin{aligned} & \mathop {\max }\limits_\alpha \ \ \ \sum\limits_{i = 1}^m {{\alpha _i}} - \frac{1}{2}\sum\limits_{i = 1}^m {\sum\limits_{j = 1}^m {{\alpha _i}{\alpha _j}{y_i}{y_j}x_i^T{x_j}} } \\ & s.t.\ \ \ \ \sum\limits_{i = 1}^m {{\alpha _i}{y_i} = 0} \end{aligned} αmax   i=1mαi21i=1mj=1mαiαjyiyjxiTxjs.t.    i=1mαiyi=0
  上述问题是一个二次规划问题,但该问题的规模正比于训练样本数,会在实际任务中造成很大的开销,为了避开这个障碍,在这里引入了SMO算法来解决这个问题,SMO算法需要注意以下几点:

  • SMO算法的基本思想是每次选择两个拉格朗日乘子( α i \alpha_i αi α j \alpha_j αj)作为优化变量,固定其他的乘子,将原问题简化进行求解。
  • SMO算法的关键是如何选择合适的 α i \alpha_i αi α j \alpha_j αj,以及如何更新它们的值,一般来说,选择违反KKT条件最严重的 α i \alpha_i αi 作为第一个变量,然后在约束条件下选择第二个变量 α j \alpha_j αj,使得目标函数有足够大的变化。
  • SMO算法的终止条件是所有的拉格朗日乘子都满足KKT条件,或者达到最大迭代次数。
  • SMO算法的优点是可以高效地求解SVM对偶问题,避免了矩阵运算和存储,只需要利用核函数计算样本之间的内积,而缺点是需要调整一些启发式的参数,如容错率和最大迭代次数,以及核函数的选择。

6.3 核函数

  在现实任务中,原始样本空间内也许并不存在一个能正确划分两类样本的超平面,如下左图所示,对这样的问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分,如下右图所示。

  令 ϕ ( x ) \phi (x) ϕ(x)表示将 x x x映射后的特征向量,于是,在特征空间中划分超平面所对应的模型可表示为
f ( x ) = ω T ϕ ( x ) + b f(x) = {\omega ^T}\phi (x) + b f(x)=ωTϕ(x)+b
  以下为其基本型
min ⁡ ω , b    1 2 ∥ ω ∥ 2 s . t .     y i ( ω T ϕ ( x i ) + b ) ⩾ 1 , i = 1 , 2 , . . . , m \begin{aligned} & \mathop {\min }\limits_{\omega ,b}\ \ \frac{1}{2}{\left\| \omega \right\|^2} \\ & s.t.\ \ \ {y_i}({\omega ^T}{\phi(x_i)} + b) \geqslant 1,i = 1,2,...,m \end{aligned} ω,bmin  21ω2s.t.   yi(ωTϕ(xi)+b)1,i=1,2,...,m
  以下为对应的对偶问题
max ⁡ α     ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ϕ ( x i ) T ϕ ( x j ) s . t .      ∑ i = 1 m α i y i = 0 \begin{aligned} & \mathop {\max }\limits_\alpha \ \ \ \sum\limits_{i = 1}^m {{\alpha _i}} - \frac{1}{2}\sum\limits_{i = 1}^m {\sum\limits_{j = 1}^m {{\alpha _i}{\alpha _j}{y_i}{y_j}\phi(x_i)^T{\phi(x_j)}} } \\ & s.t.\ \ \ \ \sum\limits_{i = 1}^m {{\alpha _i}{y_i} = 0} \end{aligned} αmax   i=1mαi21i=1mj=1mαiαjyiyjϕ(xi)Tϕ(xj)s.t.    i=1mαiyi=0
  求解上述式子涉及到 ϕ ( x i ) T ϕ ( x j ) \phi(x_i)^T\phi(x_j) ϕ(xi)Tϕ(xj),这是样本 x i x_i xi x j x_j xj映射到特征空间之后的内积。由于特征空间维数可能很高,甚至可能是无穷维,因此直接计算 ϕ ( x i ) T ϕ ( x j ) \phi(x_i)^T\phi(x_j) ϕ(xi)Tϕ(xj)通常是困难的。为了避开这个障碍,可以设想这样一个函数:
κ ( x i , x j ) ⩽ ϕ ( x i ) , ϕ ( x j ) ⩾ ϕ ( x i ) T ϕ ( x j ) \kappa ({x_i},{x_j}) \leqslant \phi ({x_i}),\phi ({x_j}) \geqslant \phi {({x_i})^T}\phi ({x_j}) κ(xi,xj)ϕ(xi),ϕ(xj)ϕ(xi)Tϕ(xj)
  即 x i x_i xi x j x_j xj在特征空间的内积等于它们在原始样本空间中通过函数 κ ( ⋅ , ⋅ ) \kappa ( \cdot , \cdot ) κ(,)计算的结果,于是可以得到如下式子:
max ⁡ α     ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j κ ( x i , x j ) s . t .      ∑ i = 1 m α i y i = 0 \begin{aligned} & \mathop {\max }\limits_\alpha \ \ \ \sum\limits_{i = 1}^m {{\alpha _i}} - \frac{1}{2}\sum\limits_{i = 1}^m {\sum\limits_{j = 1}^m {{\alpha _i}{\alpha _j}{y_i}{y_j}\kappa ({x_i},{x_j})} } \\ & s.t.\ \ \ \ \sum\limits_{i = 1}^m {{\alpha _i}{y_i} = 0} \end{aligned} αmax   i=1mαi21i=1mj=1mαiαjyiyjκ(xi,xj)s.t.    i=1mαiyi=0
  求解后即可得到 f ( x ) = ∑ i = 1 m α i y i κ ( x i , x j ) + b f(x) = \sum\limits_{i = 1}^m {{\alpha _i}{y_i}\kappa ({x_i},{x_j}) + b} f(x)=i=1mαiyiκ(xi,xj)+b,这里的 κ ( x i , x j ) \kappa ({x_i},{x_j}) κ(xi,xj)被称为“核函数”,这一展开式也被称为“支持向量展开”。下面为判断核函数的一个定理。

  以下为常见的核函数。

  对于核函数的选择,可以参考以下规则:

  • 如果数据是线性可分的,或者特征的数量很大,接近于样本的数量,可以选择线性核函数,因为线性核函数参数少,速度快,而且可以得到很好的效果。
  • 如果数据是非线性的,或者特征的数量比较小,而样本的数量一般,可以选择高斯核函数(也叫RBF核函数),因为高斯核函数可以将数据映射到一个无限维的特征空间,具有很强的拟合能力。不过高斯核函数的分类结果非常依赖于参数的选择,需要通过交叉验证等方法来寻找合适的参数。
  • 如果数据是非线性的,而且有明显的结构特征,例如图像、文本等,可以选择与数据结构相匹配的核函数,例如多项式核函数、字符串核函数、图核函数等。这些核函数可以利用数据的先验知识,提取更有效的特征,提高分类或回归的准确性。

6.4 软间隔与正则化

  在现实任务中往往很难确定合适的核函数使得训练样本在特征空间中线性可分,即便恰好找到了某个核函数使训练集在特征空间中线性可分,也很难断定这个貌似线性可分的结果不是由于过拟合所造成的,缓解这个问题的一个办法是允许支持向量机在一些样本上出错,如下为软间隔示例图,红色圈出了一些不满足约束的样本。

  若要求所有样本都必须划分正确,这称为“硬间隔”,而软间隔则是允许某些样本不满足约束 y i ( ω T x i + b ) ⩾ 1 {y_i}({\omega ^T}{x_i} + b) \geqslant 1 yi(ωTxi+b)1,而在最大化间隔的同时,不满足约束的样本应尽可能少,于是就有了如下优化目标:
min ⁡ ω , b 1 2 ∥ ω ∥ 2 + C ∑ i = 1 m ℓ 0 / 1 ( y i ( ω T x i + b ) − 1 ) \mathop {\min }\limits_{\omega ,b} \frac{1}{2}{\left\| \omega \right\|^2} + C\sum\limits_{i = 1}^m {{\ell _{0/1}}({y_i}({\omega ^T}{x_i} + b) - 1)} ω,bmin21ω2+Ci=1m0/1(yi(ωTxi+b)1)
  其中类似 ℓ 0 / 1 \ell _{0/1} 0/1的函数被称为“替代损失”,常见的替代函数以及它们的图像如下所示:

  下面引入松弛变量 ξ i ⩾ 0 {\xi _i} \geqslant 0 ξi0,即可得到如下的软间隔支持向量机:
min ⁡ ω , b , ξ     1 2 ∥ ω ∥ 2 + C ∑ i = 1 m ξ i s . t .      y i ( ω T x i + b ) ⩾ 1 − ξ i \begin{aligned} & \mathop {\min }\limits_{\omega ,b,\xi }\ \ \ \frac{1}{2}{\left\| \omega \right\|^2} + C\sum\limits_{i = 1}^m {{\xi _i}} \\ & s.t.\ \ \ \ {y_i}({\omega ^T}{x_i} + b) \geqslant 1 - {\xi _i} \end{aligned} ω,b,ξmin   21ω2+Ci=1mξis.t.    yi(ωTxi+b)1ξi
  松弛变量 ξ i \xi _i ξi表示第 i i i个样本违反约束条件的程度, C C C是一个正的常数,表示对松弛变量的惩罚系数。可以看到,当 C C C很大时,相当于对松弛变量的惩罚很大,要求所有样本都满足约束条件,这就退化为硬间隔的情况;当 C C C很小时,相当于对松弛变量的惩罚很小,允许一些样本不满足约束条件,这就增加了模型的泛化能力。因此, C C C的大小决定了svm对分类错误的容忍程度和模型的复杂度。

  而这里需要注意, C C C比较大会增加松弛变量的值,是因为要最小化整个目标函数,而不是只最小化间隔。目标函数由两部分组成,一部分是 1 2 ∥ ω ∥ 2 \frac{1}{2}{\left\| \omega \right\|^2} 21ω2,表示间隔的倒数;另一部分是 C ∑ i = 1 n ξ i C \sum_{i=1}^n \xi_i Ci=1nξi,表示对松弛变量的惩罚。当 C C C比较大时,表示对松弛变量的惩罚比较大,也就是要求所有样本都满足约束条件,即 y i ( ω T x i + b ) ≥ 1 − ξ i y_i({\omega ^T}{x_i} + b) \geq 1 - \xi_i yi(ωTxi+b)1ξi。这样的话,如果有一些样本本来不满足约束条件,那么就要增加它们的松弛变量的值,让它们满足约束条件。这样做的好处是可以减少分类错误,提高模型在训练集上的准确率。但是,这样做的坏处是可能导致过拟合,降低模型在测试集上的泛化能力。

  同时这里的 C C C也是正则化尝试,正则化可以理解为一种“罚函数法”,即对不希望得到的结果施以惩罚,从而使得优化过程趋向于希望目标,从贝叶斯估计的角度来看,正则化项可认为是提供了模型的先验概率。

6.5 支持向量回归

  对于样本 ( x , y ) (x,y) (x,y),传统回归模型通常直接基于模型输出 f ( x ) f(x) f(x)与真实输出 y y y之间的差别来计算损失,当且仅当 f ( x ) f(x) f(x) y y y完全相同时,损失才为零。与此不同,支持向量回归假设我们能容忍 f ( x ) f(x) f(x) y y y之间最多有 ε \varepsilon ε的偏差,即仅当 f ( x ) f(x) f(x) y y y之间的差别绝对值大于 ε \varepsilon ε时才计算损失,如下图所示,相当于以 f ( x ) f(x) f(x)为中心,构建了一个宽度为 2 ε 2\varepsilon 2ε的间隔带,若训练样本落入此间隔带,则认为是被预测正确的。

  引入松弛变量,得到如下优化问题,这里引入两个松弛变量是因为间隔带两侧的松弛程度可以不同。
min ⁡ ω , b , ξ , ξ ∗     1 2 ∥ ω ∥ 2 + C ∑ i = 1 m ξ i + ξ ∗ i s . t .       f ( x i ) − y i ⩽ ε + ξ i ,              y i − f ( x i ) ⩽ ε + ξ i ∗ ,              ξ i ⩾ 0 , ξ i ∗ ⩾ 0 \begin{aligned} & \mathop {\min }\limits_{\omega ,b,\xi ,\mathop \xi \limits^* }\ \ \ \frac{1}{2}{\left\| \omega \right\|^2} + C\sum\limits_{i = 1}^m {{\xi _i} + {{\mathop \xi \limits^* }_i}} \\ & s.t.\ \ \ \ \ f({x_i}) - {y_i} \leqslant \varepsilon + {\xi _i}, \\ & \ \ \ \ \ \ \ \ \ \ \ \ {y_i} - f({x_i}) \leqslant \varepsilon + {\mathop \xi \limits^* _i}, \\ & \ \ \ \ \ \ \ \ \ \ \ \ {\xi _i} \geqslant 0,{\mathop \xi \limits^* _i} \geqslant 0 \end{aligned} ω,b,ξ,ξmin   21ω2+Ci=1mξi+ξis.t.     f(xi)yiε+ξi,            yif(xi)ε+iξ,            ξi0,iξ0
  同样的,需要引入拉格朗日乘子进行优化求解,最后得到对偶问题,同时也可以引入核函数。

6.6 核方法

  给定训练样本 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } \{ ({x_1},{y_1}),({x_2},{y_2}),...,({x_m},{y_m})\} {(x1,y1),(x2,y2),...,(xm,ym)},若不考虑偏移项 b b b,则无论SVM还是SVR,学得的模型总能表示成核函数 κ ( x , x i ) \kappa ({\bf{x}},{x_i}) κ(x,xi)的线性组合,同时可以得到如下被称为“表示定理”的更一般的结论。

  表示定理 H \mathbb{H} H为核函数 κ \kappa κ对应的再生核希尔伯特空间, ∥ h ∥ H \left\| h \right\|_\mathbb{H} hH表示 H \mathbb{H} H空间中关于 h h h的范数,对于任意单调递增函数 Ω : [ 0 , ∞ ] ↦ R \Omega :[0,\infty ] \mapsto {\R} Ω:[0,]R和任意非负损失函数 ℓ : R m ↦ [ 0 , ∞ ] \ell :{{\R}^m} \mapsto [0,\infty ] :Rm[0,],优化问题
min ⁡ h ∈ H F ( h ) = Ω ( ∥ h ∥ H ) + ℓ ( h ( x 1 ) , h ( x 2 ) , . . . , h ( x m ) ) \mathop {\min }\limits_{h \in \mathbb{H}} F(h) = \Omega ({\left\| h \right\|_\mathbb{H}}) + \ell (h({x_1}),h({x_2}),...,h({x_m})) hHminF(h)=Ω(hH)+(h(x1),h(x2),...,h(xm))
  的解总可写为
h ∗ ( x ) = ∑ i = 1 m α i κ ( x , x i ) {h^*}(x) = \sum\limits_{i = 1}^m {{\alpha _i}\kappa ({\bf{x}},{x_i})} h(x)=i=1mαiκ(x,xi)
  表示定理对损失函数没有限制,对正则化项 Ω \Omega Ω仅要求单调递增,甚至不要求 Ω \Omega Ω是凸函数,意味着对于一般的损失函数和正则化项,上述优化问题的最优解都可以表示为核函数的线性组合。

  因此人们发展出一系列基于核函数的学习方法,统称为“核函数”。最常见的是通过“核化”(即引入核方法)来将线性学习器拓展为非线性学习器,比如SVM、PCA、LDA、聚类等等都可以引入核方法。

6.7 一些问题

(1)SVM、BP神经网络和C4.5决策树的异同?

  • SVM是一种基于核函数和凸优化的算法,它的目标是在特征空间中寻找一个最大间隔超平面来分割两个类别。SVM的优点是能够处理非线性可分问题,泛化能力强,不容易过拟合。SVM的缺点是计算复杂度高,对参数和核函数的选择敏感,难以解释。

  • BP神经网络是一种多层人工神经网络,它的目标是通过反向传播算法来调整网络权重,使得网络输出和期望输出之间的误差最小。BP神经网络的优点是结构灵活,能够拟合复杂的非线性函数,适用于语音、图像、自然语言等领域。BP神经网络的缺点是训练速度慢,容易陷入局部最优解,需要大量数据进行训练。

  • 决策树是一种基于信息论和递归划分的算法,它的目标是构建一棵树状结构,每个内部节点表示一个特征判断,每个叶子节点表示一个类别或回归值。决策树的优点是易于理解和解释,非参数型,适合处理离散特征。决策树的缺点是容易过拟合,对噪声数据敏感,可能不稳定。

(2)线性判别分析与线性核SVM在什么条件下等价?

  • 数据集是线性可分的,即存在一个超平面可以完美地分割两个类别;
  • 数据集服从高斯分布,即每个类别的数据都符合一个多元正态分布;
  • 数据集的协方差矩阵相同,即每个类别的数据都有相同的方差和相关性。

  如果数据集是线性可分的,那么LDA和线性核SVM都可以找到一个超平面来完美地分割两个类别,但这个超平面不一定是唯一的。其次,如果数据集服从高斯分布,那么LDA可以通过最大化两个类别均值之差来得到一个最优的投影方向,而线性核SVM可以通过最大化两个类别支持向量之间的距离来得到一个最优的分类器。最后,如果数据集的协方差矩阵相同,那么LDA和线性核SVM的目标函数都可以化简为两个类别均值之差的函数,从而得到相同的超平面。

(3)高斯核SVM与RBF神经网络之间的联系?

  高斯核SVM与RBF神经网络都使用了高斯核函数作为非线性映射的工具,将低维空间中的数据映射到高维空间中,从而实现线性可分或近似线性可分,当RBF神经网络的隐层神经元数设置为训练样本数,且每个训练样本对应一个神经元中心时,RBF神经网络与高斯核SVM的预测函数是相同的。

(4)SVM对噪声敏感的原因?

  SVM的目的是求出与支持向量有最大距离的超平面,以每个样本为圆心,该距离为半径作圆,可以近似认为圆内所有的点都与该样本属于相同分类,若圆内出现了噪声,那么该噪声所造成的错误分类也将最大化,因此SVM对噪声是敏感的。为了克服SVM对噪声敏感的问题,可以引入松弛变量和惩罚因子,构造软间隔分类器,允许一些样本不满足硬间隔约束条件,从而避免过拟合和模型过于复杂。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【YOLO系列】--YOLOv4超详细解读/总结

YOLOv4(YOLOv4: Optimal Speed and Accuracy of Object Detection)(原文+解读/总结+翻译) 系列文章: YOLOv1论文解读/总结_yolo论文原文_耿鬼喝椰汁的博客-CSDN博客 YOLOv2论文解读/总结_耿鬼…

[免疫学]抗原递呈详解

目录 🧫1. 抗原递呈是什么 🧫1.1 MHCⅠ类分子 🧫1.2 MHCⅡ类分子 🧫1.3 MHCⅠ类分子 分子介导的抗原递呈 🧫1.4 MHCⅡ类分子 分子介导的抗原递呈 🧫1.5 抗原递呈细胞 🧫1.5.1 激活的树突状…

初识Linux篇:第三篇

初识Linux篇:第三篇 初识Linux篇:第三篇1.Linux中常见的通配符1.1*号通配符1.2 ?通配符1.3[ ]通配符1.4{ }通配符 2.man指令3.cp指令4.mv指令5.alias指令6. echo指令7.cat指令8.more指令9.less指令10.head与tail指令11.在Linux中写代码 总结 …

DHCP中继负载均衡使用原理

DHCP常用四种报文 基于UDP67服务端, 68端口客户端 discover 广播 offer 单播 rquest 广播 ack 单播 DHCP 50%时间续租时request报文为单播报文 DHCP 87.5%时间请求重新绑定IP时request报文为广播报文 DHCP的另类配置方案: 负载均衡: ip re…

【Python_Pandas】reset_index() 函数解析

【Python_Pandas】reset_index函数解析 文章目录 【Python_Pandas】reset_index函数解析1. 介绍2. 示例2.1 参数drop2.2 参数inplace2.3 参数level2.4 参数col_level2.5 参数col_fill 参考 1. 介绍 pandas.DataFrame.reset_index reset_index(levelNone, dropFalse, inplaceF…

【AI大模型智慧办公】用《文心一言》1分钟写一篇博客简直yyds

文章目录 前言文心一言是什么文心一言可以做什么文心一言写博客申请体验写在最后 前言 当今社会,博客已成为了许多人分享观点、知识和经验的重要平台。用文心一言写博客是将自己的思考、想法和经验以文字的形式呈现出来,让更多人了解自己。通过写博客&a…

【Python入门】Python循环语句(while循环的基础语法)

前言 📕作者简介:热爱跑步的恒川,致力于C/C、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于Python零基础入门系列,本专栏主要内容为Python基础语法、判断、循环语句、函…

【计网】第三章 数据链路层(4)局域网、以太网、无线局域网、VLAN

文章目录 3.6-1 局域网基本概念和体系结构一、局域网二、局域网基本概念和体系结构三、局域网传输介质四、局域网介质控制方法五、局域网分类六、IEEE 802 标准七、MAC 子层和 LLC 子层总结: 3.6-2 以太网一、以太网概述二、以太网提供无连接、不可靠的服务三、以太…

RabbitMQ启动失败

首先,你得先确认的你得Erlang的版本和RabbitMQ的版本是否能相互兼容,如果不能,请先下载对应的Erlang版本或者RabbitMQ版本。 1. 在Java中使用了RabbitMQ发现不停的尝试连接,却连不上的问题 先在cmd下输入erl,看一下E…

EXCEL比较麻烦零碎的日期数据的处理,数字转日期,日期转数字

1 有时候想输入日期,但会被EXCEL自动识别为数字 原因是 有的EXCEL版本会处理,有的则不会自动处理为日期。也可能,单元格因为各种原因被提前设置了格式,比如常规等。还有的原因是因为EXCEL从xml等其他文件里导入的日期时间等数据本…

大数据Doris(二十):Doris的Bitmap索引介绍

文章目录 Doris的Bitmap索引介绍 一、Bitmap位图索引原理 二、Bitmap位图索引语法 三、注意事项 Doris的Bitmap索引介绍 一、Bitmap位图索引原理 bitmap,位图,是一种数据结构,即bit的集合,每一个bit记录0或者1,代…

EPLAN2022 3D宏文件创建

我们经常使用导入3D模型文件创建宏文件。但有时候导入的3D文件缺少了一些细节或者变形,因此在导入3D文件之前,需要设置一下细节清晰度。 1. 设置导入3D图的清晰度 选择菜单栏中的【文件】➡【设置】 选择设置的项目【新项目(4)】…

【Linux内核解析-linux-5.14.10-内核源码注释】信号量semaphore机制

信号量实现方法 信号量机制是一种用于控制并发访问的同步机制,常用于多进程或多线程之间的协调。在Linux内核中,信号量机制是通过struct semaphore结构体来实现的。 每个semaphore结构体包含一个计数器和一个等待队列,它们用于跟踪当前可用…

【Promptulate】一个强大的LLM Prompt Layer框架,构建更强悍的GPT应用

本文节选自笔者博客: https://www.blog.zeeland.cn/archives/promptulate666 项目地址:https://github.com/Undertone0809/promptulate 💖 作者简介:大家好,我是Zeeland,全栈领域优质创作者。📝…

2023.5.14 第五十三次周报

目录 前言 文献阅读:基于BO-EMD-LSTM模型预测教室长期二氧化碳浓度 背景 思路 BO-EMD-LSTM 混合模型 EMD 算法 与其他模型的比较 结论 论文代码 总结 前言 This week, I studied an article that uses LSTM to predict gas concentration.This study wa…

Netty中NioEventLoopGroup介绍

一、Netty基本介绍 Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。Netty 在保证易于开发的同时还保证了其应用的性能,稳定性和伸缩性。 Netty 是一…

cpuinfo库: 使用Python生成C++接口

文章目录 1. 目的2. 设计3. 生成器: Python 代码4. 结果: C++ 代码1. 目的 背景: cpuinfo 库提供了 CPU 信息的查询, 涵盖了 x86 和 arm 等常见的指令集架构, 可以提供自行实现的 CPU 基础功能函数的正确性验证。自行实现 CPU 基础功能则是为了简化功能、同时提供原汁原味…

详细介绍如何将博客图片从github/gitee批量转移到阿里云图床

背景介绍 我为什么想把博客文章中存储在github种的图片转移到阿里云呢? 存储在github中的图片有时会不稳定,破坏写文章过程中的思路和心流体验。写着写着就发现图片上传又出现问题了,很影响心情,阿里云是付费图床,在国…

【更新中】苹果自家的as汇编器的特色风格(与wasm的不同)

as汇编器是苹果的汇编器,Xcode 生成的代码也是as风格的,而as风格与大部分人在大学里所学的微软的masm风格大相径庭,所以本文会列出二者的不同。不过由于细节太多,没法一次性写出所有的不同,所以会持续更新。 你可能会…

linux常用系统工作命令

前言: 最近又重新抓起linux开始学习起来了,以前干过一段时间的菜鸟运维,对linux操作系统有点浅显的认识,中间又因为工作关系渐渐的又接触不到了,最近的博文算是回忆也当作笔记用,重新开始学习linux系统。 …