经典的SDR算法: 用半正定松弛法 ( Semidefinite Relaxation) 求解二次优化问题
前言
本文是博主对于 Zhi-quan Luo 老师的经典著作 《Semidefinite Relaxation of Quadratic Optimization Problems》 的读书笔记,希望可作为对全文以中文形式的核心梳理。
单刀直入
首先, Semidefinite Relaxation (SDR) 适用的问题可以写为如下形式:
minx∈RnxTCxs.t. xTAix⊵ibi,i=1,…,m(1)\begin{aligned} \min _{x \in \mathbb{R}^{n}} & \;\;x^{T} C x \\ \text { s.t. } & x^{T} A_{i} x \unrhd_{i} b_{i}, \quad i=1, \ldots, m \end{aligned}\tag{1} x∈Rnmin s.t. xTCxxTAix⊵ibi,i=1,…,m(1)
有几个注意点:
- 暂时定义在实数域上, 但复数域有类似的结论。
- ⊵i\unrhd_{i}⊵i 表示 ≥\ge≥, ≤\le≤, === 的 其中之一。也就是说, 只要限制条件是二次约束即可。
- CCC, AiA_iAi 都是对称矩阵。 即, C,A1,…,Am∈SnC, A_{1}, \ldots, A_{m} \in \mathbb{S}^{n}C,A1,…,Am∈Sn。
显然, 目标函数和限制条件中都有两个xxx, 因此这类问题也被称为 二次约束二次规划 (quadratically
constrained quadratic programs, QCQP) 问题。 需要注意的是, 这并不是一个凸问题。 因为 xTAix>0x^{T} A_{i} x>0xTAix>0 和 xTAix=0x^{T} A_{i} x=0xTAix=0 都并非一个凸集。
而SDR方法的目的就是将问题转化为一个凸问题从而求解。
我们引入一个新的变量 X=xxTX = xx^TX=xxT, 并以此为优化变量, 那么问题(1)可以被写为:
minX∈SnTr(CX)s.t. Tr(AiX)⊵ibi,i=1,…,m,X⪰0,rank(X)=1(2)\begin{aligned} \min _{X \in \mathbb{S}^{n}} & \operatorname{Tr}(C X) \\ \text { s.t. } & \operatorname{Tr}\left(A_{i} X\right)\unrhd_{i} b_{i}, \quad i=1, \ldots, m, \\ & X \succeq 0, \operatorname{rank}(X)=1 \end{aligned}\tag{2} X∈Snmin s.t. Tr(CX)Tr(AiX)⊵ibi,i=1,…,m,X⪰0,rank(X)=1(2)
详细解释一下这一步的转化:
- 注意到 (1) 的 目标函数 xTCxx^TCxxTCx显然是一个标量。 而标量可以看成一个 1×11\times 11×1的矩阵, 且迹等于本身。 即 tr(xTCx)=xTCx\mathrm{tr}(x^TCx)=x^TCxtr(xTCx)=xTCx。 而根据迹的性质, 有 tr(AB)=tr(BA)\mathrm{tr}(AB) = \mathrm{tr}(BA)tr(AB)=tr(BA)。 也就是说, tr(xTCx)=tr(CxxT)=tr(CX)\mathrm{tr}(x^TCx)=\mathrm{tr}(Cxx^T)=\mathrm{tr}(CX)tr(xTCx)=tr(CxxT)=tr(CX)。 这也就变成了 (2)中的目标函数。 那么 (2) 中的限制条件,也就可以根据相同的变换轻易得到。
- 相比于(1), (2)中多了两个限制条件, 这是由于 X=xxTX = xx^TX=xxT 引入的。 显然rank(X)=1\operatorname{rank}(X)=1rank(X)=1, 因为XXX的所有列都线性相关。 也因此,只有一个特征值等于 xTxx^TxxTx,显然是大于0的,所以肯定是半正定矩阵。
这一步转化的意义在哪呢?
事实上, 除了 rank(X)=1\operatorname{rank}(X)=1rank(X)=1 这个限制以外, 整个问题是一个凸问题。 由于迹函数是个仿射变换, 很容易证明其凸性。 而半正定约束也显然是个凸集, 因为两个半正定矩阵的和一定也是一个半正定矩阵。
因此, 工程上很自然的想法就是, **暂时得忽略 该约束rank(X)=1\operatorname{rank}(X)=1rank(X)=1, 并通过凸优化方法 (事实上以CVX工具包为代表的内点法数值算法)来求解出一个解 XXX. 这一步大家百度下CVX的使用就可以了,没有任何障碍。
而问题的关键点在于,始终我们问题需要得到的是xxx,而非XXX。 如果通过凸优化求出的XXX刚好就是一个rank(X)=1\operatorname{rank}(X)=1rank(X)=1的矩阵,那么xxx可以直接得到(对X做个SVD或EVD啥的都可以)。 但更多时候, XXX没有道理是一个 rank(X)=1\operatorname{rank}(X)=1rank(X)=1的矩阵。 也就是说, 根本不存在一个xxx, 使得 X=xxTX=xx^TX=xxT。
工程实现
那么SDR要解决的另一个问题就是如何从XXX中恢复出一个满足原问题约束的xxx。
出于工程实现角度的思路其实非常清晰, 我们可以直接求解下面的问题以获得 xxx:
minx∥X−xxT∥F2(3)\min_x \;\; \|X-xx^T\|_F^2\tag{3}xmin∥X−xxT∥F2(3)
即找一个最接近XXX的 xxTxx^TxxT。 这个问题很经典了,而他的闭式解就是, xxx是XXX的最大特征向量乘以最大特征值的平方根。 即, 将XXX的特征值分解表示为:
X⋆=∑i=1rλiqiqiTX^{\star}=\sum_{i=1}^{r} \lambda_{i} q_{i} q_{i}^{T} X⋆=i=1∑rλiqiqiT
其中λi\lambda_iλi, qiq_iqi,代表第iii大的特征值和对应的特征向量。 那么(3)的最优解 xxx就是 x~=λ1q1\tilde{x}=\sqrt{\lambda_{1} }q_1x~=λ1q1。
但是,问题又出现了! 虽然XXX满足了(2)中的所有的约束, 但由于在这一步中,(3)中求得的xxx是一个近似的结果。 此时得到的xxx,不一定满足原问题(1)中的约束了! 也就是说, 经过一顿转化之后, 求得的xxx并不是原问题的可行解!此时怎么办呢? 解决方案也非常符合工程思维:直接从xxx出发找一个离xxx最近的可行解, 这就是SDR的最终结果。
最后提两点:
- 直接从xxx出发找一个离xxx最近的可行解, 这本身就是一个独立的问题, 具体问题具体分析,后面会给一个具体的例子。
- 毫无疑问,在SDR中有许许多多的近似,工程处理。 因此, SDR的解远非全局最优解。
具体实例
为节约篇幅, 本文只讲一个例子。 也不是论文中给出的, 而是HBF混合波束成形的经典论文 《Alternating Minimization Algorithms for Hybrid Precoding in Millimeter Wave MIMO Systems》中的 一个使用。 有兴趣的读者也可以去看 SDR论文的原文, 接触更多的例子。
以HBF为例, 作者将问题转化为了如下的形式, 熟悉HBF的读者应该很亲切了:
minimizeFBB∥Fopt−FRFFBB∥F2subject to ∥FBB∥F2=NRFtNsNt(4)\begin{array}{ll} \underset{\mathbf{F}_{\mathrm{BB}}}{\operatorname{minimize}} & \left\|\mathbf{F}_{\mathrm{opt}}-\mathbf{F}_{\mathrm{RF}} \mathbf{F}_{\mathrm{BB}}\right\|_{F}^{2} \\ \text { subject to } & \left\|\mathbf{F}_{\mathrm{BB}}\right\|_{F}^{2}=\frac{N_{\mathrm{RF}}^{t} N_{s}}{N_{t}} \end{array}\tag{4} FBBminimize subject to ∥Fopt−FRFFBB∥F2∥FBB∥F2=NtNRFtNs(4)
作者使用了 SDR作为一种算法来求解该问题。 那么首先, 为什么会选用 SDR呢? 因为可以看到, 目标函数和限制条件都是二次形式, 这就是我们之前说到的SDR目标问题:QCQP问题。 接下来,通过这个例子展示如果实战使用SDR。
首先, 刚刚介绍SDR时都是向量形式的变量xxx, 而(4)中都是矩阵,不利于处理, 因此第一步先进行列化:
∥Fopt−FRFFBB∥F2=∥vec(Fopt−FRFFBB)∥22=∥vec(Fopt)−vec(FRFFBB)∥22=∥vec(Fopt)−(INs⊗FRF)vec(FBB)∥22.\begin{aligned} \left\|\mathbf{F}_{\mathrm{opt}}-\mathbf{F}_{\mathrm{RF}} \mathbf{F}_{\mathrm{BB}}\right\|_{F}^{2} &=\left\|\operatorname{vec}\left(\mathbf{F}_{\mathrm{opt}}-\mathbf{F}_{\mathrm{RF}} \mathbf{F}_{\mathrm{BB}}\right)\right\|_{2}^{2} \\ &=\left\|\operatorname{vec}\left(\mathbf{F}_{\mathrm{opt}}\right)-\operatorname{vec}\left(\mathbf{F}_{\mathrm{RF}} \mathbf{F}_{\mathrm{BB}}\right)\right\|_{2}^{2} \\ &=\left\|\operatorname{vec}\left(\mathbf{F}_{\mathrm{opt}}\right)-\left(\mathbf{I}_{N_{s}} \otimes \mathbf{F}_{\mathrm{RF}}\right) \operatorname{vec}\left(\mathbf{F}_{\mathrm{BB}}\right)\right\|_{2}^{2} . \end{aligned} ∥Fopt−FRFFBB∥F2=∥vec(Fopt−FRFFBB)∥22=∥vec(Fopt)−vec(FRFFBB)∥22=∥vec(Fopt)−(INs⊗FRF)vec(FBB)∥22.
进行变量代换后 (f=vec(Fopt)\mathbf{f}=\operatorname{vec}\left(\mathbf{F}_{\mathrm{opt}}\right)f=vec(Fopt),b=vec(FBB)\mathbf{b}=\operatorname{vec}\left(\mathbf{F}_{\mathrm{BB}}\right)b=vec(FBB) and E=INs⊗FRF.\mathbf{E}=\mathbf{I}_{N_{s}} \otimes \mathbf{F}_{\mathrm{RF}} .E=INs⊗FRF.,原问题可写为:
minimizeb∥tf−Eb∥22subject to {∥b∥22=NRFtNsNtt2=1(5)\begin{aligned} &\underset{\mathbf{b}}{\operatorname{minimize}} \quad\|t \mathbf{f}-\mathbf{E b}\|_{2}^{2} \\ &\text { subject to } & \left\{\begin{array}{l} \|\mathbf{b}\|_{2}^{2}=\frac{N_{\mathrm{RF}}^{t} N_{s}}{N_{t}} \\ t^{2}=1 \end{array}\right. \end{aligned}\tag{5} bminimize∥tf−Eb∥22 subject to {∥b∥22=NtNRFtNst2=1(5)
**这里必须强调的一点是, 作者引入了 ttt这样一个辅助变量。这是SDR的常见技巧之一!**接下来阐释这个ttt的作用。
- 首先, 对于原问题的影响上:以(5)求解之后, 如果得到t=1t=1t=1, 那么f\mathbf{f}f就是(4)的最优解。 而如果t=−1t=-1t=−1, 那么f\mathbf{f}f就是(4)的最优解的相反数, 仍等效于得到了最优解。
- 其次, 加入这个ttt辅助变量后, 可以更好地将(5)写成SDR的标准形式。 继续看:
目标函数可以写为:
∥tf−Eb∥22=[bHt][EHE−EHf−fHEfHf][bt]\|t \mathbf{f}-\mathbf{E b}\|_{2}^{2}=\left[\begin{array}{ll} \mathbf{b}^{H} & t \end{array}\right]\left[\begin{array}{cc} \mathbf{E}^{H} \mathbf{E} & -\mathbf{E}^{H} \mathbf{f} \\ -\mathbf{f}^{H} \mathbf{E} & \mathbf{f}^{H} \mathbf{f} \end{array}\right]\left[\begin{array}{l} \mathbf{b} \\ t \end{array}\right] ∥tf−Eb∥22=[bHt][EHE−fHE−EHffHf][bt]
注意到: 此时令 y=[bt]\mathbf{y}=\left[\begin{array}{l}\mathbf{b} \\ t\end{array}\right]y=[bt], C=[EHE−EHf−fHEfHf]\mathbf{C}=\left[\begin{array}{cc}\mathbf{E}^{H} \mathbf{E} & -\mathbf{E}^{H} \mathbf{f} \\ -\mathbf{f}^{H} \mathbf{E} & \mathbf{f}^{H} \mathbf{f}\end{array}\right]C=[EHE−fHE−EHffHf], 上式就等于 yHCy\mathbf{y}^H\mathbf{C}\mathbf{y}yHCy,而C\mathbf{C}C是个显然的半正定矩阵:C=[E,−f]H[E,−f]\mathbf{C}=[\mathbf{E}, -\mathbf{f}]^H[\mathbf{E}, -\mathbf{f}]C=[E,−f]H[E,−f],一个矩阵的共轭转置乘以本身肯定是半正定矩阵(可从特征值角度得证)。
那么(5)中的另外两个约束又可以转换为:
∥b∥22=[bHt][INRFtNs000][bt]=NRFtNsNtt2=[bHt][0NRFtNs001][bt]=1\begin{aligned}\|\mathbf{b}\|_{2}^{2} &=\left[\begin{array}{ll}\mathbf{b}^{H} & t\end{array}\right]\left[\begin{array}{cc}\mathbf{I}_{N_{\mathrm{RF}}^{t}} N_{s} & 0 \\ \mathbf{0} & 0\end{array}\right]\left[\begin{array}{c}\mathbf{b} \\ t\end{array}\right]=\frac{N_{\mathrm{RF}}^{t} N_{s}}{N_{t}} \\ t^{2} &=\left[\begin{array}{ll}\mathbf{b}^{H} & t\end{array}\right]\left[\begin{array}{cc}0_{N_{\mathrm{RF}}^{t}} N_{s} & 0 \\ 0 & 1\end{array}\right]\left[\begin{array}{l}\mathbf{b} \\ t\end{array}\right]=1 \end{aligned}∥b∥22t2=[bHt][INRFtNs000][bt]=NtNRFtNs=[bHt][0NRFtNs001][bt]=1
大家可以细致体会下, 为什么SDR可以应用广泛的原因, 因为大部分二次约束都可以通过稍加构造就写成QCQP的形式。
那么,最后经过一步变量代换:
y=[bt],Y=yyH,C=[EHE−EHf−fHEfHf]A1=[INRFtNs000],A2=[0NRFtNs001]\begin{aligned} &\mathbf{y}=\left[\begin{array}{c} \mathbf{b} \\ t \end{array}\right], \mathbf{Y}=\mathbf{y} \mathbf{y}^{H}, \mathbf{C}=\left[\begin{array}{cc} \mathbf{E}^{H} \mathbf{E} & -\mathbf{E}^{H} \mathbf{f} \\ -\mathbf{f}^{H} \mathbf{E} & \mathbf{f}^{H} \mathbf{f} \end{array}\right] \\ &\mathbf{A}_{1}=\left[\begin{array}{cc} \mathbf{I}_{N_{\mathrm{RF}}^{t} N_{s}} & 0 \\ \mathbf{0} & 0 \end{array}\right], \mathbf{A}_{2}=\left[\begin{array}{cc} \mathbf{0}_{N_{\mathrm{RF}}^{t}} N_{s} & 0 \\ \mathbf{0} & 1 \end{array}\right] \end{aligned} y=[bt],Y=yyH,C=[EHE−fHE−EHffHf]A1=[INRFtNs000],A2=[0NRFtNs001]
(5)终于可写为SDR的标准形式:
minimizeY∈Hn(TrCY)subject to {Tr(A1Y)=NRFtNsNtTr(A2Y)=1Y⪰0,rank(Y)=1\begin{aligned} &\underset{\mathbf{Y} \in \mathbb{H}^{n}}{\operatorname{minimize}} \underset{\operatorname{Tr}}(\mathbf{C Y}) \\ &\text { subject to }\left\{\begin{array}{l} \operatorname{Tr}\left(\mathbf{A}_{1} \mathbf{Y}\right)=\frac{N_{\mathrm{RF}}^{t} N_{s}}{N_{t}} \\ \operatorname{Tr}\left(\mathbf{A}_{2} \mathbf{Y}\right)=1 \\ \mathbf{Y} \succeq 0, \operatorname{rank}(\mathbf{Y})=1 \end{array}\right. \end{aligned} Y∈HnminimizeTr(CY) subject to ⎩⎨⎧Tr(A1Y)=NtNRFtNsTr(A2Y)=1Y⪰0,rank(Y)=1
通过松弛掉最后一个约束, 问题就可以通过凸优化直接求解。
最后必须强调, 如何从Y\mathbf{Y}Y中恢复出b\mathbf{b}b(即原问题真正的目标)。 首先,用特征值分解得到y\mathbf{y}y。 此时 y\mathbf{y}y的最后一个元素大概率不是1,而按照定义案例ttt应该必须是1或−11或-11或−1。此时处理方式很简单, 直接对最后一个元素取正负号, 强行归成111或−1-1−1即可。 而b\mathbf{b}b( y\mathbf{y}y的前面的元素)也不符合∥b∥22=NRFtNsNt\|\mathbf{b}\|_{2}^{2}=\frac{N_{\mathrm{RF}}^{t} N_{s}}{N_{t}}∥b∥22=NtNRFtNs的约束,此时的做法就是将b\mathbf{b}b强行归一化成∥b∥22=NRFtNsNt\|\mathbf{b}\|_{2}^{2}=\frac{N_{\mathrm{RF}}^{t} N_{s}}{N_{t}}∥b∥22=NtNRFtNs即可。 操作非常简单, 那么其对应的思路就是我们在上文中提到的:当得到了xxx后, 以离xxx最近的可行解作为原问题的解。
实例2
再举个近期的实例好了。 是来自于 智能反射面相关paper 《Intelligent Reflecting Surface Enhanced Wireless
Network: Joint Active and Passive Beamforming Design》中, 对于passive beamforming 的设计, 同样使用了 SDR 算法。
原问题可以转化为这样的形式:
maxvvHΦΦHv+vHΦhd+hdHΦHvs.t. ∣vn∣=1,∀n=1,⋯,N\begin{array}{cl} \max _{\boldsymbol{v}} & \boldsymbol{v}^{H} {\Phi} \Phi^{H} \boldsymbol{v}+\boldsymbol{v}^{H}{\Phi} \boldsymbol{h}_{d}+\boldsymbol{h}_{d}^{H}{\Phi}^{H} \boldsymbol{v} \\ \text { s.t. } & \left|v_{n}\right|=1, \forall n=1, \cdots, N \end{array} maxv s.t. vHΦΦHv+vHΦhd+hdHΦHv∣vn∣=1,∀n=1,⋯,N
简单而言, 就是其余参数都已给定, 要求优化向量v\mathbf{v}v, 其中v\mathbf{v}v的每个元素需要满足恒模约束。
那么同样的, 可以通过引入辅助变量 ttt, 把问题转换为 齐次的 QCQP 问题:
maxv‾v‾HRv‾s.t. ∣vˉn∣=1,∀n=1,⋯,N+1\begin{array}{cl} \max _{\overline{\boldsymbol{v}}} & \overline{\boldsymbol{v}}^{H} \boldsymbol{R} \overline{\boldsymbol{v}} \\ \text { s.t. } & \left|\bar{v}_{n}\right|=1, \forall n=1, \cdots, N+1 \end{array} maxv s.t. vHRv∣vˉn∣=1,∀n=1,⋯,N+1
其中,
R=[ΦΦHΦhdhdHΦH0],v‾=[vt]\boldsymbol{R}=\left[\begin{array}{cc} \boldsymbol{\Phi} \Phi^{H} & \mathbf{\Phi} \boldsymbol{h}_{d} \\ \boldsymbol{h}_{d}^{H} \boldsymbol{\Phi}^{H} & 0 \end{array}\right], \quad \overline{\boldsymbol{v}}=\left[\begin{array}{l} v \\ t \end{array}\right] R=[ΦΦHhdHΦHΦhd0],v=[vt]
那么根据SDR的方法, 令 V=vˉvˉH\mathbf{V}=\bar{\mathbf{v}}\bar{\mathbf{v}}^HV=vˉvˉH, 就可以将问题转化为:
maxVtr(RV)s.t. Vn,n=1,∀n=1,⋯,N+1,V⪰0\begin{array}{ll} \max _{\boldsymbol{V}} & \operatorname{tr}(\boldsymbol{R} \boldsymbol{V}) \\ \text { s.t. } & \boldsymbol{V}_{n, n}=1, \forall n=1, \cdots, N+1, \\ & \boldsymbol{V} \succeq 0 \end{array} maxV s.t. tr(RV)Vn,n=1,∀n=1,⋯,N+1,V⪰0
当然这里同样的放松掉了rank(V)=1\operatorname{rank}(\boldsymbol{V})=1rank(V)=1这一约束。 可以看到, 上述问题已经是凸问题了, 因为非凸的恒模约束经过转化后变成了 Vn,n=1,∀n=1,⋯,N+1\boldsymbol{V}_{n, n}=1, \forall n=1, \cdots, N+1Vn,n=1,∀n=1,⋯,N+1, 这无疑是一个凸约束 (可以用凸集的定义轻松得证)。
因此, SDR也是处理恒模约束的一种思路。
注意, 这个例子的后续处理,也是从SDR解V\mathbf{V}V获得原问题可行解的一种经典思路:SDR + Gaussian randomization. 这种处理相比于上面提到的直接寻找欧氏距离最近的v\mathbf{v}v,会有通过复杂度提升换来的一定性能增益。
首先, 对V\mathbf{V}V进行 EVD分解, 得到V=UΣUH\boldsymbol{V}=\boldsymbol{U} \boldsymbol{\Sigma} \boldsymbol{U}^{H}V=UΣUH, 此时, 我们令 v‾=UΣ1/2r\overline{\boldsymbol{v}}=\boldsymbol{U} \boldsymbol{\Sigma}^{\mathbf{1} / \mathbf{2}} \boldsymbol{r}v=UΣ1/2r, 其中r∈CN(0,IN+1)\boldsymbol{r} \in \mathcal{C} \mathcal{N}\left(\mathbf{0}, \boldsymbol{I}_{N+1}\right)r∈CN(0,IN+1)。 注意, 如果是上面提到的普通SDR方法, r=[1,0,⋯,0]\mathbf{r}=[1, 0, \cdots, 0]r=[1,0,⋯,0], 即vˉ\bar{\mathbf{v}}vˉ等于最大特征向量。 而这里,引入了一个随机变量, 使得我们尝试更多种的vˉ\bar{\mathbf{v}}vˉ, 再选出使得目标函数值最大的vˉ\bar{\mathbf{v}}vˉ作为最优解。 可以看到, 这种方法其实就是通过遍历更多解来获得更好的性能。 最后, 还是把得到的vˉ\bar{\mathbf{v}}vˉ转换为可行解: v=ejarg([vˉvˉN+1](1:N))\boldsymbol{v}=e^{j \arg \left(\left[\frac{\bar{v}}{\bar{v}_{N+1}}\right]_{(1: N)}\right)}v=ejarg([vˉN+1vˉ](1:N))。
代码
关于SDR 更细节一些的实现和相关代码, 在下一篇博文 经典的SDR算法(下):SDR的具体使用细节与相关代码 进行了更详细的介绍。
经典的SDR算法: 用半正定松弛法 ( Semidefinite Relaxation) 求解二次优化问题相关推荐
- 半正定松弛法(SDR)2021-11-06
@[TOC](半正定松弛法 ( Semidefinite Relaxation) 求解二次优化问题(QCQP)) SDR适用问题的表现形式 minx∈RnxTCxs.t.xTAix⊵ibi,i=1, ...
- SDP半正定规划的低复杂度求解:基于块坐标下降(Block Coordinate Descent)
前言 之前的几篇博客 经典的SDR算法: 用半正定松弛法 ( Semidefinite Relaxation) 求解二次优化问题 和 经典的SDR算法(下):SDR的具体使用细节与相关代码 中介绍了一 ...
- UA MATH567 高维统计II 随机向量6 亚高斯随机向量的应用: 半正定规划
UA MATH567 高维统计II 随机向量6 亚高斯随机向量的应用: 半正定规划 半正定规划(semidefinite programming, SDP)是凸优化的一个分支: maxX⟨A,X⟩s ...
- 优化问题-半正定规划(Semi-Definite Program, SDP)
文章目录 背景 SDP的两种形式 QCQP和SOCP转化为SDP SDP在组合优化中的应用 SDR的一些例子 下行发送功率最小化 背景 半正定规划(Semi-Definite Program, SDP ...
- UA MATH567 高维统计IV Lipschitz组合9 矩阵函数、半正定序与迹不等式
UA MATH567 高维统计IV Lipschitz组合9 矩阵函数.半正定序与迹不等式 矩阵函数 半正定序(positive semi-definite order, PSD order) 迹不等 ...
- 【数理知识】标量函数、二次型函数、矩阵、正定负定半正定半负定
正定 负定 半正定 半负定 正定 负定 半正定 半负定 1. 标量函数 1.1 正定 1.2 半正定 1.3 负定 1.4 半负定 1.5 不定 2. 二次型函数 3. 矩阵 3.1 负定矩阵 3.2 ...
- 【机器学习入门】图解超经典的KNN算法
出品:Python数据之道(ID:PyDataLab) 作者:Peter,来自读者投稿 编辑:Lemon 图解超经典的KNN算法 本文中介绍的机器学习算法中的一种监督学习的算法:KNN 算法,全称是 ...
- python用tsne降维_哈工大硕士实现了 11 种经典数据降维算法,源代码库已开放
网上关于各种降维算法的资料参差不齐,同时大部分不提供源代码.这里有个 GitHub 项目整理了使用 Python 实现了 11 种经典的数据抽取(数据降维)算法,包括:PCA.LDA.MDS.LLE. ...
- ncut算法matlab实现,ncut_multiscale_1_6 经典的图像分割算法 的Matlab代码。 238万源代码下载- www.pudn.com...
文件名称: ncut_multiscale_1_6下载 收藏√ [ 5 4 3 2 1 ] 开发工具: matlab 文件大小: 587 KB 上传时间: 2015-04-17 下载次数: ...
最新文章
- 诺基亚7plus更新android10,诺基亚发布第五次Android 10更新 诺基亚7+可升级
- 【Python】编程笔记1
- 3·15,你“信”了吗
- 最高法院明确反向工程合法 腾讯诉PICA恐生变
- 深度学习精度提升 3 个小妙招:模型集成、知识蒸馏、自蒸馏
- 2018 EC Final(西安)小结
- USACO 2006 Open, Problem. The Country Fair 动态规划
- python绘制四边螺旋线代_Python绘制3d螺旋曲线图实例代码
- webAppbuilder微件使用教程1 快速入门
- tidyverse —— readxl包
- Brettle.Web.NeatUpload.dll大文件上传控件使用详解
- Android中View的绘制过程 onMeasure方法简述 附有自定义View例子
- CLRvia3读书笔记
- 任正非表示华为可以向美国企业转让5G技术;谷歌同意支付5亿欧元买断与法国纠纷;京东公布iPhone11系列预售战报……...
- matlab设置固定的窗宽窗位,如何设定窗宽窗位,附正常人体组织CT值
- NEFU 大一寒假2.15考试 2020.02.15
- 巧用友盟UShare、ULink玩转裂变营销
- DIY钢铁侠电动开合
- 一张表格搞懂那些特殊的IP地址
- eve计算机配置要求,玩EVE的电脑应该怎么配置?
热门文章
- 一元三次方程求根公式
- 2020ndroid开发爆款书籍推荐:从小白—Android高级工程师系列学习路线书籍介绍
- csp试题2:消除类游戏
- PhotoShop 之路径和选区的转换
- 用流程图、NS图、伪代码分别描述解决如下实际问题的算法。有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换
- Ubuntu下安装RealtekRTL8125网卡驱动
- 关于私有云、专有云、公有云、SaaS、独立部署、多租户
- python画图添加数据标签_Matplotlib:plt.text()给图形添加数据标签
- origin图上显示数据标签_半分钟教程:Origin 中如何设置非等距 X 轴刻度
- python线上编程-线上的编程课哪家好