让 AI 算 L1 近端更新:小权重为什么直接归零,而不是穿过零点

昨天 3阅读

做稀疏线性模型或系数去噪时,希望一些参数真正变成零。但在损失里加上L1惩罚后,直接沿符号梯度走一步,可能只是把一个小正数推成小负数。近端更新通过求一个小优化问题,把零点附近的一整段输入准确收拢到零。

让 AI 算 L1 近端更新:小权重为什么直接归零,而不是穿过零点

AI生成的概念示意图:正负系数与零点表示稀疏化处理;条形没有逐项对应关系,不是精确前后对照或模型权重记录。

先冻结一次更新要解决的子问题

设普通光滑损失的一步更新已经产生候选向量v=(1.2,0.3,-0.8)。现在求w,使Q(w)=||w-v||²/2+0.5||w||₁最小。第一项不让结果离候选太远,第二项按绝对值总和惩罚系数。此处没有概率总和为一或非负约束。

这个目标按坐标分开,每一项都在求(w-v)²/2+0.5|w|。若最优w为正,导数是w-v+0.5,所以候选解w=v-0.5,且只有v大于0.5时才与正号假设一致。若w为负,则导数为w-v-0.5,对应w=v+0.5。

落在阈值内时,零点两侧都不值得走

当v位于-0.5到0.5之间,正侧候选会落到非正区域,负侧候选会落到非负区域。最优点于是位于两段相接的w=0。合起来就是软阈值:保留v的符号,把绝对值减0.5,若减完不大于零就输出零。

三个坐标分别得到0.7、0、-0.3。小正数0.3不会被减成-0.2;它直接停在零。绝对值恰好为0.5时也归零,因此边界测试不能只测明显大于和小于阈值的数。

三种看似合理的规则,目标值不同

软阈值输出的距离平方为0.25+0.09+0.25=0.59,L1总和为1,故Q=0.295+0.5=0.795。若直接用v-0.5sign(v),得到(0.7,-0.2,-0.3),其Q为0.975,多出的反号小量没有帮助这个目标。

若只把绝对值小于0.5的数删掉,保留大数原值,则得到(1.2,0,-0.8),Q=0.045+1=1.045。软阈值不仅删去小值,也会缩短留下的大值;“剪枝阈值一样”不表示三个处理过程等价。

独立本地程序将每项分别在正半轴、负半轴及零点比较,核对最优位置,又用引入辅助绝对值变量的约束优化复算。直接从数值优化器拿到一个接近零的小数时,还需区分优化容差与解析解恰好为零这两件事。

放回训练步骤时,阈值还要乘步长

若整体目标是光滑项f(w)+λ||w||₁,近端梯度通常先算v=w-t∇f(w),再对v使用阈值tλ。本文子问题相当于tλ=0.5;学习率t改了,不能无意中把阈值仍固定为λ,否则求解过程对应的目标权重已经变化。

可提示AI:“先写光滑梯度候选,再列每项符号、绝对值与阈值关系,计算软阈值输出;把结果代回子问题目标,与符号梯度和仅删除小值对照。”测试数据应包括正负大数、小数、零,以及正负阈值边界,而不仅是随机向量。

稀疏系数需要结合特征尺度解释

若把某个输入特征单位放大,获得同样预测只需要更小的对应系数,L1惩罚也会改变。因此特征缩放规则、是否惩罚截距、各坐标是否使用相同λ,都必须记录。系数为零不自动证明该因素在现实中无作用,相关特征可能互相替代。

这个小例验证的是一次近端子问题,不保证任意深度模型都收敛到全局最优。把光滑项换成非凸网络后,步长与收敛判断仍需单独处理。实际验收应一起看预测误差、非零参数数量与多次数据切分的稳定性,避免只因零变多就认定模型更可靠。

资料核对日期:2026年10月2日。数据为原创教学设定,已用独立本地程序复核,未进行真实模型训练或生产效果测试。

参考资料

Parikh与Boyd:Proximal Algorithms,第6.5.2节

文章版权声明:除非注明,否则均为云鹊BLOG原创文章,转载或复制请以超链接形式并注明出处。