加速bregman近端梯度法
accbpg的Python项目详细描述
加速Brgman近端梯度法
求解形式相对光滑凸优化问题的加速一阶算法
minimize { f(x) + P(x) | x in C }
使用参考函数h(x),其中
- h(x)在c上是凸的,本质上是光滑的
- f(x)是凸可微的,l-光滑相对于h(x),即f(x)-l*h(x)是凸的
- p(x)是凸和闭的(下半连续)
- c是闭凸集
###在[hrx2018](https://arxiv.org/abs/1808.03045)中实现的算法
-
线搜索 LI> BPGYLS(Brgman近端梯度)法
- abpg(加速bpg)方法
- abpg expo(带指数自适应的abpg)
- ABPG增益(带增益自适应的ABPG)
- abda(加速bregman双平均)方法
##安装
从github克隆或分叉。或者从pypi安装:
pip install accbpg
##用法
import accbpg
# generate a random instance of D-optimal design problem f, h, L, x0 = accbpg.D_opt_design(80, 200)
# solve the problem instance using BPG with line search x1, F1, G1 = accbpg.BPG_LS(f, h, L, x0, maxitrs=1000, verskip=100)
# solve it again using ABPG_gain with gamma=2 x2, F2, G2, D2 = accbpg.ABPG_gain(f, h, L, 2, x0, maxitrs=1000, verbskip=100)
通过可视化比较这两种方法
import matplotlib.pyplot as plt Fmin = min(F1.min(), F2.min()) plt.semilogy(range(len(F1)), F1-Fmin, range(len(F2)), F2-Fmin)
##[hrx2018](https://arxiv.org/abs/1808.03045)中的示例
d-最优实验设计
import accbpg.ex_D_opt
带kl散度的非负回归
import accbpg.ex_KL_regr
poisson线性反问题
import accbpg.ex_PoissonL1 import accbpg.ex_PoissonL2