机器人中的数值优化(十五)——PHR增广拉格朗日乘子法

   本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例



  

   二十四、PHR增广拉格朗日乘子法

   如何对一个更一般化的带约束的问题求解呢?比如f(x)、g(x)、h(x)非凸的时候如何求解?

   1、KKT条件

   如下式所示的更一般的带约束的优化问题

   min ⁡ x f ( x ) s . t . h i ( x ) ≤ 0 , i = 1 , … , m ℓ j ( x ) = 0 , j = 1 , … , r \begin{array}{rl}\min_x&f(x)\\\mathrm{s.t.}&h_i(x)\leq0,i=1,\ldots,m\\&\ell_j(x)=0,j=1,\ldots,r\end{array} minxs.t.f(x)hi(x)0,i=1,,mj(x)=0,j=1,,r

   如果它不是退化的(如它是凸的但没有严格可行点),则它的最优解满足以下表达式

   0 ∈ ∂ x [ f ( x ) + ∑ i = 1 m u i h i ( x ) + ∑ j = 1 r v j ℓ j ( x ) ] u i ⋅ h i ( x ) = 0 , i = 1 , … , m h i ( x ) ≤ 0 , ℓ j ( x ) = 0 , i = 1 , … , m , j = 1 , … , r u i ≥ 0 , i = 1 , … , m \begin{aligned} &0\in\partial_x[f(x)+\sum_{i=1}^mu_ih_i(x)+\sum_{j=1}^rv_j\ell_j(x)] \\ &u_i\cdot h_i(x)=0,i=1,\ldots,m \\ &h_i(x)\leq0,~\ell_j(x)=0,~i=1,\ldots,m,~j=1,\ldots,r \\ &u_i\geq0,~i=1,\ldots,m \end{aligned} 0x[f(x)+i=1muihi(x)+j=1rvjj(x)]uihi(x)=0,i=1,,mhi(x)0, j(x)=0, i=1,,m, j=1,,rui0, i=1,,m
   其中,上述第一行是稳定性条件,第二行表达式是互补松弛条件,不等式约束的对偶变量和不等式约束的乘积等于0,第三行表达式表示可行解一定满足等式或不等式约束,第四行表示不等式约束的对偶变量要大于0

在这里插入图片描述

   对于简单的问题,我们可以直接拿KKT条件把简单的约束优化的问题写出它最优解满足的一些必要条件,不含有不等式约束时,甚至直接把对应的等式方程组直接求解出来。KKT条件用来度量约束算法解的精度

   下图中的例子中,仅含有等式约束,最优解一定满足下式所示的线性方程组,Q是严格正定的

在这里插入图片描述


   2、PHR的含义

   Powell-Hestenes-Rockafellar (PHR)是三个关于拉格朗日乘子法最起源的文章的作者的第一个字母,前两个作者在等式约束中提出了对应的方法,第三个作者将其推广到不等式约束上。

   3、带等式约束的情况

   min ⁡ x ∈ R n f ( x ) s . t . h ( x ) = 0 \begin{aligned}\min_{x\in\mathbb{R}^n}&f(x)\\\mathrm{s.t.~}&h(x)=0\end{aligned} xRnmins.t. f(x)h(x)=0

   前文介绍的Uzawa的方法是对二重函数进行二重的梯度上升,如下所示

   d ( λ ) : = min ⁡ x f ( x ) + λ T h ( x ) d(\lambda):=\min_xf(x)+\lambda^\mathrm{T}h(x) d(λ):=xminf(x)+λTh(x)

   如果拉格朗日函数关于x不是严格凸的,则对偶函数是非光滑的。在这种情况下,它的梯度可能不存在,使二重梯度上升成为问题。即使是严格凸的,其效率也可能存在问题。

   ∇ d ( λ ) does not necessarily exist! \nabla d(\lambda)\text{ does not necessarily exist!} d(λ) does not necessarily exist!

   在PHR方法中,基本思想是把不连续的问题变成连续的问题,在右边项中加一个二次项,如下式中的红色部分所示, 我们不知道最优的 λ {\lambda} λ在哪,但我们有一个先验的估值 λ ˉ ( ρ > 0 ) \bar{\lambda} (\rho>0) λˉ(ρ>0),我们利用它来作一个惩罚项 − 1 2 ρ ∥ λ − λ ˉ ∥ 2 -\frac1{2\rho}\|\lambda-\bar{\lambda}\|^2 2ρ1λλˉ2。内层变成了一个严格凹的函数,对于该严格凹函数,可以求得其唯一的最优解,极大极小值被一个“近端点”项平滑,

   min ⁡ x max ⁡ λ f ( x ) + λ T h ( x ) − 1 2 ρ ∥ λ − λ ˉ ∥ 2 \min_x\max_\lambda\left.f(x)+\lambda^\mathrm{T}h(x)-\color{red}{\frac1{2\rho}}\|\lambda-\bar{\lambda}\|^2\right. xminλmaxf(x)+λTh(x)2ρ1λλˉ2

   现在我们可以直接优化极大极小问题了,而不需要交换顺序。当 ρ \rho ρ趋于inf时,上式跟原问题越接近,精度越高

   那么如何求解以上问题呢?,带上述正则项的子问题如下式所示

   max ⁡ λ f ( x ) + λ T h ( x ) − 1 2 ρ ∥ λ − λ ˉ ∥ 2 \max_{\lambda}\left.f(x)+\lambda^\mathrm{T}h(x)-\color{red}\frac1{2\rho}\|\lambda-\bar{\lambda}\|^2\right. λmaxf(x)+λTh(x)2ρ1λλˉ2

   对于这样一个严格凹的函数求最大值,我们可以对其求导,第一项对 λ \lambda λ求导是0,第二项对 λ \lambda λ求导是h(x),第三项对 λ \lambda λ求导是 − 1 ρ ( λ − λ ˉ ) -\frac{1}{\rho}(\lambda-\bar{\lambda}) ρ1(λλˉ),可得到以下关系式:

   0 + h ( x ) − 1 ρ ( λ − λ ˉ ) = 0 0+h(x)-\frac{1}{\rho}(\lambda-\bar{\lambda}) =0 0+h(x)ρ1(λλˉ)=0
   可以解得 λ \lambda λ最大值如下所示,其中 λ ˉ \bar{\lambda} λˉ是一个常数,随着 λ ˉ \bar{\lambda} λˉ的值的改变, λ ∗ ( λ ˉ ) \lambda^*(\bar{\lambda}) λ(λˉ)也随之改变。

   λ ∗ ( λ ˉ ) = λ ˉ + ρ h ( x ) \lambda^*(\bar{\lambda})=\bar{\lambda}+\rho h(x) λ(λˉ)=λˉ+ρh(x)

   把上述内层问题的最优解代入到,我们要求解的问题中,如下所示:

   min ⁡ x max ⁡ λ f ( x ) + λ T h ( x ) − 1 2 ρ ∥ λ − λ ˉ ∥ 2 = min ⁡ x f ( x ) + λ ∗ ( λ ˉ ) T h ( x ) − 1 2 ρ ∥ λ ∗ ( λ ˉ ) − λ ˉ ∥ 2 = min ⁡ x f ( x ) + ( λ ˉ + ρ h ( x ) T h ( x ) − ρ 2 ∥ h ( x ) ∥ 2 = ⁡ ⋅ min ⁡ x f ( x ) + λ ˉ T h ( x ) + ρ 2 ∥ h ( x ) ∥ 2 \begin{aligned} & \min_{x}\max_{\lambda}f(x)+\lambda^{\text{T}}h(x)-\frac1{2\rho}\|\lambda-\bar{\lambda}\|^2\\ & =\min_{x}f(x)+\lambda^{*}(\bar{\lambda})^{\mathrm{T}}h(x)-\frac1{2\rho}\|\lambda^{*}(\bar{\lambda})-\bar{\lambda}\|^2\\ & =\min_{x}f(x)+(\bar{\lambda}+\rho h(x)^{\mathrm{T}}h(x)-\frac\rho2\|h(x)\|^2\\ & \overset{\color{red}{\cdot}}{\operatorname*{=}}\min_{x}\left.f(x)+\bar{\lambda}^{\mathrm{T}}h(x)+\frac\rho2\|h(x)\|^2\right.\end{aligned} xminλmaxf(x)+λTh(x)2ρ1λλˉ2=xminf(x)+λ(λˉ)Th(x)2ρ1λ(λˉ)λˉ2=xminf(x)+(λˉ+ρh(x)Th(x)2ρh(x)2=xminf(x)+λˉTh(x)+2ρh(x)2

   通过上式,我们成功将带等式约束的优化问题转换为无约束的优化问题,由于先验估值 λ ˉ \bar{\lambda} λˉ不一定准确,导致求出的最优解,跟原问题的最优解可能有偏差,但是利用该先验估值求出的 λ ∗ {\lambda}^* λ,是向原最优解靠拢的,因此,我们可以把上述利用差的先验估值得出的 λ ∗ {\lambda}^* λ,作为新的 λ ˉ \bar{\lambda} λˉ,再求解出一个更高精度的 λ ∗ {\lambda}^* λ

   1. Reduce the approx. weight 1 / ρ 2. Update the prior value λ ˉ ← λ ∗ ( λ ˉ ) \begin{aligned}1.\quad&\text{Reduce the approx. weight}\quad1/\rho\\2.\quad&\text{Update the prior value}\quad\bar{\lambda}\leftarrow\lambda^*(\bar{\lambda})\end{aligned} 1.2.Reduce the approx. weight1/ρUpdate the prior valueλˉλ(λˉ)

   总的来说,我们可以增大权重 ρ \rho ρ/2,或者通过利用差的先验估值得出的 λ ∗ {\lambda}^* λ,作为新的 λ ˉ \bar{\lambda} λˉ,再求解出一个更高精度的 λ ∗ {\lambda}^* λ,这两种方法来提高最优解的精度。但 ρ \rho ρ过大可能出现不容易解的问题,所以这两种方法可以配合使用。

   求解过程如下所示,首先给一个先验估值 λ ˉ \bar{\lambda} λˉ和一个 ρ \rho ρ,两者都是常量,然后求解这样一个无约束优化问题,比如利用L-BFGS算法、牛顿法等求解,得到最优的x,然后利用这个x去更新先验估值 λ ˉ \bar{\lambda} λˉ,然后再利用新的先验估值,求解这个无约束优化问题。 ρ \rho ρ值可以不用取得很大,比如10、100、1000,循环5~8轮就可以得到精度很高的解

在这里插入图片描述

   x ← arg ⁡ min ⁡ x f ( x ) + λ ˉ T h ( x ) + ρ 2 ∥ h ( x ) ∥ 2 λ ˉ ← λ ˉ + ρ h ( x ) \color{red}\begin{aligned}&x\leftarrow\arg\min_x\left.f(x)+\bar{\lambda}^\mathrm{T}h(x)+\frac\rho2\|h(x)\|^2\right.\\&\bar{\lambda}\leftarrow\bar{\lambda}+\rho h(x)\end{aligned} xargxminf(x)+λˉTh(x)+2ρh(x)2λˉλˉ+ρh(x)

   与之前介绍的Uzawa’s相比,PHR方法多了一个增广项 ρ 2 ∥ h ( x ) ∥ 2 \frac\rho2\|h(x)\|^2 2ρh(x)2,并且 λ ˉ \bar{\lambda} λˉ的更新步长为 ρ \rho ρ ,在Uzawa’s的视角下,上述问题可表示为,即将PHR方法的增广项 ρ 2 ∥ h ( x ) ∥ 2 \frac\rho2\|h(x)\|^2 2ρh(x)2视为目标函数的一部分。

   min ⁡ x ∈ R n f ( x ) + ρ 2 ∥ h ( x ) ∥ 2 s . t . h ( x ) = 0 \begin{aligned}\min_{x\in\mathbb{R}^n}f(x)+\frac\rho2\|h(x)\|^2\\\mathrm{s.t.~}h(x)=0\end{aligned} xRnminf(x)+2ρh(x)2s.t. h(x)=0

   即使优化是非凸的,这个问题也完全等价于原来的问题。它的拉格朗日量,也称为原问题的增广拉格朗日量,如下所示

   L ( x , λ ; ρ ) : = f ( x ) + λ T h ( x ) ⏟ L a g r a n g i a n + ρ 2 ∥ h ( x ) ∥ 2 ⏟ A u g m e n t a t i o n \mathcal{L}(x,\lambda;\rho):=\underbrace{f(x)+\lambda^\mathrm{T}h(x)}_{\mathrm{Lagrangian}}+\underbrace{\color{red}{\frac\rho2}\|h(x)\|^2}_{\mathrm{Augmentation}} L(x,λ;ρ):=Lagrangian f(x)+λTh(x)+Augmentation 2ρh(x)2

   与Uzawa’s方法相比,PHR方法加了一个正则项,使得新的对偶函数是平滑的,且不改变其极值。PHR方法中对偶变量的更新,实际上是一个平滑对偶函数的最大化。

在这里插入图片描述


   所以,对于如下式所示的一般的非凸等式约束优化问题,
   min ⁡ x ∈ R n f ( x ) s . t . h ( x ) = 0 \begin{aligned}\min_{x\in\mathbb{R}^n}&f(x)\\\mathrm{s.t.~}&h(x)=0\end{aligned} xRnmins.t. f(x)h(x)=0

   它的PHR增广拉格朗日函数的一个更常用的等价形式,如下式所示,灰色部分可以省略

   L ρ ( x , λ ) : = f ( x ) + ρ 2 ∥ h ( x ) + λ ρ ∥ 2 − 1 2 ρ ∥ λ ∥ 2 \color{red}\mathcal{L}_\rho(x,\lambda):=f(x)+\frac\rho2\begin{Vmatrix}h(x)+\frac\lambda\rho\end{Vmatrix}^2\color{grey}-\frac1{2\rho}\|\lambda\|^2 Lρ(x,λ):=f(x)+2ρ h(x)+ρλ 22ρ1λ2

   满足KKT条件的解可通过以下流程获取:

   { x k + 1 = argmin ⁡ x L ρ k ( x , λ k ) λ k + 1 = λ k + ρ k h ( x k + 1 ) ρ k + 1 = min ⁡ [ ( 1 + γ ) ρ k , β ] \color{red} \begin{cases}x^{k+1}=\operatorname{argmin}_x\mathcal{L}_{\rho^k}(x,\lambda^k)\\\lambda^{k+1}=\lambda^k+\rho^kh(x^{k+1})\\\rho^{k+1}=\min[(1+\gamma)\rho^k,\beta]&\end{cases} xk+1=argminxLρk(x,λk)λk+1=λk+ρkh(xk+1)ρk+1=min[(1+γ)ρk,β]

   首先,我们随便给一个 ρ k \rho_k ρk λ k \lambda^k λk,然后优化这个增广拉格朗日函数对于x的最优解,得到 x k + 1 x^{k+1} xk+1,然后利用 λ k \lambda^k λk的更新表达式更新得到 λ k + 1 \lambda^{k+1} λk+1,然后利用第三个表达式增大 ρ k \rho_k ρk,得到 ρ k + 1 \rho^{k+1} ρk+1,其中 γ ≥ 0 , β > 0 , ρ 0 > 0 \gamma\geq0,\beta>0,\rho^0>0 γ0,β>0,ρ0>0,循环执行以上三个步骤,直至得到所需精度的解。

在这里插入图片描述


   4、带不等式约束的情况

   对于下式所示的非凸的不等式约束问题,

   min ⁡ x ∈ R n f ( x ) s . t . g ( x ) ≤ 0 \begin{aligned}\min_{x\in\mathbb{R}^n}&f(x)\\\mathrm{s.t.~}&g(x)\leq0\end{aligned} xRnmins.t. f(x)g(x)0

   我们可以采用增加决策变量维度的方法,即增加m个优化变量s,把不等式约束变成等式约束,如下式所示,

   min ⁡ x ∈ R n , s ∈ R m f ( x ) s . t . g ( x ) + [ s ] 2 = 0 \begin{aligned}\min_{x\in\mathbb{R}^n,s\in\mathbb{R}^m}f(x)\\\mathrm{s.t.}\quad g(x)+[s]^2=0\end{aligned} xRn,sRmminf(x)s.t.g(x)+[s]2=0

   其中

   [ ⋅ ] 2 implies element-wise squaring [\cdot]^2\text{ implies element-wise squaring} []2 implies element-wise squaring

   下面的例子可以帮助理解以上转换,也就是满足 g ( x ) + [ s ] 2 = 0 g(x)+[s]^2=0 g(x)+[s]2=0 g ( x ) g(x) g(x)必然满足 g ( x ) ≤ 0 g(x)\leq0 g(x)0

在这里插入图片描述


   这样我们就把不等式约束问题转换为等式约束问题,然后我们可以直接拿前面的PHR增广拉格朗日乘子法求解,但当m较大时,比如n=100,m=1000,转换后优化变量的维度就变成了1100,此时,有没有更好的处理方法呢?

   增广拉格朗日的最初下降意味着:

   min ⁡ x ∈ R n , s ∈ R m f ( x ) + ρ 2 ∥ g ( x ) + [ s ] 2 + λ ρ ∥ 2 = min ⁡ x ∈ R m min ⁡ s ∈ R m f ( x ) + ρ 2 ∥ g ( x ) + [ s ] 2 + λ ρ ∥ 2 = min ⁡ x ∈ R n f ( x ) + ρ 2 ∥ max ⁡ [ g ( x ) + λ ρ , 0 ] ∥ 2 \min_{x\in\mathbb{R}^n,s\in\mathbb{R}^m}f(x)+\frac\rho2\left\|g(x)+[s]^2+\frac\lambda\rho\right\|^2=\min_{x\in\mathbb{R}^m}\min_{s\in\mathbb{R}^m}f(x)+\frac\rho2\left\|g(x)+[s]^2+\frac\lambda\rho\right\|^2=\color{red}{\min_{x\in\mathbb{R}^n}f(x)+\frac\rho2}\left\|\max\left[g(x)+\frac\lambda\rho,0\right]\right\|^2 xRn,sRmminf(x)+2ρ g(x)+[s]2+ρλ 2=xRmminsRmminf(x)+2ρ g(x)+[s]2+ρλ 2=xRnminf(x)+2ρ max[g(x)+ρλ,0] 2

   因此,我们可以直接定义不等式约束问题的增广拉格朗日量为:(下式是更常用的写法),其中灰色部分可以省略,此外,为了与等式约束区分,等式约束中的 λ \lambda λ在这里用 μ \mu μ表示。

   L ρ ( x , μ ) : = f ( x ) + ρ 2 ∥ max ⁡ [ g ( x ) + μ ρ , 0 ] ∥ 2 − 1 2 ρ ∥ μ ∥ 2 \color{red}\mathcal{L}_{\rho}(x,\mu):=f(x)+\frac\rho2\left\|\max\left[g(x)+\frac\mu\rho,0\right]\right\|^2\color{grey}-\frac1{2\rho}\|\mu\|^2 Lρ(x,μ):=f(x)+2ρ max[g(x)+ρμ,0] 22ρ1μ2

   对偶变量的更新方式如下式所示:

   μ k + 1 = max ⁡ [ μ k + ρ g ( x k + 1 ) , 0 ] \color{red}\mu^{k+1}=\max\left[\mu^k+\rho g(x^{k+1}),\mathrm{~}0\right] μk+1=max[μk+ρg(xk+1), 0]

在这里插入图片描述


   5、带等式和不等式约束的情况

   对于下式所示的带等式约束和不等式约束的优化问题,

   min ⁡ x ∈ R n f ( x ) s . t . h ( x ) = 0 g ( x ) ≤ 0 \begin{aligned}\min_{x\in\mathbb{R}^n}f(x)\\\begin{array}{rl}\mathrm{s.t.}&h(x)=0\\&g(x)\leq0\end{array}\end{aligned} xRnminf(x)s.t.h(x)=0g(x)0

   把上面的带等式约束、不等式约束的表达式加在一起,如下式所示:(灰色部分可以省略)

   L ρ ( x , λ , μ ) : = f ( x ) + ρ 2 { ∥ h ( x ) + λ ρ ∥ 2 + ∥ max ⁡ [ g ( x ) + μ ρ , 0 ] ∥ 2 } − 1 2 ρ { ∥ λ ∥ 2 + ∥ μ ∥ 2 } \color{red}\mathcal{L}_\rho(x,\lambda,\mu):=f(x)+\frac\rho2\left\{\left\|h(x)+\frac\lambda\rho\right\|^2+\left\|\max\left[g(x)+\frac\mu\rho,0\right]\right\|^2\right\}\color{grey}-\frac1{2\rho}\left\{\|\lambda\|^2+\|\mu\|^2\right\} Lρ(x,λ,μ):=f(x)+2ρ{ h(x)+ρλ 2+ max[g(x)+ρμ,0] 2}2ρ1{λ2+μ2}

   其中

   ρ > 0 , μ ⪰ 0 \rho>0,\mu\succeq0 ρ>0,μ0

   求解流程如下所示,循环执行以下流程,直至得到符合要求精度的解

   { x ← argmin ⁡ x L ρ ( x , λ , μ ) λ ← λ + ρ h ( x ) μ ← max ⁡ [ μ + ρ g ( x ) , 0 ] ρ ← min ⁡ [ ( 1 + γ ) ρ , β ] \color{red}\begin{cases}x\leftarrow\operatorname{argmin}_x\mathcal{L}_\rho(x,\lambda,\mu)\\\lambda\leftarrow\lambda+\rho h(x)\\\mu\leftarrow\max[\mu+\rho g(x),0]\\\rho\leftarrow\min[(1+\gamma)\rho,\mathrm{~}\beta]&\end{cases} xargminxLρ(x,λ,μ)λλ+ρh(x)μmax[μ+ρg(x),0]ρmin[(1+γ)ρ, β]

   ρ i n i = 1 , λ i n i = μ i n i = 0 , γ = 1 , β = 1 0 3 \rho_{\mathrm{ini}}=1,\lambda_{\mathrm{ini}}=\mu_{\mathrm{ini}}=0,\gamma=1,\beta=10^3 ρini=1,λini=μini=0,γ=1,β=103

   首先,我们随便给一个 ρ \rho ρ λ \lambda λ μ \mu μ、比如 ρ = 1 \rho=1 ρ=1 λ = 0 \lambda=0 λ=0 μ = 0 \mu=0 μ=0,然后优化这个增广拉格朗日函数对于x的最优解,得到 x x x,然后分别利用 λ \lambda λ μ \mu μ的更新表达式更新 λ \lambda λ μ \mu μ,然后利用最后一个表达式增大 ρ \rho ρ,根据实际需求,也可不增大,循环执行以上四个步骤,当kkT的残差小于设定的值,增广拉格朗日对x的梯度尽可能的小时,如下所示,外层循环停止循环迭代。

   max ⁡ [ ∥ h ( x ) ∥ ∞ , ∥ max ⁡ [ g ( x ) , − μ ρ ] ∥ ∞ ] < ϵ c o n s , ∥ ∇ x L ρ ( x , λ , μ ) ∥ ∞ < ϵ p r e c \max\left[\|h(x)\|_\infty,\left\|\max\left[g(x),-\frac{\mu}{\rho}\right]\right\|_\infty\right]<\epsilon_{\mathrm{cons}},\left.\left\|\nabla_x\mathcal{L}_\rho(x,\lambda,\mu)\right\|_\infty<\epsilon_{\mathrm{prec}}\right. max[h(x), max[g(x),ρμ] ]<ϵcons,xLρ(x,λ,μ)<ϵprec

   同样,当满足下式时,即增广拉格朗日关于x的梯度小于迭代的KKT残差的常数倍的衰减时,内层循环停止

   ∥ ∇ x L ρ ( x , λ , μ ) ∥ ∞ < ξ k min ⁡ [ 1 , max ⁡ [ ∥ h ( x ) ∥ ∞ , ∥ max ⁡ [ g ( x ) , − μ ρ ] ∥ ∞ ] ] with positive  ξ k converging to  0 \left.\|\nabla_x\mathcal{L}_\rho(x,\lambda,\mu)\|_\infty<\xi^k\min\left[1,\max\left[\|h(x)\|_\infty,\right\|\max\left[g(x),-\frac\mu\rho\right]\|_\infty\right]\right]\text{ with positive }\xi^k\text{ converging to }0 xLρ(x,λ,μ)<ξkmin[1,max[h(x),max[g(x),ρμ]]] with positive ξk converging to 0

在这里插入图片描述


   参考资料:

   1、数值最优化方法(高立 编著)

   2、机器人中的数值优化

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

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

相关文章

Stable Diffusion 免费升级 SDXL 1.0,哪些新特性值得关注?体验如何?5 分钟带你体验!

一、引言 7 月 26 日&#xff0c;Stability AI 发布了 SDXL 1.0&#xff0c;号称目前为止&#xff0c;最厉害的开放式图像生成大模型。 它到底有没有网上说的那么炸裂&#xff1f;真的已经实现了像 midjourney 一样 靠嘴出图 的功能吗&#xff1f;相对于之前的版本&#xff0c;…

专业的视觉特效处理包,FxFactory 8 Pro for Mac助您打造精彩视频

FxFactory 8 Pro for Mac是一款强大的视觉特效处理包&#xff0c;专门为Mac用户设计。它集成了超过200种高质量的视觉效果和过渡效果&#xff0c;可以轻松地应用于各种视频项目中。该软件提供了一个直观的界面&#xff0c;用户可以通过简单拖放操作将特效应用到视频片段上。它支…

oracle将一个用户的表复制到另一个用户

注&#xff1a;scott用户和scott用户下的源表&#xff08;EMP&#xff09;本身就有&#xff0c;无需另行创建。 GRANT SELECT ON SCOTT.emp TO BI_ODSCREATE TABLE ODS_EMP AS SELECT * FROM SCOTT.emphttp://www.bxcqd.com/news/77615.html SQL语句查询要修改密码的用户…

逻辑回归Logistic

回归 概念 假设现在有一些数据点&#xff0c;我们用一条直线对这些点进行拟合&#xff08;这条直线称为最佳拟合直线&#xff09;&#xff0c;这个拟合的过程就叫做回归。进而可以得到对这些点的拟合直线方程。 最后结果用sigmoid函数输出 因此&#xff0c;为了实现 Logisti…

树的引进以及二叉树的基础讲解——【数据结构】

W...Y的主页 &#x1f60a; 代码仓库分享 &#x1f495; 当我们学习完前面的数据结构&#xff0c;难度也就会上升&#xff0c;但是这个也是非常重要的数据结构。今天我们来学习一种新的数据类型——树。 目录 树的概念以及结构 树的概念 树的相关概念 树的表示 树在实…

Socks5 与 HTTP 代理在网络安全中的应用

目录 Socks5和HTTP代理在网络安全中的应用。 Socks5代理和HTTP代理的优点和缺点。 选择合适的代理IP需要考虑的因素&#xff1a; 总结 在网络安全领域中&#xff0c;Socks5和HTTP代理都扮演着重要的角色。作为两种不同的代理技术&#xff0c;它们在网络安全中的应用各有特点…

02 CSS技巧

02 CSS技巧 clip-path 自定义形状&#xff0c;或者使用自带的属性画圆等circle HTML结构 <body><div class"container"></div> </body>CSS结构 使用*polygon*自定义形状 .container {width: 300px;height: 300px;background-color: re…

建站系列(三)--- 网络协议

目录 相关系列文章前言一、定义二、术语简介三、协议的组成要素四、网络层次划分五、常见网络协议划分六、常用协议介绍&#xff08;一&#xff09;TCP/IP&#xff08;二&#xff09;HTTP协议&#xff08;超文本传输协议&#xff09;&#xff08;三&#xff09;SSH协议 相关系列…

Python小知识 - 如何使用Python进行机器学习

如何使用Python进行机器学习 Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。 机器学习是人工智能的一个分支&#xff0c;是让计算机自动“学习”。学习的过程是从经验E中获得知识K。经验E可以是一个数据集&#xff0c;比如一个图像数据集。知识K可以是计算机…

【系统设计系列】 负载均衡和反向代理

系统设计系列初衷 System Design Primer&#xff1a; 英文文档 GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards. 中文版&#xff1a; https://github.com/donnemart…

运算符重载(个人学习笔记黑马学习)

1、加号运算符重载 #include <iostream> using namespace std; #include <string>//加号运算符重载 class Person { public://1、成员函数重载号//Person operator(Person& p) {// Person temp;// temp.m_A this->m_A p.m_A;// temp.m_B this->m_B p…

【算法】快速排序 详解

快速排序 详解 快速排序1. 挖坑法2. 左右指针法 &#xff08;Hoare 法&#xff09;3. 前后指针法4. 快排非递归 代码优化 排序&#xff1a; 排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&…

docker介绍和安装

docker安装 下载Docker依赖组件 yum -y install yum-utils device-mapper-persistent-data lvm2 设置下载Docker的镜像源为阿里云 yum-config-manager --add-repo http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo 安装Docker服务 yum -y install docker-ce 安…

OpenCV项目实战(1)— 如何去截取视频中的帧

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。针对一段视频&#xff0c;如何去截取视频中的帧呢&#xff1f;本节课就给大家介绍两种方式&#xff0c;一种方式是按一定间隔来截取视频帧&#xff0c;另一种方式是截取视频的所有帧。希望大家学习之后能够有所收获&#x…

计算机网络概述

目录 一、计算机网络的作用及互联网概述 1.1计算机网络在信息时代中的作用 1.2基本概念 1.3互联网基础架构发展三个阶段 1.4互联网的标准化工作 二、互联网的组成 2.1互联网组成 2.2互联网的边缘部分 2.3互联网的核心部分 三、计算机网络的类别 3.1计算机网络的定义:…

yapi以及gitlab的容器化部署

yapi部署&#xff1a; https://blog.csdn.net/Chimengmeng/article/details/132074922 gitlab部署 使用docker-compose.yml version: 3 services: web: image: twang2218/gitlab-ce-zh:10.5 restart: always hostname: 192.168.xx.xx environm…

企业架构LNMP学习笔记19

Nginx 第三方模块的使用&#xff1a; Nginx官方没有的功能&#xff0c;开源开发人员定制开发了一些功能&#xff0c;把代码公布出来&#xff0c;可以通过编译加载第三方模块的方式&#xff0c;使用新功能。 NGINX 3rd Party Modules | NGINX shell > tar xvf ngx-fancyinde…

IDEA中的MySQL数据库所需驱动包的下载和导入方法

文章目录 下载驱动导入方法 下载驱动 MySQL数据库驱动文件下载方法&#xff1a; 最新版的MySQL版本的驱动获取方法&#xff0c;这个超链接是下载介绍的博客 除最新版以外的MySQL版本的驱动获取方法&#xff0c;选择Platform Independent&#xff0c;选择第二个zip压缩包虾藻…

浅谈redis未授权漏洞

redis未授权漏洞 利用条件 版本比较高的redis需要修改redis的配置文件&#xff0c;将bind前面#注释符去掉&#xff0c;将protected-mode 后面改为no 写入webshell config get dir #查看redis数据库路径 config set dir web路径# #修改靶机Redis数据库路径 config set dbfilen…

QT QTabWidget 控件 使用详解

本文详细的介绍了QTabWidget控件的各种操作&#xff0c;例如&#xff1a;新建界面、设置页面名字、设置提示信息、设置页面激活、设置标题栏位置、设置页面关闭按钮、设置页面关闭按钮、获取页面下标、获取页面总数、清空所有页面、删除某个页面、设置拖拽移动、设置显示页面、…