机器学习:深入解析SVM的核心概念【四、软间隔与正则化】

news2024/10/6 22:22:20

软间隔与正则化

    • 问题一:优化目标函数是如何得到的?得到的过程是怎样的?
    • 问题二:拉格朗日乘子法计算详细过程
    • 问题三:KKT条件求解过程
    • 问题四:结构风险最小化(SRM)的原理

在前面的讨论中,我们一直假定训练样本在样本空间或特征空间中是线性可分的,即存在一个超平面能将不同类的样本完全划分开.然而,在现实任务中往往 很难确定合适的核函数 使得训练样本在特征空间中线性可分;

退一步说,即便恰好找到了某个核函数使训练集在特征空间中线性可分,也很难断定这个貌似线性可分的结果不是由于过拟合所造成的.

问题一:优化目标函数是如何得到的?得到的过程是怎样的?

在这里插入图片描述

软间隔SVM是对传统的硬间隔SVM的扩展,它允许某些数据点违反最初的分类边界。这样做的目的是提高模型对噪声和异常值的鲁棒性,从而获得更好的泛化能力。在这个设置中,优化目标函数的推导过程是这样的:

  1. 软间隔引入:为了应对现实世界数据中的噪声和不完全线性可分的情况,引入软间隔的概念。在硬间隔SVM中,所有数据点都严格满足 y i ( w T x i + b ) ≥ 1 y_i (w^T x_i + b) \geq 1 yi(wTxi+b)1 的约束。在软间隔SVM中,我们允许某些点不满足这个条件,引入松弛变量 ξ i \xi_i ξi 来衡量每个数据点违背间隔的程度。

  2. 优化目标函数:考虑到间隔违规和模型的复杂度,我们希望最小化一个包含正则化项(控制模型复杂度)和损失项(衡量间隔违规)的目标函数。因此,目标函数变为最小化 1 2 ∥ w ∥ 2 \frac{1}{2} \|w\|^2 21w2(正则化项)加上 C ∑ ξ i C \sum \xi_i Cξi(损失项),其中 C C C 是一个正的正则化参数,用于平衡两者之间的重要性。

  3. 调整约束:每个数据点的原始约束 y i ( w T x i + b ) ≥ 1 y_i (w^T x_i + b) \geq 1 yi(wTxi+b)1 被调整为 y i ( w T x i + b ) ≥ 1 − ξ i y_i (w^T x_i + b) \geq 1 - \xi_i yi(wTxi+b)1ξi,同时确保松弛变量 ξ i \xi_i ξi 是非负的。

  4. 替代损失函数:松弛变量 ξ i \xi_i ξi 对应于 ℓ 0 / 1 \ell_0/1 0/1 损失函数的替代。在优化过程中,由于 ℓ 0 / 1 \ell_0/1 0/1 损失函数不是 连续的不易优化,通常会采用其他连续可微的损失函数,如 hinge 损失函数对数 损失函数

  • hinge 损失: l hinge ( z ) = max ⁡ ( 0 , 1 − z ) l_{\text{hinge}}(z) = \max(0, 1 - z) lhinge(z)=max(0,1z);
  • 指数损失(exponential loss): l exp ( z ) = exp ⁡ ( − z ) l_{\text{exp}}(z) = \exp(-z) lexp(z)=exp(z);
  • 对数损失(logistic loss): l log ( z ) = log ⁡ ( 1 + exp ⁡ ( − z ) ) l_{\text{log}}(z) = \log(1 + \exp(-z)) llog(z)=log(1+exp(z)).

三种常见替代损失函数
5. 最终优化问题:考虑到以上的点,我们的最终优化问题形式化为:
minimize w , b , ξ 1 2 ∥ w ∥ 2 + C ∑ i = 1 m ξ i \text{minimize}_{w,b,\xi} \quad \frac{1}{2} \|w\|^2 + C \sum_{i=1}^{m} \xi_i minimizew,b,ξ21w2+Ci=1mξi
subject to y i ( w T x i + b ) ≥ 1 − ξ i , ξ i ≥ 0 , i = 1 , … , m . \text{subject to} \quad y_i(w^T x_i + b) \geq 1 - \xi_i, \quad \xi_i \geq 0, \quad i=1, \ldots, m. subject toyi(wTxi+b)1ξi,ξi0,i=1,,m.

在这个过程中,软间隔的引入以及对目标函数的修改都是为了使模型更适应实际数据集的复杂性。正则化参数 C C C 的选择变得至关重要,因为它直接影响模型对数据中噪声的容忍程度和防止过拟合的能力。通过合理设置 C C C,模型可以在保持足够间隔的同时,允许某些数据点的违规,从而在保持模型泛化能力的前提下,最小化总体损失。

问题二:拉格朗日乘子法计算详细过程

  1. 定义问题和约束

    • 原始的SVM问题是最大化间隔,等价于最小化 1 2 ∥ w ∥ 2 \frac{1}{2}\|w\|^2 21w2
    • 我们要求每个数据点至少有一个距离超平面的函数间隔1。在软间隔SVM中,我们允许函数间隔小于1,但这种违规要受到惩罚。
    • 引入松弛变量 ξ i \xi_i ξi 来度量第 ( i ) 个数据点的间隔违规程度。
  2. 引入拉格朗日乘子

    • 对每个数据点 ( i ),我们有两个约束:函数间隔 y i ( w T x i + b ) ≥ 1 − ξ i y_i(w^T x_i + b) \geq 1 - \xi_i yi(wTxi+b)1ξi 和松弛变量 ξ i ≥ 0 \xi_i \geq 0 ξi0
    • 为这两个约束引入两组拉格朗日乘子 α i \alpha_i αi μ i \mu_i μi,它们必须满足 α i ≥ 0 \alpha_i \geq 0 αi0 μ i ≥ 0 \mu_i \geq 0 μi0
  3. 构建拉格朗日函数

    • 对于每个数据点 ( i ),对应的拉格朗日函数部分是 α i ( 1 − ξ i − y i ( w T x i + b ) ) \alpha_i (1 - \xi_i - y_i(w^T x_i + b)) αi(1ξiyi(wTxi+b)) μ i ξ i \mu_i \xi_i μiξi
    • 所有数据点的拉格朗日函数相加,我们得到总拉格朗日函数
    • L ( w , b , α , ξ , μ ) = 1 2 ∥ w ∥ 2 + C ∑ i = 1 m ξ i + ∑ i = 1 m α i ( 1 − ξ i − y i ( w T x i + b ) ) − ∑ i = 1 m μ i ξ i L(w, b, \alpha, \xi, \mu) = \frac{1}{2}\|w\|^2 + C\sum_{i=1}^{m} \xi_i + \sum_{i=1}^{m} \alpha_i (1 - \xi_i - y_i(w^T x_i + b)) - \sum_{i=1}^{m} \mu_i \xi_i L(w,b,α,ξ,μ)=21w2+Ci=1mξi+i=1mαi(1ξiyi(wTxi+b))i=1mμiξi
    • 这里 C C C 是一个预先设定的正则化参数,它平衡了间隔的宽度和违规程度。
  4. 拉格朗日对偶问题

    • 通过对 L L L 关于 w w w b b b ξ \xi ξ 求偏导并设为0,我们可以得到 w w w b b b ξ \xi ξ 的表达式,然后将它们从拉格朗日函数中消除,得到只关于 α \alpha α μ \mu μ 的函数。
  1. 对 ( w ) 求偏导
    针对拉格朗日函数中与 w w w 相关的部分 1 2 ∥ w ∥ 2 \frac{1}{2}\|w\|^2 21w2 ∑ i = 1 m α i ( 1 − ξ i − y i ( w T x i + b ) ) \sum_{i=1}^{m} \alpha_i (1 - \xi_i - y_i(w^T x_i + b)) i=1mαi(1ξiyi(wTxi+b)),我们分别对其求偏导。
    首先,对 1 2 ∥ w ∥ 2 \frac{1}{2}\|w\|^2 21w2 求偏导: ∂ L ∂ w = w \frac{\partial L}{\partial w} = w wL=w
    然后,对 ∑ i = 1 m α i ( 1 − ξ i − y i ( w T x i + b ) ) \sum_{i=1}^{m} \alpha_i (1 - \xi_i - y_i(w^T x_i + b)) i=1mαi(1ξiyi(wTxi+b)) 求偏导: ∂ L ∂ w = − ∑ i = 1 m α i y i x i \frac{\partial L}{\partial w} = -\sum_{i=1}^{m} \alpha_i y_i x_i wL=i=1mαiyixi
    最终,令两者相等并设为零,我们有: w − ∑ i = 1 m α i y i x i = 0 w - \sum_{i=1}^{m} \alpha_i y_i x_i = 0 wi=1mαiyixi=0
  2. 对 ( b ) 求偏导
    针对拉格朗日函数中与 ( b ) 相关的部分 ∑ i = 1 m α i ( 1 − ξ i − y i ( w T x i + b ) ) \sum_{i=1}^{m} \alpha_i (1 - \xi_i - y_i(w^T x_i + b)) i=1mαi(1ξiyi(wTxi+b)),我们对其求偏导。
    ∑ i = 1 m α i ( 1 − ξ i − y i ( w T x i + b ) ) \sum_{i=1}^{m} \alpha_i (1 - \xi_i - y_i(w^T x_i + b)) i=1mαi(1ξiyi(wTxi+b)) 求偏导:
    ∂ L ∂ b = − ∑ i = 1 m α i y i \frac{\partial L}{\partial b} = -\sum_{i=1}^{m} \alpha_i y_i bL=i=1mαiyi
    令其等于零,得到:
    − ∑ i = 1 m α i y i = 0 -\sum_{i=1}^{m} \alpha_i y_i = 0 i=1mαiyi=0
  3. ξ \xi ξ 求偏导
    针对拉格朗日函数中与 ξ \xi ξ 相关的部分 C ∑ i = 1 m ξ i − ∑ i = 1 m μ i ξ i C\sum_{i=1}^{m} \xi_i - \sum_{i=1}^{m} \mu_i \xi_i Ci=1mξii=1mμiξi,我们对其求偏导。
    C ∑ i = 1 m ξ i − ∑ i = 1 m α i ( 1 − ξ i − y i ( w T x i + b ) ) − ∑ i = 1 m μ i ξ i C\sum_{i=1}^{m} \xi_i - \sum_{i=1}^{m} \alpha_i (1 - \xi_i - y_i(w^T x_i + b)) - \sum_{i=1}^{m} \mu_i \xi_i Ci=1mξii=1mαi(1ξiyi(wTxi+b))i=1mμiξi 求偏导: ∂ L ∂ ξ i = C − α i − μ i \frac{\partial L}{\partial \xi_i} = C - \alpha_i - \mu_i ξiL=Cαiμi
    令其等于零,得到:
    C − α i − μ i = 0 对所有的 i C - \alpha_i - \mu_i = 0 \quad \text{对所有的} i Cαiμi=0对所有的i

得到结果
w = ∑ i = 1 m α i y i x i w = \sum_{i=1}^{m} \alpha_i y_i x_i w=i=1mαiyixi
∑ i = 1 m α i y i = 0 \sum_{i=1}^{m} \alpha_i y_i = 0 i=1mαiyi=0
C = α i + μ i C = \alpha_i + \mu_i C=αi+μi

  1. 得到对偶优化问题
    • 消除 w w w b b b ξ \xi ξ 后,我们得到对偶问题的最大化问题,仅关于 α \alpha α
      max ⁡ α [ ∑ i = 1 m α i − 1 2 ∑ i , j = 1 m y i y j α i α j x i T x j ] \max_{\alpha} \left[ \sum_{i=1}^{m} \alpha_i - \frac{1}{2} \sum_{i,j=1}^{m} y_i y_j \alpha_i \alpha_j x_i^T x_j \right] αmax[i=1mαi21i,j=1myiyjαiαjxiTxj]
    • 并且要满足约束 ∑ i = 1 m α i y i = 0 \sum_{i=1}^{m} \alpha_i y_i = 0 i=1mαiyi=0 0 ≤ α i ≤ C 0 \leq \alpha_i \leq C 0αiC

根据KKT(Karush-Kuhn-Tucker)条件,对于每个数据点 x i x_i xi,如果 α i = 0 \alpha_i = 0 αi=0,那么该数据点不会对模型的决策边界造成影响;如果 0 < α i < C 0 < \alpha_i < C 0<αi<C,那么 x i x_i xi 是支持向量,并且处在边界上;如果 α i = C \alpha_i = C αi=C,那么数据点 x i x_i xi 被误分类,或者它恰好在边界的违反侧上。

  1. (\alpha_i = 0) 时:
    • 这意味着对应的数据点 x i x_i xi 不对模型的优化造成任何影响,也就是说它不是支持向量。这些点要么被正确分类远离决策边界 ,要么在软间隔SVM中,这些点虽然被误分类但由于它们的影响在优化过程中被允许忽略(即对总损失的贡献被限制在了可接受的成本 C C C 内)。
  2. (0 < \alpha_i < C) 时:
    • 这表示数据点 x i x_i xi 恰好在边界上,即它是一个 支持向量 。在SVM中,这些支持向量决定了最终的决策边界。它们恰好位于或者非常接近我们希望数据点分界的边界线。
  3. (\alpha_i = C) 时:
    • 这表示数据点 x i x_i xi 在优化过程中发挥了最大的影响,可能是因为它被误分类,或者即便它被正确分类,也位于边界内侧 紧邻决策边界 的地方。在软间隔SVM中,这代表该点被允许违反最大间隔距离,但是由于其 α i \alpha_i αi 值达到了上限 C C C,这种违反的程度受到了约束。

当我们将拉格朗日函数 L ( α , μ ) L(\alpha, \mu) L(α,μ) 展开后,我们需要消除 w w w 和 (b),以及处理约束条件:

  1. 消除 w w w 和 (b)

    我们已经有了 w = ∑ i = 1 m α i y i x i w = \sum_{i=1}^{m} \alpha_i y_i x_i w=i=1mαiyixi 和约束条件 ∑ i = 1 m α i y i = 0 \sum_{i=1}^{m} \alpha_i y_i = 0 i=1mαiyi=0 。我们代入 w w w 的表达式和约束条件:

    L ( α , μ ) = 1 2 ∥ ∑ i = 1 m α i y i x i ∥ 2 + C ∑ i = 1 m ( C − α i − μ i ) + ∑ i = 1 m α i ( 1 − ( C − α i − μ i ) − y i ( ( ∑ j = 1 m α j y j x j ) T x i ) ) − ∑ i = 1 m μ i ( C − α i − μ i ) \begin{align*} L(\alpha, \mu) &= \frac{1}{2}\left\| \sum_{i=1}^{m} \alpha_i y_i x_i \right\|^2 + C\sum_{i=1}^{m} (C - \alpha_i - \mu_i) \\ &\quad + \sum_{i=1}^{m} \alpha_i \left(1 - (C - \alpha_i - \mu_i) - y_i\left(\left(\sum_{j=1}^{m} \alpha_j y_j x_j\right)^T x_i\right)\right) \\ &\quad - \sum_{i=1}^{m} \mu_i (C - \alpha_i - \mu_i) \end{align*} L(α,μ)=21 i=1mαiyixi 2+Ci=1m(Cαiμi)+i=1mαi 1(Cαiμi)yi (j=1mαjyjxj)Txi i=1mμi(Cαiμi)

    我们可以进一步化简上述表达式。

  2. 化简 ∥ ∑ i = 1 m α i y i x i ∥ 2 \| \sum_{i=1}^{m} \alpha_i y_i x_i \|^2 i=1mαiyixi2【内积展开】

    注意到 ∥ ∑ i = 1 m α i y i x i ∥ 2 \| \sum_{i=1}^{m} \alpha_i y_i x_i \|^2 i=1mαiyixi2 可以写为 ( ∑ i = 1 m α i y i x i ) T ( ∑ i = 1 m α i y i x i ) (\sum_{i=1}^{m} \alpha_i y_i x_i)^T (\sum_{i=1}^{m} \alpha_i y_i x_i) (i=1mαiyixi)T(i=1mαiyixi)。展开后得到:

    ∥ ∑ i = 1 m α i y i x i ∥ 2 = ( ∑ i = 1 m α i y i x i ) T ( ∑ i = 1 m α i y i x i ) = ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j \| \sum_{i=1}^{m} \alpha_i y_i x_i \|^2 = (\sum_{i=1}^{m} \alpha_i y_i x_i)^T (\sum_{i=1}^{m} \alpha_i y_i x_i) = \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_i \alpha_j y_i y_j x_i^T x_j i=1mαiyixi2=(i=1mαiyixi)T(i=1mαiyixi)=i=1mj=1mαiαjyiyjxiTxj

  3. 代入约束条件 ∑ i = 1 m α i y i = 0 \sum_{i=1}^{m} \alpha_i y_i = 0 i=1mαiyi=0

    由于约束条件是 ∑ i = 1 m α i y i = 0 \sum_{i=1}^{m} \alpha_i y_i = 0 i=1mαiyi=0,我们可以将 μ \mu μ 表达为 μ i = C − α i \mu_i = C - \alpha_i μi=Cαi

  4. 代入上述结果到拉格朗日函数

    代入上述结果后,我们得到:

L ( α ) = ∑ i = 1 m α i − 1 2 ∑ i , j = 1 m α i α j y i y j x i T x j \begin{align*} L(\alpha) &= \sum_{i=1}^{m} \alpha_i - \frac{1}{2} \sum_{i,j=1}^{m} \alpha_i \alpha_j y_i y_j x_i^T x_j \end{align*} L(α)=i=1mαi21i,j=1mαiαjyiyjxiTxj
以上步骤消除了 w w w 和 (b),并将 L ( α , μ ) L(\alpha, \mu) L(α,μ) 表达为关于 α \alpha α 的函数。

  1. 最大化 L ( α ) L(\alpha) L(α)

    我们的目标是最大化 L ( α ) L(\alpha) L(α),即求解:

max ⁡ α [ ∑ i = 1 m α i − 1 2 ∑ i , j = 1 m y i y j α i α j x i T x j ] \max_{\alpha} \left[ \sum_{i=1}^{m} \alpha_i - \frac{1}{2} \sum_{i,j=1}^{m} y_i y_j \alpha_i \alpha_j x_i^T x_j \right] αmax[i=1mαi21i,j=1myiyjαiαjxiTxj]

并且要满足约束条件:

{ ∑ i = 1 m α i y i = 0 0 ≤ α i ≤ C , i = 1 , 2 , . . . , m \begin{cases} \sum_{i=1}^{m} \alpha_i y_i = 0 \\ 0 \leq \alpha_i \leq C, \quad i = 1, 2, ..., m \end{cases} {i=1mαiyi=00αiC,i=1,2,...,m

问题三:KKT条件求解过程

和前面相比,两者唯一差别就在约束条件不同;
带有软间隔的KKT条件
了解KKT条件的推导过程首先要理解拉格朗日乘子法在处理优化问题时如何使用。在软间隔支持向量机中,我们希望最小化以下拉格朗日函数:

L ( w , b , α , ξ , μ ) = 1 2 ∥ w ∥ 2 + C ∑ i = 1 m ξ i + ∑ i = 1 m α i ( 1 − ξ i − y i ( w T x i + b ) ) − ∑ i = 1 m μ i ξ i L(w, b, \alpha, \xi, \mu) = \frac{1}{2}\|w\|^2 + C\sum_{i=1}^{m} \xi_i + \sum_{i=1}^{m} \alpha_i (1 - \xi_i - y_i(w^T x_i + b)) - \sum_{i=1}^{m} \mu_i \xi_i L(w,b,α,ξ,μ)=21w2+Ci=1mξi+i=1mαi(1ξiyi(wTxi+b))i=1mμiξi

其中, α \alpha α μ \mu μ 是拉格朗日乘子, ξ \xi ξ 是松弛变量。

这个函数结合了目标函数和对每个样本 x i x_i xi 的约束,其中 y i ( w T x i + b ) ≥ 1 − ξ i y_i(w^T x_i + b) \geq 1 - \xi_i yi(wTxi+b)1ξi。由于 ξ i \xi_i ξi 允许一定的分类违规,我们加入正则化参数 C C C 以限制这种违规。

KKT条件是最优解必须满足的一组条件,它们来自拉格朗日函数 L L L 关于每个变量的偏导数等于零的必要条件。下面是KKT条件:

  1. α i ≥ 0 \alpha_i \geq 0 αi0 μ i ≥ 0 \mu_i \geq 0 μi0:这确保了拉格朗日乘子是非负的。在优化问题中,拉格朗日乘子用来 加权约束条件 ,而这个权重不能是负的。
  2. y i f ( x i ) − 1 + ξ i ≥ 0 y_i f(x_i) - 1 + \xi_i \geq 0 yif(xi)1+ξi0 :这是原始问题的约束,表示每个数据点的函数间隔至少为1,满足 1 − ξ i 1 - \xi_i 1ξi(如果数据点被正确分类且在正确的间隔边界上或者超出间隔边界)。如果 ξ i > 0 \xi_i > 0 ξi>0,则该数据点有分类违规
  3. α i ( y i f ( x i ) − 1 + ξ i ) = 0 \alpha_i(y_i f(x_i) - 1 + \xi_i) = 0 αi(yif(xi)1+ξi)=0互补松弛性条件。如果 α i > 0 \alpha_i > 0 αi>0,则对应的 y i f ( x i ) − 1 + ξ i y_i f(x_i) - 1 + \xi_i yif(xi)1+ξi 必须等于0。这意味着对于非零 α i \alpha_i αi 的数据点,它们要么恰好在决策边界上,要么就是被 错误分类 的点。
  4. ξ i ≥ 0 \xi_i \geq 0 ξi0松弛变量的非负性,允许某些数据点违背硬间隔条件。
  5. μ i ξ i = 0 \mu_i \xi_i = 0 μiξi=0:这是对 μ \mu μ互补松弛性条件,表明如果松弛变量 ξ i > 0 \xi_i > 0 ξi>0,即有分类违规,那么对应的 μ i \mu_i μi 必须是 0,反之亦然。

通过拉格朗日函数的偏导数等于零的条件和这些KKT条件,我们能够定义出最优化问题的对偶形式,这在数值上往往更易于求解。对偶问题通常涉及 仅有 α \alpha α最大化问题 ,而不直接求解 w w w b b b,这简化了问题的复杂度,特别是当用核技巧将其扩展到高维空间时。

在实际算法实现中,如SMO算法,这种对偶形式是解决SVM最优化问题的关键。

问题四:结构风险最小化(SRM)的原理

结构风险最小化(SRM)的原理,它是支持向量机(SVM)理论的一个核心概念。结构风险最小化致力于在保证模型复杂度的同时 最小化训练误差 ,以达到良好的泛化效果。文中提到了经验风险(即模型在训练集上的误差)和模型的复杂度两个部分。具体来说,它通过一个优化问题来平衡这两者:

  • 经验风险:是模型在训练数据上的 损失函数值的总和
  • 正则化项:是用于控制 模型复杂度 的项,通常是模型参数的某种形式(如权重向量的范数)。

优化目标是最小化这两个量的组合,通常表示为:

min ⁡ f Ω ( f ) + C ∑ i = 1 m L ( f ( x i ) , y i ) \min_f \quad \Omega(f) + C \sum_{i=1}^{m} L(f(x_i), y_i) fminΩ(f)+Ci=1mL(f(xi),yi)

这里, Ω ( f ) \Omega(f) Ω(f) 是正则化项, L ( f ( x i ) , y i ) L(f(x_i), y_i) L(f(xi),yi) 是损失函数, C C C 是控制两者权重的正则化参数。

了解SRM的概念可以帮助你更好地理解SVM模型的目标和设计背后的 动机 ,但如果你只是想实现算法而不关心其理论基础,你可以选择不深入这部分内容。然而,如果你打算深入理解SVM的工作原理或者进行算法的改进,那么对SRM的理解是很重要的。

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

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

相关文章

【Linux系统编程】第十二弹---编辑器gcc/g++使用

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、什么是gcc/g 2、gcc/g编辑器的安装 3、gcc/g编译的四个步骤 2.1、预处理 2.2、编译 2.3、汇编 2.4、链接 4、函数库 …

jadx-gui添加dex文件失败,提示Bad checksum

之前都是使用jadx直接打开的apk文件&#xff0c;要添加dex文件时突然添加失败并报错 也就是会校验dex的checksum&#xff0c;直接关闭会导致dex文件反编译失败。 解决方案&#xff1a;查日志后得到关闭校验即可 操作方式如下&#xff1a;

Java高阶私房菜:JVM分代收集算法介绍和各垃圾收集器原理分解

目录 什么是分代收集算法 GC的分类和专业术语 什么是垃圾收集器 垃圾收集器的分类及组合 ​编辑 应关注的核心指标 Serial和ParNew收集器原理 Serial收集器 ParNew收集器 Parallel和CMS收集器原理 Parallel 收集器 CMS收集器 新一代垃圾收集器G1和ZGC G1垃圾收集器…

未来科技的前沿:深入探讨人工智能的进展、机器学习技术和未来趋势

文章目录 一、人工智能的定义和概述1. 人工智能的基本概念2. 人工智能的发展历史 二、技术深入&#xff1a;机器学习、深度学习和神经网络1. 机器学习2. 深度学习3. 神经网络 三、人工智能的主要目标和功能1. 自动化和效率提升2. 决策支持和风险管理3. 个性化服务和预测未来 本…

【目标检测】DEtection TRansformer (DETR)

一、前言 论文&#xff1a; End-to-End Object Detection with Transformers 作者&#xff1a; Facebook AI 代码&#xff1a; DEtection TRansformer (DETR) 特点&#xff1a; 无proposal&#xff08;R-CNN系列&#xff09;、无anchor&#xff08;YOLO系列&#xff09;、无NM…

本地大语言模型LLM的高效运行专家 | Ollama

Ollama简介 Ollama是一个开源的大型语言模型服务工具&#xff0c;它帮助用户快速在本地运行大模型。通过简单的安装指令&#xff0c;用户可以执行一条命令就在本地运行开源大型语言模型&#xff0c;如Llama 2。Ollama极大地简化了在Docker容器内部署和管理LLM的过程&#xff0…

ICode国际青少年编程竞赛- Python-1级训练场-基本操作

ICode国际青少年编程竞赛- Python-1级训练场-基本操作 1、 Dev.step(3)2、 Dev.step(1)3、 Dev.step(7)4、 Dev.step(-1)5、 Dev.step(-5)6、 Dev.step(3) Dev.step(-8)7、 Dev.turnRight() Dev.step(1)8、 Dev.turnLeft() Dev.step(1)9、 Dev.step(4) Dev.tur…

2024年Q1季度户外装备线上市场数据分析:垂钓类用品占据市场主流

五一期间&#xff0c;随着外出旅游、露营、游玩增多&#xff0c;消费者也将目光投向户外装备。 但今年Q1季度&#xff0c;由于季节变换、天气气候等原因&#xff0c;户外装备市场表现不如预期。根据鲸参谋数据显示&#xff0c;今年Q1季度&#xff0c;在线上电商平台&#xff0…

Java-异常处理-定义三角形类Triangle和异常三角形IllegalTriangleException类 (1/2)

任意一个三角形&#xff0c;其任意两边之和大于第三边。当三角形的三条边不满足前述条件时&#xff0c;就表示发生了异常&#xff0c;将这种异常情况定义为IllegalTriangleException类。 自定义异常类IllegalTriangleException&#xff1a; 当三角形的三条边不满足条件&#x…

数据结构学习/复习3--顺序表的实现/数组下标思想类编程题

一、顺序表的实现 realloc函数的原异地扩容 二、编程练习题 1. 2. 3.

解决WordPress无法强制转换https问题

原因&#xff1a;我在用cs的时候&#xff0c;突然老鸟校园网突然断了&#xff0c;客户端cs连不上了&#xff0c;进程也杀不死&#xff0c;cpu占用100%&#xff0c;只能重启&#xff0c;但是重启后我的blog网站打不开了 开始以为是Nginx的问题&#xff0c;重启它说配置出了问题…

STM32——GPIO篇

技术笔记&#xff01; 1. 什么是GPIO&#xff1f; GPIO是通用输入输出端口&#xff08;General-purpose input/output&#xff09;的英文简写&#xff0c;是所有的微控制器必不可少的外设之一&#xff0c;可以由STM32直接驱动从而实现与外部设备通信、控制以及采集和捕获的功…

java中的字符串(String)常量池理解

下面创建String对象的方式一样吗&#xff1f; 上述程序创建对象类似&#xff0c;为什么s1和s2引用对象一样&#xff0c;但是s3和s4不一样呢&#xff1f; 在java程序中&#xff0c;许多基本类型的字面常量会经常用到&#xff0c;例如2,3.11&#xff0c;“hyy”等。为了提升程序…

算法学习系列(五十四):单源最短路的综合应用

目录 引言一、新年好二、通信线路三、道路与航线四、最优贸易 引言 关于这个单源最短路的综合应用&#xff0c;其实最短路问题最简单的就是模板了&#xff0c;这是一个基础&#xff0c;然后会与各种算法结合到一块&#xff0c;就是不再考察单个知识点了&#xff0c;而是各种知…

【RBAC鉴权】node-casbin基础教程

一、RBAC概述 RBAC鉴权&#xff0c;完整的英文描述是&#xff1a;Role-Based Access Control&#xff0c;中文意思是&#xff1a;基于角色&#xff08;Role&#xff09;的访问控制。这是一种广泛应用于计算机系统和网络安全领域的访问控制模型。 简单来说&#xff0c;就是通过…

a-table 控制列的展示和隐藏

一、业务场景&#xff1a; 最近在使用 Antd-vue 组件库的时候&#xff0c;a-table需要根据不同角色的权限显示和隐藏 columns的列 为了避免大家走弯路&#xff0c;为大家整理了一下&#xff0c;粘走可以直接用的那种 二、具体实现步骤&#xff1a; 1.在需要显示与隐藏的列增加一…

Android Studio实现简单的自定义钟表

项目目录 一、项目概述二、开发环境三、详细设计3.1、尺寸设置3.2、绘制表盘和指针3.3、动态效果 四、运行演示五、总结展望六、源码获取 一、项目概述 在安卓开发中&#xff0c;当系统自带的View已经无法满足项目需求时&#xff0c;就要自定义View。在Android中是没有与钟表有…

深度学习之基于Matlab BP神经网络烟叶成熟度分类

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 烟叶的成熟度是评估烟叶品质的重要指标之一&#xff0c;它直接影响着烟叶的口感、香气和理化特性。传…

jupyter notebook切换conda虚拟环境

首先&#xff0c;切换到某个虚拟环境&#xff0c;本人切换到了d2l环境&#xff1a; (d2l) C:\Users\10129>pip install ipykernel然后&#xff0c;如代码所示安装ipykernel包 最后&#xff0c;按下述代码执行&#xff1a; (d2l) C:\Users\10129>python -m ipykernel i…

软件工程全过程性文档(软件全套文档整理)

软件项目相关全套精华资料包获取方式①&#xff1a;进主页。 获取方式②&#xff1a;本文末个人名片直接获取。 在软件开发的全过程中&#xff0c;文档是记录项目进展、决策、设计和测试结果的重要工具。以下是一个简要的软件全过程性文档梳理清单&#xff1a; 需求分析阶段…