3 Decomposition Methods

分解方法是解决问题的一般方法,其将问题分解为更小的问题并且并行地或者顺序地解决每个更小的问题(当采用顺序的方式时,优点是问题的复杂性呈超线性增长(more than linearly)。
如果问题在单步操作中分解有效,那么我称该问题为(块)可分的,或者容易并行化的。例如,假定变量x可以分解为子向量 x1,...,xk ,目标函数是每个关于 xi 函数的和。每个约束仅涉及到子矢量 x1,...,xk 中的一个。那么显然,我们可以分别求解每个子问题(并性地),然后重组构成解x。当然这是一个容易并且无趣的例子。
更有趣的情况出现在当两个子矢量之间存在某种耦合或者交叉时,因此这一的问题不能独立的求解。对于这些情况,存在一些技术能够通过迭代的求解一系列的更小的问题来求解。存在很多方式可以做到这一点。在本文中,我们考虑一些简单的例子来阐这些思想。
在第一节,我们描述最简单地分解方法,原始分解。第二节描述对偶分解.在第4,5节探索一般的分解结构,和相关联的分解方法。第六节详细的描述两个更特殊的例子。

1 Primal decompositon

我们首先考虑第一个例子:无约束的最小化问题。形式为:

minimizef(x)=f1(x1,y)+f2(x2,y)(1)

其中变量 x=(x1,x2,y) 。虽然在这里维度不重要,但是将 x1 x2 认为有一个相当高的维度,以及y是相当小的维度是很重要的。目标函数几乎是关于 x1 x2 是块可分的。实际上,如果我们固定子矢量y,问题变成用 x1 x2 是可分的。因此,我们可以独立的通过求解这两个子问题来求解总的问题。出于这个元音,y称为 复杂变量。因为正是这个变量连接了两个子问题。我们可以将 x1( x2 )看作是第一(二)个问题的私有变量或者局部变量,将y看作两个子问题的公有变量或者接口变量或者边界变量。
通过观察,发现当y固定的时候,问题可以进行分解,这给出了一个求解问题(1)的思路。令 ϕ1(y) 表示下面问题的最优解:
minimizex1f1(x1,y)(2)

同样地,令 ϕ2(y) 表示下面问题的最优解:
minimizex2f1(x2,y)(3)

(注意,如果函数 f1 f2 是凸函数(是关于x_1和y),那么 ϕ1 ϕ2 也是凸函数)。我们称问题(2)为子问题(1),称问题(3)为子问题(2)。
那么原问题(1)等价于问题:
minimizeyϕ1(y)+ϕ2(y)

这个问题称为主问题。如果原问题是凸的,那么主问题也是凸的。主问题的变量是原问题的复杂变量或者耦合变量。主问题的目标函数是两个子问题最优值的和。
解决问题(1)的一个分解的方法是通过求解主问题来求解,即使用一个迭代的方法,比如次梯度方法。每一次迭代需要解决两个子问题来计算 ϕ1(y)ϕ2(y) ,以及它们的梯度或者次梯度。这可以通过并行来计算,但是即使通过顺序的方式计算,如果问题计算的复杂度与问题的大小称超线性增长的话,则将需要大量的存储空间。
我们先看一下如何计算 ϕ1 在y处的次梯度,并且假定问题是凸的。我们首先求解相关的子问题,即找到 x¯1(y) 使 f1(x1,y) 最小化。因此,函数 f1 存在形式为 (0,g1) 的一个次梯度,并且显然, g1 ϕ1 在y处的一个次梯度。我们可以进行同样的过程找到一个次梯度 g2ϕ2(y) ,那么 g1+g2 ϕ1+ϕ2 在y处的一个次梯度。
我们可以通过各种方法来求解主问题,包括二分法(y是1维的情况),梯度或者拟牛顿法(如果函数是可微的),次梯度方法,切平面法,或者椭球法(函数不可微的情况)。这种基本的分解方法称为原始分解,因为(某些)原变量。
当我们使用一个次梯度方法来求解主问题时,我们得到一个非常简单的原分解算法。
重复:
求解子问题(可能可以通过并行的方式)
找到 x¯1 ,最小化 f1(x1,y) ,以及一个次梯度 g1ϕ1(y)
找到 x¯2 ,最小化 f2(x2,y) ,以及一个次梯度 g21ϕ2(y)
更新复杂变量:
y:=yαk(g1+g2)
这里, αk 是步长,可以通过任意标准方式选择。
我们可以将这种分解方法解释如下。我们有两个带有私有变量或者局部变量 x1,x2 的子问题。同样,我们在两个子问题上都有复杂变量y。再主算法的每一步,复杂变量固定,这使得两个子问题可以独立的求解。从两个局部解,我们构造主问题的一个次梯度,并且使用这个次梯度来更新复杂变量,然后重复这个过程。
当主问题中使用了一个次梯度的方法,并且 ϕ1ϕ2 是可微的时,更新过程可以很容易的理解。我们将 g1,g2 解释为子问题最优值的梯度(关于y)。更新过程简单地在整个目标函数改善的方向上移动。
当含有少量的复杂变量,并且我们有好的方法或者快速的方法求解子问题时,原分解方法很有效。例如,如果其中一个子问题是二次的,我们可以解析求解。在这种情况下,最优值同样也是二次的,并且通过局部二次代价函数的一个Schur补给出。(但是,这个技巧简单,因此许多人不称其为分解方法)。
上面描述的基本的原始分解方法可以通过几个方式扩展。我们可以增加可分割的约束,即约束的形式为: x1C1,x2C2 。在这种情况下(并且或者在 domfi ,对于y的一些选择,我们可能有 ϕi(y)= (也就是所, ydomϕ 。在这种情况下,我们找到一个可以将y从 ϕ 分割出来切平面(在主算法中使用)。

1.1 简单的例子

我们用一个简单的,1维的复杂变量例子来阐述原分解。问题拥有(1)的形式,其中 f1 f2 分别是关于 x1y x2y 段线性凸函数。我们考虑特定问题的实例, x1R20,x2R20 ,并且 f1 f2 是各自的100个仿射函数的最大值。因为复杂变量y是标量,我们可以使用一个二分算法关于y求最优化。
图1展示了 ϕ1ϕ2 ,并且 ϕ1+ϕ2 是关于y的函数。该问题的在 y0.14 最优值为 p1.71 。图2展示了
最小化 ϕ1(y)+ϕ2(y) 的二分方法的过程,初始化间隔为[-1,1]。在每一步,两个子问题使用当且y值,分别的求解两个子问题。

Dual decomposition

我们可以通过引入新的变量到问题(1)的分解中,采用对偶问题。首先引入一个新的变量和等式约束,我们将问题表示为:

minimizef(x)=f1(x1,y1)+f2(x2,y2)

subject toy1=y2

我们引入了复杂变量y的一般局部版本,并且满足一致约束,即两个局部版本相等。注意到现在目标函数是关于 (x1,y1)(x2,y2) 可分的。
现在我们构造对偶问题。拉格朗日函数为:
L(x1y1,x2,y2)=f1(x1,y1)+f2(x2,y2)+vTy1vTy2

其是可分的。对偶函数为:
g(v)=g1(v)+g2(v)

其中
g1(v)=infx1,y1(f1(x1,y1)+vTy1)g2(v)=infx2,y2(f1(x2,y2)+vTy2)

注意 g1 g2 完全可以独立的计算(即并行的方式)。同时也注意, g1 g2 可以表示为函数 f1 f2 的共轭形式:
g1(v)=f1(0,v),g2(v)=2(0,v)

对偶问题是:
maximizeg1(v)+g2(v)=f1(0,v)f2(0,v)(6)

变量为v。这是对偶分解形式的主问题。使用次梯度,切平面或者其他方法求解这个主问题。
计算 g1(org2) 很容易。我们找到使得函数 f1(x1,y1)+vTy1 关于 x1,y1 最小化的 x1,y1 。那么 g1 在v处的一个次梯度通过 y¯1 给出。同样地,。我们找到使得函数 f2(x2,y2)+vTy2 关于 x2,y2 最小化的 x2,y2 。那么 g2 在v处的一个次梯度通过 y¯2 给出。这样负对偶函数 g 的一个次梯度通过 y¯2y¯1 给出,它仅仅是一致性的约束残差。
如果我们使用一个次梯度方法求解主问题,那么对偶分解算法有一个非常简单的形式。
重复:
求解子问题(可能并行的方式)
找到最小化 f1(x1,y1)+vTy1 x1 y1 。找到最小化 f2(x2,y2)vTy2 x2 y2
更新对偶变量(价格)
v:=vαk(y2y1)

这里 αk 是步长,可以通过一些方式选择。如果对偶函数g是可微的,我们可以选择一个固定的步长,并且假定其足够的小。在这种情况下,另外一个选择是在对偶目标函数上进行线性搜索。如果对偶函数是非可微的,我们可以使用一个不断减小的不可和的步长,例如 αk=α/k
在对偶分解算法的每一步,关于 p 我们有一个下界,即原问题的最优值,通过下式给出:

pg(v)=f1(x1,y1)+vTy1+f2(x2,y2)vTy2

其中 x1,y1,x2,y2 是迭代项。一般地,迭代项不是原问题的可行解,也就是说 y2y1\noteq0 (如果它们是可行的,我们有最大化的g)。
一个合理猜测的可行点可以从迭代项中构造为:
(x1,y¯),(x2,y¯)

其中 y¯=(y1+y2)/2 。换句话说,我们使用它们的平均值替代 y1 y2 (它们是不同的)。这个平均值是 (y1,y2) 到可行集 y1=y2 的投影。这给处了关于 p 的一个上界,通过下面的不等式给出:
pf1(x1,y¯)+f2(x2,y¯)

一个更好的可行点可以通过将 y1 y2 替换为平均值来找到,然后求解原分解中碰到的两个子问题(2)和(3),也就是说计算 ϕ1(y¯)+ϕ12(y¯) ,这给定边界:
pϕ1(y¯)+ϕ2(y¯).

2.1 Simple example

我们使用同样的简单的例子来阐述对偶分解。图3展示了关于v的 g1,g2 以及 g1+g2 。v的最优值是 v0.27 。图4展示了二分法求解最大化 g1(v)+g2(v) 的过程,从初始间隔为[-1,1]开始。在每一步,使用当前的价格v,来独立地求解两个子问题。我们也展示了关于 p 的两个上界。较大的(较差的)边界是 f1(x1+y¯)+f2(x2+y¯) 。较小的(较好的)边界是 ϕ1(y¯)+ϕ2(y¯) (通过求解子问题(2)和(3)获得)。

### 矩阵方法在信号处理技术中的应用 #### 压缩感知与稀疏表示 压缩感知理论依赖于线性代数和矩阵运算来实现高效的数据采集和重建。通过构建测量矩阵 $\Phi$ 和稀疏基矩阵 $\Psi$,可以将原始信号 $x$ 表达为稀疏向量的形式: $$ y=\Phi\Psi x $$ 其中 $y$ 是观测到的少量样本数据[^2]。 #### 特征提取与降维 主成分分析(PCA)是一种常用的特征提取手段,在图像识别等领域有着广泛应用。给定一组训练样本构成的数据矩阵 $X=[\vec{x}_1,\cdots ,\vec{x}_n]$ ,计算协方差矩阵并求解其最大几个特征值对应的特征向量作为新的投影方向: ```python import numpy as np from sklearn.decomposition import PCA pca = PCA(n_components=2) principalComponents = pca.fit_transform(X) ``` 这有助于降低维度的同时保留主要信息。 #### 自适应滤波器设计 自适应算法如最小均方(LMS),递归最小二乘(RLS)等都涉及到迭代更新权值向量的过程。对于输入信号序列 ${u(k)}_{k=0}^{N}$ 及期望响应${d(k)} _{ k=0 } ^ { N }$, 定义误差矢量 e(k)=d(k)-w^T u(k), 权重调整公式如下所示: $$ w(k+1)=w(k)+μ⋅e(k)⋅u(k) $$ 这里 μ 代表步长因子控制收敛速度[^3]。 #### 图像去噪 基于奇异值分解(SVD)的方法能够有效去除噪声干扰。假设含噪图片可由干净版本加上加性高斯白噪音组成,则有 Y=X+N 。通过对Y执行SVD操作得到 UΣV^H 后截断较小奇异数重构近似纯净图象 X̂ : ```matlab [U, S, V] = svd(Y); sigma_threshold = mean(diag(S)); clean_image_approximation = U * diag(max(diag(S)-sigma_threshold, 0)) * V'; ``` 这种方法利用了自然场景统计特性使得大部分能量集中在少数大奇异值上从而达到抑制随机波动的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值