文件glm-ie公司工具箱1.5

0)什么?

这个glm-ie公司包装(概括的线性的型号:会议和e(电子)估计)为高斯和非高斯变量模型提供了估计程序和近似推理算法,可用于大规模(10^5$及更多变量)。
标准大规模(稀疏)回归和分类以及$1$1$正则化图像重建可以作为惩罚估计的一个实例。代码的一个重点是可伸缩性和数字健壮性。这是通过将所有操作称为(快速)矩阵向量乘法(MVM)来实现的。用于惰性评估的矩阵类是可伸缩性的核心要素。
在给出一些理论背景之后,我们提供了四个示例应用:

估算对应于找到最可能的模型参数和推理可以理解为找到模型参数分布的(高斯)近似值。我们提供不少于五个解算器来计算最可能的模型参数;惩罚最小二乘(PLS)问题。近似推理可以通过变分边界(VB)和期望传播(EP)两种算法完成。

代码由Hannes Nickisch编写;它在运行二者都倍频程3.3.x版Matlab公司®7.x。代码的早期版本仍然可用。

1) 下载、安装和文档

包括演示和html文档在内的所有代码都可以在中下载焦油拉链存档文件。

微小更改和增量错误修复记录在变更日志.

请阅读版权通知。

打开tar或zip文件后,您将找到6个子目录:文件,inf公司,垫子,,。无需安装任何事情都可以开始,只需运行启动。脚本来设置路径。

有关目录内容和如何编译MEX的详细信息文件可以在自述文件.获取startedguide是当前html文件的剩余部分阅读(也可在http://hannes.nickisch.org/code/glm-ie/doc). 包含技术文档的开发人员指南是在中找到手册.pdf,但对于临时用户,指南如下。

2) 理论

广义线性模型(GLM)用于各种不同的任务,例如从分类到回归。应用范围从生物信息学的图像处理到排名。

未知参数$\mathbf{u}\in\mathbb{R}^n$上的广义线性模型由高斯观测值组成\[\mathbf{y}=\mathbf{X}\mathbf1{u}+\mathbf{varepsilon}\在\mathbb{R}^m中,\:\mathbf2\\varepsilen}\sim\mathcal{N}(0,\sigma^2\mathbf}I})\]和非高斯电位$\mathcal美元{T} _j(_j)关于其仿射函数的(sj)$\[\mathbf{s}=\mathbf}\mathbf{u}-\mathbf{t}\in\mathbb{R}^q\]导致形状的后部\[\mathbb{P}(\mathbf{u}|\mathcal{D})\propto\mathcal{N}{T} _j(_j)(sj)。\]

这个glm-ie公司工具箱允许执行最大后验(MAP)估计即找到最可能的配置\[\帽子{\mathbf{u}}{MAP}=\arg\max_{\mathbf{u{}}\mathbb{P}(\mathbf{u}|\mathcal{D})=\arg\ min_{\mathbf{u}}-\ln\mathcal{N}铝{T} _j(_j)(sj)\]推理即通过一个可控制的分布来近似贝叶斯后验分布(这里是一个高斯分布,平均值为$\mathbf{m}$,协方差为$\mathbf{V}$)\[\mathbb{P}(\mathbf{u}|\mathcal{D})\approx\mathcal{N}(\tathbf{u}|\mathbf{m},\mathbf{V})\]

2a)估算

MAP估计涉及解决惩罚最小二乘问题(PLS)\[\hat{\mathbf{u}}_{MAP}=\arg\main_{\mathbf{u}}\frac{1}{\lambda}\left\Vert\mathbf{X}\mathbf{u}-\mathbf{y}\right \Vert_2^2+2\cdot\rho(\mathbf{s}),\:\mathbf{s}=\mathbf{B}\mathbf{u}-\mathbf{t},\:\lambda\in\mathbb{右}_+\]带有惩罚者$\rho(\mathbf{s})=-\sum_{j=1}^q\ln\mathcal{T} _j(_j)(s_j)$和重量$\lambda=\sigma^2$。

2b)变分边界推理(VB)

推理算法的总体思想是取代非高斯电位$\mathcal美元{T} _j(_j)(s_j)$由高斯人$\mathcal{N}(s_j|\mu_j,\gamma_j)$使用宽度$\gamma_j$并联合调整宽度向量$\mathbf{\gamma}\in\mathbb{右}_+^q$这样高斯近似$\mathcal{N}(\mathbf{u}|\hat{\mathbf{u}}_{VB},\mathbf1{V})$模仿贝叶斯后验$\mathbb{P}(\mathbf{u}|\mathcal{D})$尽可能忠实。

2c)通过(阶乘)平均场(MF)推断

该方法进行了阶乘后验近似,并最终承认了一个沿变分边界线的推理算法和修改的外循环计算。外循环计算速度更快,但仅适用于有限类矩阵,即傅里叶矩阵、卷积矩阵和有限差分矩阵。

2d)通过期望传播(EP)推断

同样,非高斯电位$\mathcal美元{T} _j(_j)(sj)$替换为Gaussians$\mathcal{N}(s_j|\mu_j,\gamma_j)$这样的边际分布\[\mathcal{N}(\mathbf{u}|\hat{\mathbf{u}}_{EP},\mathbf1{V})\text{和}\mathcal{N}(\mathbf{u}|\hat{\mathbf{u}}_{EP},\mathbf1{V})\frac{\mathcal{T} _j(_j)(s_j)}{数学{N}(s_j|\mu_j,\gamma_j){\]所有$j=1,..,具有相同的平均值和方差,。。,季度$。这是通过反复调整参数$\mu_j$和$\gamma_j$以使力矩匹配来实现的。

请注意,大规模EP比VB更难运行,因为EP似乎不能容忍不准确的边际方差估计。边际方差可以使用Lanczos程序或蒙特卡罗采样器进行近似。

2e)代码组织

在直接阅读示例之前,只需简单说明一下包的组织结构。您需要了解四种类型的对象。有关详细信息,请参阅开发者手册:

mat:矩阵运算符
如果参数为$\mathbf{u}$表示和图像的像素。最常见的是$\mathbf{B}$和$\mathbf{X}$不需要显式存储,而只需要通过矩阵向量乘法(MVM)。这个glm-ie公司工具箱包括一个隐式矩阵库从基矩阵类派生垫子.类型矩阵垫子可以加法、乘法、,连接、复制和子索引。
笔:惩罚函数
A类惩罚函数$\rho(\mathbf{s})$定义PLS问题。全部惩罚函数分享一个共同点接口.惩罚函数可以从势导出函数,例如$\rho(\mathbf{s})=-\sum{j=1}^q\ln\mathcal{T} _j(_j)(sj)美元。这些机制在推理机中得到了利用,该推理机解决了一系列PLS问题。
pls:惩罚最小二乘(pls)解算器
PLS问题不仅得到了规定,而且得到了解决。我们的PLS解算器也要服从普通人接口为了LBFGSB正常工作,您必须编译一些MEX函数,如自述文件.
pot:势函数
A类势能函数$\mathcal美元{T} _j(_j)(sj)$实施潜在的接口需要指定概率模型执行普通回归(使用高斯分布),稀疏回归(基于拉普拉斯,学生的t,指数幂族平方秒分布)或分类Logistic回归).

3) 实践

3a)稀疏回归

未知参数$\mathbf{u}\in\mathbb{R}^n$表示线性预测器的权重,该预测器——给定一个数据点$\ mathbf{x} _ i\在\mathbb{R}^n$中,将标签$y_i$计算为$y_i=\mathbf{x} _ i^{\top}\mathbf{u}$。我们使用拉普拉斯权重之前的稀疏性(即$\mathbf{B}=\mathbf{i}$,$\mathbf{t}=\mathbf{0}$),使得$\mathcal{T} _ i(u_i)=\exp(-\tau_i|u_i|)$和高斯噪声模型,其中$y_i=\mathbf{x} _ i^{\top}\mathbf{u}+\varepsilon_i,\:\varepsilon_i\sim\mathcal{N}(0,\sigma^2)$,i.i.d.模型的后面可以写为\[\mathbb{P}(\mathbf{u}|\mathcal{D})\propto\exp(-\frac{1}{2\sigma^2}\left\Vert\mathbf}X}\mathbf{u}-\mathbf{y}\right\Vert_2^2-\tau\left\Vert\mathbf({u}\rift\Vert_1)。\]

在我们的示例中,我们使用诺德堡开花时间数据集从以二进制载体$mathbf表示的基因组中估计开花时间$y_i${x} _ i$. 我们有维度$n=5537$的$m=166$数据点。

估算
我们首先使用PLS估计回归_估计。使用$\lambda=\sigma^2\tau$查找$\hat{\mathbf{u}}_{MAP}$,其中$\sigma^2=0.0078$和$\tau=125$。该代码比较了四个不同的解算器请注意,请选择GBT,请注意请BB以均方误差$\frac{1}{N}\sum_i(\mathbf{x} _ i^{\top}\hat{\mathbf{u}}_{MAP}-y_i)^2$,计算时间和实现的目标$\phi(\hat{mathbf{u}}_{MAP})$,其中$\pi(\mathbf}u})=\frac{1}{lambda}\left\Vert\mathbf{X}\mathbf{u}-\mathbf{y}\right\Vert_2^2-2\cdot\left\Vert\mathbf}u}\rift\Vert_1$。

推断
接下来,我们可以使用可缩放的VB方法通过高斯近似后验回归引用。。通过取消注释以下相应行

pot=@(s)potT(s,2);%学生的tpot=@potLaplace;%拉普拉斯pot=@(s)potExpPow(s,1.3);%指数幂族
可以很容易地将电势从拉普拉斯变换为其他电势。此外,可以通过在以下各项中进行选择来比较不同的边际方差计算算法
opts.outerMethod=“lanczos”;%Lanczos边际方差近似opts.outerMethod=“样本”;%蒙特卡罗边际方差近似opts.outerMethod=“已满”;%精确的边际方差计算(慢)opts.outerMethod=“伍德伯里”;%精确边际方差计算(快速)
两个精确算法和两个近似算法。在代码中,我们还演示了如何获得后验近似$\mathcal{N}(\mathbf{m},\mathbf{V})$和边际似然估计$Z$的句柄。
%m=E(u)后验均值估计%z=var(B*u)边际方差估计%负对数边际似然的nlZ序列,nlZ(end)是最后一个%zu=var(u)边际方差估计%Q,T屈服cov(u)=V=inv(A)\近似Q'*inv(T)*Q后验协方差

3b)(稀疏)模式分类或逻辑回归

在分类中,未知参数$\mathbf{u}\In\mathbb{R}^n$表示线性分类器$c_i=\text{sign}(\mathbf{b} _ i^{\top}\mathbf{u})\in\{\pm1\}$计算数据点$\mathbf的二进制类标签$c_i${b} _ i\在\mathbb{R}^n$中。我们从权重$\mathbb{P}(\mathbf{u})=\mathcal{N}(\tathbf{u}|\mathbf{0},\sigma^2\mathbf}I})$上的高斯先验开始。稍后,我们还可以在$\mathbf{u}$之前使用稀疏性,这样最终的模型就根本不包含任何高斯变量。似然函数是物流$\mathbb{P}(c_i|\mathbf{u},\mathbf{b} _ i)=(1+\exp(-ci\cdot\mathbf{b} _ i^{\top}\mathbf{u}))^{-1}$。

在我们的示例中,我们使用成人数据集来自UCI机器学习库。我们有维度$n=123$的$q=32561$数据点。

估算
同样,我们可以通过运行以下命令来比较几个PLS解算器的性能分类估算。。我们也可以通过取消对以下行中适当一行的注释来选择使用非高斯先验。

高斯=1;%高斯高斯=0;potS=@(s)potT(s,2);%学生的t高斯=0;potS=@个potLaplace;%拉普拉斯高斯=0;potS=@(s)potExpPower(s,0.7);%指数幂族
最后一个势是先验势和逻辑势的串联,最后一个矩阵$\mathbf{B}$是前$\mathbf{X}=\mathbf{I}$和前$\mathbf{B}$矩阵的串联。
B=[眼(n);B];pot=@(s,varargin)potCat(s,变量{:},{potS,@potLogistic},}:1:n,n+(1:q)});

推断
按照同样的思路,我们可以进行推理,如分类引用。。该示例说明了如何通过以下两行在EP和VB之间切换:

opts.innerType=“VB”;opts.innerType='EP';opts.innerEPeta=0.9;
注意,两个电位的串联必须通过
pot=@(s,varargin)potCat(s,变量{:},{potS,@potLogistic},}:1:n,n+(1:q)});
以使EP正常工作。

下面的散点图说明了估计值$\hat{mathbf{u}}{MAP}$和$\hat{mathbf{u}{VB/EP}$之间的差异,同时提供了类似的预测性能(16%误差)。它清楚地显示了$\hat{mathbf{u}}_{MAP}$的更多组件为零。这意味着MAP估计器更加强调将条目归零,从而有效地从模型中删除特征。后验均值估计$\hat{mathbf{u}}{VB/EP}$的严格程度要低得多。其基本原理是,从有限的数据来看,从统计上很难自信地排除模型的某些部分;在这里,后验标准差(以青色显示)提供了不确定性的自然度量。

ci-f1.png

3c)(非盲)图像去模糊

如果在拍摄照片时移动相机,则生成的图像会模糊。如果运动与图像平面平行,则测量图像$\mathbf{y}\in\mathbb{R}^n$可以建模为锐化图像$\mathbf{u}\in\ mathbb}R}^n$与模糊滤波器/内核$\mathbf{f}\in\tathbb{R}^f$的带噪卷积,如下所示\[\mathbf{y}=\mathbf{f}\star\mathbf1{u}+\mathbf2{\varepsilon}=\mathbf{X}(X)_{\mathbf{f}}\mathbf1{u}+\mathbf{\varepsilon},\]其中$\star$表示卷积运算符,它可以等效地由卷积矩阵$\mathbf表示{X}(X)_{\mathbf{f}}$。我们假设高斯噪声$\mathbf{\varepsilon}\sim\mathcal{N}(\mathbf{0},\sigma^2\mathbf}I})$,$\sigma ^2=10^{-5}$。
该模型是通过对自然图像滤波响应分布的先验知识来完成的。由(orthnormal)小波变换矩阵$\mathbf{W}$和有限差分矩阵$\mathbf{D}$计算的多尺度导数可以组合成稀疏变换矩阵$\mathbf{B}$,其响应$\mathbf{s}=\mathbf{B}\mathbf{u}$遵循稀疏分布,该稀疏分布在零附近达到峰值并具有重尾。这个glm-ie公司工具箱允许通过一行代码来指定这样的矩阵

W=matWav(su);D=matFD2(su);B=[W;D];
哪里表示图像的大小。在下面,我们使用拉普拉斯势$\mathcal{T} _j(_j)(sj)=\exp(-\tau|sj|)$,其中我们将刻度固定为$\tau=15$。
图像去模糊的任务包括在有噪声和模糊测量的情况下找到清晰的图像$\mathbf{u}$$\mathbf{y}$和关于多尺度导数稀疏分布的先验知识。

估算
我们在中演示了估计消除模糊估计。其中我们使用卷积矩阵$\mathbf{X}(X)_\mathbf{f}$由实例化

X=matConv2(f,su,'circ');
我们可以使用非凸惩罚函数,如
自由度=2;pen=@(s)penLogSmooth(s,dof);
加强拉普拉斯势的稀疏性,或等效地钢笔Abs处罚。请注意penLog平滑惩罚$\rho(s_j)=\ln(s^2+\epsilon)$对应于学生t电位的负对数。优化问题——即使是非凸的——也可以由LBFGSB或任何其他求解器有效地解决。对于特殊情况请LBFGS,我们可以强制非负性$\mathbf{u}\ge\mathbf{0}$激活以下标志:
选择。LBFGSnonneg=1;
该图描述了生成模糊图像$\mathbf{y}$的原始图像$\mathbf{u}$,以及所发现的重建清晰图像$\hat{mathbf}u}}_{MAP}$,这是一个惩罚最小二乘估计。

de-f1.png公司

推断
与其他示例一样,我们可以更进一步,不仅可以找到最高后验密度点$\hat{mathbf{u}}{MAP}$,还可以计算后验分布的高斯近似值,从而量化模型中的不确定性。脚本去模糊引用。确实如此。
由于边缘方差$\mathbf{z}=\text{dg}(\mathbf{B}\mathbf1{A}^{-1}\mathbf{B}^{top})$不能准确有效地计算(由于$\mathcal{O}(n^3)$矩阵运算,其中$n$是图像像素数),因此我们必须求助于近似值。我们使用Lanczos程序获得估计值$\mathbf{0}\le\hat{\mathbf{z}}_k\le\mathbf1{z}$。对于$k=n$,估计值是准确的,但对于实际大小的图像来说,这在计算上是禁止的。我们可以通过设置$k=170$

opts.outerVarOpts。MVM=170;
它比我们示例中的$n=54910$小得多。
结果,除了后验模式估计值$\hat{mathbf{u}}{MAP}$外,我们还获得了后验均值$\hat{mathbf{u}{VB}$的估计值和后验边缘方差$\text{dg}(\mathbf}V})$的估计。我们将$\hat{mathbf{u}}{MAP}$和$\hat{mathbf{u}{VB}$各自的差异可视化为清晰的底层图像以及边缘标准差。我们看到平均值和模式看起来非常相似,并且在角落和边缘的边际方差最大。或者,我们可以通过抽样计算边际方差。我们只需在三条线之间进行选择:
opts.outerMethod=“lanczos”;%兰科斯opts.outerMethod=“样本”;%蒙特卡洛opts.outerMethod=“阶乘”;%阶乘后验近似(MF)
如果我们选择采样,我们可以通过以下方式设置预处理共轭梯度步数和样本数:
opts.outerVarOpts=结构('NSamples',20,'Ncg',20);
在估计中,我们对$\mathbf{B}$使用了小波和有限差分矩阵;对于推断,我们仅使用总变差,因为无法有效计算小波矩阵的阶乘近似:
B=matFD2(su);
请注意,Lanczos的边际标准偏差比通过采样获得的边缘标准偏差小一个数量级(但噪音更小)。对于随机方法,重建误差更好。请注意,MAP估计在我们的示例中产生了7.34的误差(不过,额外的小波矩阵可以改善结果)。

Lanzos获得的结果(误差为7.29):
di-f1.png

蒙特卡罗法所得结果(误差为6.49):
di-f2.png

阶乘近似得到的结果(误差为6.52):
di-f3.png型

3d)欠采样磁共振成像(MRI)

沿着去模糊示例的思路,我们还可以使用基于$\mathbf{B}\in\mathbb{R}^{q\timesn}$的相同图像先验从不完整测量中进行稀疏估计。在磁共振成像(MRI)中,测量值是沿平滑曲线的傅里叶系数。获得的傅里叶系数的数量决定了不足的时间,因此我们的目的是从不完整的测量值$\mathbf{y}\in\mathbb{C}^m$重建底层图像$\mathbf{u}\in\ mathbb}C}^n$,其中$m\len$。测量矩阵$\mathbb{X}$是一个Fourier型矩阵。我们的示例提供了$3$种不同的测量轨迹:直线、网格上的任意位置(在实际扫描仪上不敏感)和如插图中心所示的螺旋。您可以通过更改类型变量。
type_str={‘line’,‘mask’,‘spiral’};类型=2;
度量矩阵本身由以下三行代码之一生成。
X=matFFT2线(大小(utrue),id,复数,mfull);X=matFFTNmask(掩码,复数,mfull);X=matFFT2nu(大小(utrue),k,复数);
另一个微妙之处在于,所有的PLS解算器glm-ie公司工具箱只处理实变量。为此,我们将原来的复变量$\mathbf{u}\in\mathbb{C}^n$嵌入到$\mathbb{R}^{2n}$中,并解决了相应的实际优化问题。两个辅助例程材料/re2cx。材料/cx2re。可以用来在两者之间切换。还有矩阵类垫/@垫和所有派生类垫/@垫*具有处理实向量和复向量的机制:变量复杂的指定矩阵$\mathbf{X}\in\mathbb{C}^{m\timesn}$是否作为线性运算符$\mathbb{C{^n\rightarrow\mathbb{C}^m$、$\mat血红蛋白{R}^{2n}\rightarror\mathbb2{R}^{2m}$或其混合。
特别适用于复值PLS估计问题,其中矩阵$\mathbf{X}$和$\mathbf{B}$都对应于傅里叶域中的简单逐点运算,即$\mat血红蛋白{X}^{top}\mathbf{X}和$\mathbf{B{^{top{mathbf}B}$可以写成$\mathpf{F}^{H}\text{dg}$是正交$n乘以n$Fourier矩阵是解算器请注意求解器实现Bregman分裂。

估算
我们比较了两个求解器对一幅著名MR图像进行欠采样重建的任务,该图像大约是测量值的40%。我们可以看到,简单的最小二乘估计产生的结果比PLS估计差得多。mri_estimation。

me-f1.png

me-f2.png

me-f3.png公司

4) 致谢

几位同事帮助改进了该软件。其中一些是:乔治·帕潘德里欧(George Papandreou)、马蒂亚斯·西格(Matthias Seeger)、亚历山大·洛克图欣(Alexander Loktyushin)和迈克尔·赫希(Michael Hirsch)。


上次修改日期:2013年8月31日