坐标下降与近端梯度
层级:C|深入
1. 非光滑正则化需要合适算法
L1 在零点不可微,普通梯度下降不能直接用一个普通梯度处理。坐标下降一次优化一个参数,常得到软阈值闭式更新;近端梯度把光滑损失的梯度步与非光滑正则的“近端”步骤组合。
2. 坐标下降
对
xminF(x1,ldots,xp),
循环或随机选择坐标 j:
xj←argzminF(x1,ldots,xj−1,z,xj+1,…,xp).
其余坐标固定。若每个一维子问题易解,单步便宜。
3. Lasso 坐标更新
标准化线性回归:
wmin21∥y−Xw∥2+λj∑∣wj∣.
固定其他坐标,部分残差
rj=y−k=j∑xkwk.
子问题:
wjmin21∥rj−xjwj∥2+λ∣wj∣.
解为
wj←∥xj∥2Sλ(xjTrj),
其中 S 为软阈值。若列已单位范数,分母为 1。
4. 坐标选择
- 循环:简单、缓存友好;
- 随机:理论分析方便,可避免某些周期;
- Gauss–Southwell:选梯度/潜在改进最大坐标,单步选择成本高;
- active set:优先更新非零或可能激活的坐标。
高度耦合变量时,一次改一个坐标可能很慢;块坐标下降一次更新一组相关参数。
5. 复合目标
近端梯度针对
xminF(x)=f(x)+g(x),
其中 f 光滑可微,g 凸但可能不可微且近端算子易算。
若把 g 也当普通梯度处理,会在折点遇到问题;近端步骤保留其完整局部结构。
6. 近端算子
proxηg(v)=argxmin[g(x)+2η1∥x−v∥22].
它在不偏离 v 太远的前提下,选择使 g 小的点。若 g 是集合 C 的指示函数(可行内为 0、外为 +∞),近端算子就是投影 ΠC。
7. 近端梯度更新
先对光滑项做梯度步:
vt=xt−η∇f(xt),
再做:
xt+1=proxηg(vt).
合写为
xt+1=operatornameproxηg(xt−η∇f(xt)).
它最小化 f 的局部二次上界加精确 g。
8. L1 的近端是软阈值
若 g(x)=λ∥x∥1,因坐标可分:
proxηλ∥⋅∥1(v)=Sηλ(v)
逐元素软阈值。这让迭代中参数可精确归零,普通次梯度下降通常只在零附近震荡。
9. ISTA 与 FISTA
Lasso 的基本近端梯度称 ISTA。对凸 L-光滑 f,合适步长下目标误差常为 O(1/t)。
FISTA 加 Nesterov 式外推,可达 O(1/t2):
xt+1=proxηg(yt−η∇f(yt)),
再用历史 x 构造 yt+1。加速序列可能目标非单调,可用 restart 改善实际表现。
10. 其他近端例子
- 非负约束:逐元素 max(v,0);
- L2 范数(非平方):向量软阈值,产生整组为零;
- 核范数:对奇异值做软阈值;
- box 指示:clip;
- 单纯形指示:投影到单纯形。
“近端可计算”是结构化正则设计的重要标准。
11. 收敛与停止
可使用 proximal gradient mapping:
Gη(x)=η1[x−proxηg(x−η∇f(x))].
Gη=0 是复合问题的一阶最优条件。还可看目标变化、参数变化和 KKT 残差。
12. 何时用哪种方法
- 特征矩阵适合快速列访问、Lasso/Elastic Net:坐标下降;
- 光滑损失 + 可分/结构化非光滑正则:近端梯度;
- 多块变量和可分约束:ADMM;
- 投影昂贵但线性 oracle 便宜:Frank–Wolfe。
易错点
- L1 次梯度法与近端梯度不是同一更新。
- prox 的阈值包含步长 η。
- 坐标更新公式依特征列范数约定。
- FISTA 理论加速不表示每步目标单调。
- 非凸 g 也可定义 prox,但解可能多值且全局保证改变。
常见问答
Q1:软阈值与 hard threshold 有何区别?
软阈值超过阈值后还向零收缩,对应 L1 prox;硬阈值保留大值原幅度、直接删小值,相关于 L0/非凸问题。
Q2:为什么近端步不只是“修正”梯度?
它精确求解正则项加二次邻近代价的子问题,能处理折点和结构约束。
Q3:坐标下降能并行吗?
若坐标耦合弱可并行/异步;强相关时同时更新会互相干扰,需要图着色、块划分或同步策略。
练习
- 计算 S1((−2,−0.5,3))。
- 写出 L1 近端梯度两步。
- 集合指示函数的 prox 为什么是投影?
- 坐标下降适合什么结构?
- ISTA 与 FISTA 的典型凸收敛率分别是什么?
答案与提示
- (−1,0,2)。
- v=x−η∇f(x),x+=Sηλ(v)。
- 可行域外目标无穷,只能在集合内最小化到 v 的平方距离。
- 每个坐标/块子问题便宜,数据可高效按列访问,目标可分或近似可分。
- O(1/t) 与 O(1/t2)。