Skip to content

算法Algorithm

Lasso 坐标下降

Lasso coordinate descent · Lasso cyclic coordinate minimization

用部分残差和列范数逐坐标精确最小化 Lasso,并保持残差缓存与可行对偶证书一致。

形式陈述 ​

给定 A∈Rm×n、b∈Rm、λ>0,沿用Lasso 的定标和证书:P(x)=‖Ax−b‖2/2+λ‖x‖1,损失不除以样本数,暂不含截距。坐标下降每次固定其他系数,只把一个系数调到这一条直线上的最佳位置。

初始化任意 x 和残差缓存 r=b−Ax;预计算 qj=‖Aj‖2。按 1,…,n 的固定顺序反复扫掠。访问第 j 列时,令旧值为 a=xj,部分残差为 r−j=r+Aja。若 qj>0,更新

(1)xj+=Sλ(AjTr−j)qj,Sλ(v)=sign(v)(|v|−λ)+.

随后同步执行 r←r−Aj(xj+−a)、xj←xj+。这保持执行不变量 r=b−Ax;下一坐标必须看见刚更新的残差。若 qj=0,该列为零,子问题只有 λ|xj|,直接置 xj=0,不能除以零。

输入还应包含目标误差容差 ε≥0、最大扫掠数和证书检查频率。每次检查重新核验残差,计算 ρ=max{1,‖ATr‖∞/λ}、θ=r/ρ 和 P(x)−D(θ)。返回系数、可行对偶点、gap、坐标访问次数及“证书达标/预算用尽/数值失败”状态。只有第一种状态证明所要求的目标精度;一轮下降或坐标变零不是停止证书。

直觉

部分残差是先把这一列已有的贡献放回去,再问“这一列独自应解释多少”。原问题的列可以彼此相关,其他列的当前系数通过 r−j 进入答案;所以式(1)并没有假设设计正交。

固定其余系数,相关的一维目标为

12‖r−j−Aju‖2+λ|u|=qj2(u−AjTr−jqj)2+λ|u|+常数.

利用绝对值的近端软阈值,最小点是 Sλ/qj(AjTr−j/qj)=Sλ(AjTr−j)/qj。列范数既缩放中心,也缩放阈值;只除中心而保持阈值为 λ 会解错问题。

近端梯度法一次线性化全部平方损失,再对全部坐标软阈值。这里每次对单个坐标的真实平方损失精确求解。两种方法共享软阈值运算,但一个全向量梯度步与一轮顺序扫掠有不同中间状态和成本。

例子与边界

同一耦合设计,两种访问顺序 ​

取

A=(111001),b=(3/2,3/2,0)T,λ=1,x=(0,0).

两列范数平方均为 2,内积为 1。先访问第一列:A1Tr=3,所以 x1=S1(3)/2=1;缓存变为 (1/2,1/2,0)。接着 A2Tr=1/2,所以 x2=0。一轮结果是 (1,0)。其相关性 (1,1/2) 满足两坐标 KKT,P=D=5/4,gap 为零。

把顺序改为第二列再第一列。第一步 x2=S1(3/2)/2=1/4,残差为 (5/4,3/2,−1/4);第一列的部分相关性变为 11/4,故 x1=7/8。这一轮结果为 (7/8,1/4),残差 (3/8,5/8,−1/4),ATr=(1,1/8),原始目标 P=91/64、对偶值 D=77/64,gap 为 7/32。第二轮先把第二坐标置零,再把第一坐标改为 1,这才得到零 gap。顺序改变有限预算答案,并未改变优化问题。

列缩放、零列与截距 ​

仅有一列 A1=(2,0)T,b=(3,0)T、λ=1 时,q1=4、相关性为 6,正确解为 5/4。误用单位列公式会给出 5。若把特征缩放但希望保持同一个拟合惩罚问题,还需同步变换系数和惩罚权重;只为了数值好看而标准化列,会改变原参数下的正则化偏好。

加入不受惩罚的截距 c 时,目标变为 ‖b−c1−Ax‖2/2+λ‖x‖1。固定 x,精确更新 c=mean(b−Ax),并相应更新残差;等价地,先中心化各列与 b,解系数后恢复 c。截距不能套软阈值。带截距的合法对偶还要求 1Tθ=0:若刚更新斜率后残差均值已非零,单纯缩放并不能满足这一条件,应先更新截距或使用中心化问题的证书。零列的系数仍取零,但若把截距当作“零惩罚列”,它与这里 λ>0 的零列处理是不同情况。

某轮 xj=0 只说明当前一维子问题的阈值通过。其他坐标改变后它可以再次非零。若要永久删列,应使用可行 gap 导出的安全筛除;它认证给定数据和 λ 的优化解,仍不认证未知真实支持。

推论与应用

精确循环更新为什么到达最优值 ​

先剔除零列。每个单坐标目标是 qj-强凸的,故一次精确更新产生的下降至少为 qj|xj+−xj|2/2。因为 P≥0,把所有访问的下降相加,得到各步位移平方可求和,因而每步位移趋于零。又有 λ‖x‖1≤P(x0),所有中间点有界。

取扫掠起点的一条收敛子列,极限为 x¯。一轮只有有限的 n 次更新,每个位移趋零,所以这条子列对应的所有轮内点也趋于同一个 x¯。式(1)是当前其他坐标的连续函数,因此取极限后,x¯ 对每个坐标都已经满足式(1)的固定点条件。由绝对值次微分的三个分支,这些条件恰是 AjT(b−Ax¯)∈λ∂|x¯j|。把坐标合起来就是完整凸最优性,故 x¯ 最优。

目标值单调且连续,所以沿这条子列趋于 P∗,整列目标值也趋于 P∗;每个聚点同样最优。若 A 满列秩,解唯一,有界序列的所有聚点相同,整个系数序列收敛。没有唯一性时,这份证明只宣布目标收敛与聚点最优,不把它夸大为已经证明所有非唯一问题的点收敛。

这个推导用了可分的绝对值惩罚。对一般耦合非光滑函数,各坐标最优不必整体最优。例如 F(x1,x2)=max{x1,x2} 在原点沿任何单独负坐标方向都不下降,但沿 (−1,−1) 下降。它不能继承上面的“拼合各坐标次梯度”步骤。

计算账本 ​

初始残差和列范数需一次扫描。缓存残差后,每次稠密列访问为 O(m),一轮 O(mn);稀疏列为 O(1+nnz(Aj)),一轮 O(n+nnz(A))。除矩阵外保存残差、系数与列范数需 O(m+n)。每次完整 gap 检查还要对所有列求相关性;不能把证书成本隐藏在“一个坐标很便宜”中。浮点累计残差应定期用 b−Ax 重建,避免缓存漂移冒充 KKT 改善。

本例一轮即解是数据与顺序的巧合;一般不能由此宣称坐标下降总快于 FISTA。对照实验应同时列扫掠数、列访问数、矩阵读写和证书次数,并对所有候选使用相同的可行下界构造。

两道短自测 ​

  1. 单列 A=(3,0)T、b=(2,0)T、λ=3,从零更新结果是多少?答案:列范数平方9、相关性6,故 x=S3(6)/9=1/3;不能用单位列阈值返回3。
  2. 带截距时残差相关性已全部小于 λ,但残差均值为1,可以直接宣布对偶可行吗?答案:不可以;还需 1Tθ=0,缩放非零均值并不能变成零。
参考资料
  • Stephen J. Wright, Coordinate Descent Algorithms,2015,§§2、3.6–3.7,顺序坐标法与可分正则项。本文针对 Lasso 给出完整的一维推导与有限维聚点证明。
  • Neal Parikh and Stephen Boyd, Proximal Algorithms,§7.1,半平方损失和软阈值定标。
关系图谱9 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系