这一节介绍了一些利用proximal的算法.
Proximal minimization
这个相当的简单, 之前也提过,就是一个依赖不动点的迭代方法:
有些时候不是固定的:
import numpy as np
import matplotlib.pyplot as plt
以为例
f = lambda x: x[0] ** 2 + 50 * x[1] ** 2
x = np.linspace(-40, 40, 1000)
y = np.linspace(-20, 20, 500)
X, Y = np.meshgrid(x, y) #获取坐标
fig, ax = plt.subplots()
ax.contour(X, Y, f([X, Y]), colors="black")
plt.show()
在这里插入图片描述
求解proximal可得:
def prox(v1, v2, lam):
x = v1 / (2 * lam + 1)
y = v2 / (100 * lam + 1)
return x, y
times = 50
x = 30
y = 15
lam = 0.1
process = [(x, y)]
for i in range(times):
x, y = prox(x, y, 0.1)
process.append((x, y))
process = np.array(process)
x = np.linspace(-40, 40, 1000)
y = np.linspace(-20, 20, 500)
X, Y = np.meshgrid(x, y) #获取坐标
fig, ax = plt.subplots()
ax.contour(X, Y, f([X, Y]), colors="black")
ax.scatter(process[:, 0], process[:, 1])
ax.plot(process[:, 0], process[:, 1])
plt.show()
在这里插入图片描述
解释
除了之前已经提到过的一些解释:
Gradient flow
考虑下面的微分方程:
时,其中是最小值.
我们来看其离散的情形:
在这里插入图片描述
于是就有:
还有一种后退的形式:
此时,为了找到, 我们需要求解一个方程:
还有一种特殊的解释,这里不提了.
考虑下面的问题:
其中是可微的.
我们可以通过下列proximal gradient method来求解:
可以证明(虽然我不会),当 Lipschitz连续,常数为,那么,如果,这个方法会以的速度收敛.
还有一些直线搜素算法:
一般取,是的一个上界,在后面的解释中在具体探讨.
解释1 最大最小算法
最大最小算法, 最小化函数:
其中是的凸上界:, .
我们可以这么构造一个上界:
上面的式子很像泰勒二阶展开,首先这个函数符合第二个条件,下面我们证明,当,那么它也符合第一个条件.
其中, 又Lipschitz连续,所以:
考虑关于的二阶泰勒展式:
令:
由当时,左边为, 所以的最大特征值必小于, 所以:
完蛋,好像只能证明在局部成立,能证明在全局成立吗?
再令:
那么:
上面的等式,可以利用第二节中的性质推出.
不动点解释
最小化的点应当满足:
更一般地:
这便说明了一种迭代方式.
Forward-backward 迭代解释
考虑下列微分方程系统:
离散化后得:
在这里插入图片描述
注意,等式右边和,这正是巧妙之处.
解此方程可得:
在这里插入图片描述
这就是之前的那个迭代方法.
加速 proximal gradient method
其迭代方式为:
这个方法有点类似Momentum的感觉.
一个选择是:
也有类似的直线搜索算法:
交替方向方法 ADMM
alternating direction method of multipliers (ADMM), 怎么说呢,久闻大名,不过还没看过类似的文章.
同样是考虑这个问题:
但是呢,这时都不一定是可微的, ADMM采取的策略是:
特殊的情况是, 或是指示函数,不妨设是闭凸集的指示函数,而是闭凸集的指示函数, 即:
这个时候,更新公式变为:
解释1 自动控制
可以这么理解,为状态,而为控制,前俩步时离散时间动态系统(不懂啊...), 第三步的目标是选择使得,所以可以认为是一个信号误差,所以第三步就会把这些误差累计起来.
解释2 Augmented Largranians
我们可以将问题转化为:
augmented Largranian:
在这里插入图片描述
其中为对偶变量.
在已知的条件下,最小化, 即:
在已知的条件下,最小化, 即:
最后一步:
如果依照对偶问题的知识,关于应该是取最大,但是呢,关于是一个仿射函数,所以没有最值,所以就简单地取那个?
注意到:
在这里插入图片描述
在这里插入图片描述
让, 就是最开始的结果.
解释3 Flow interpretation
问题(4.9)的最优条件(KKT条件):
其中是对偶变量.考虑微分方程:
在这里插入图片描述
(4.11)取得稳定点的条件即为(4.10)((这部分没怎么弄明白).
离散化情形为:
在这里插入图片描述
取即可得ADMM.
解释4 不动点
原问题的最优条件为:
ADMM的不动点满足:
从最后一个等式,我们可以知道:
, 于是
等价于:
等价于:
俩个式子相加,说明即为最优解.
再来说明一下,为什么可以相加,根据次梯度的定义:
相加可得:
需要注意的是,我证明的时候也困扰了,
并不是指(x-u)是函数的次梯度, 而是在的次梯度集合加上的集合内,也就是是其次梯度.
对不起!又想当然了,其实没问题, 如果
而则:
证:
已知:
俩式相加可得:
所以, 注意也是无妨的.
特别的情况
考虑下面的问题:
上面的求解,也可以让,这样子就可以用普通的ADMM来求解了, 但是有更加简便的方法.
这个的来源为:
在这里插入图片描述再利用和之前一样的推导,不过,我要存疑的一点是最后的替代,我觉得应该是:
否则推不出来啊.
网友评论