在线最优化求解(Online Optimization)之三:FOBOS
在线最优化求解(Online Optimization)之三:FOBOS
FOBOS (Forward-Backward Splitting)是由John Duchi和Yoram Singer提出的[11]。从全称上来看,该方法应该叫FOBAS,但是由于一开始作者管这种方法叫FOLOS(Forward Looking Subgradients),为了减少读者的困扰,作者干脆只修改一个字母,叫FOBOS。
1. 算法原理
在FOBOS中,将权重的更新分为两个步骤:
前一个步骤实际上是一个标准的梯度下降步骤,后一个步骤可以理解为对梯度下降的结果进行微调。
观察第二个步骤,发现对的微调也分为两部分:(1) 前一部分保证微调发生在梯度下降结果的附近;(2)后一部分则用于处理正则化,产生稀疏性。
如果将公式(1)中的两个步骤合二为一,即将代入
中,有:
令,如果
存在一个最优解,那么可以推断
向量一定属于
的次梯度集合:
由于,那么有:
上式实际上给出了FOBOS中权重更新的另一种形式:
我们这里可以看到不仅仅与迭代前的状态
有关,而且与迭代后的
有关。可能这就是FOBOS名称的由来。
2. L1-FOBOS
关于FOBOS的收敛性和Regret就不在此讨论了,详情可参见论文[1]。这里我们来看看FOBOS如何在L1正则化下取得比较好的稀疏性。
在L1正则化下,有为了简化描述,用向量
来表示
用标量
来表示
并将公式(1)等号右边按维度展开:
我们可以看到,在求和公式中的每一项都是大于等于的,所以公式(2)可以拆解成对特征权重 每一维度单独求解:
首先,假设是
的最优解,则有
,这是因为:
--------------------------------------------------------------------
反证法:
假设成立,那么有
这与是
的最优解相矛盾,故假设不成立,
成立。
---------------------------------------------------------------------
既然有,那么我们可以分两种情况来进行讨论:
---------------------------------------------------------------------
(1) 当时:
由于,所以
,相当于对
引入了不等式条件
;
为了求解这个含不等式约束的最优化问题,引入拉格朗日乘子,由KKT条件,有:
以及
根据上面的求导等式可得:
再次分为两种情况:
(a):
由于,所以
;这时有:
;又由于
,所以
。
(b):
这时有;又由于
,所以
综合(a)(b)的结论,当时,
(2) 当时:
采用相同的分析方法可得,在时有:
---------------------------------------------------------------------
综合上面的分析,可以得到在FOBOS在L1正则化条件下,特征权重的各个维度更新的方式为:
其中,为梯度
在维度i上的取值。
根据公式(3),我们很容易就可以设计出L1-FOBOS的算法逻辑:
3. L1-FOBOS与TG的关系
公式3)可以看出,L1-FOBOS在每次更新的时候,对
的每个维度都会进行判定,当满足
时对该维度进行“截断”,这个判定条件的含义是当一条样本产生的梯度不足以令对应维度上的权重值发生足够大的变化时,认为在本次更新过程中该维度不够重要,应当令其权重为0。
对于L1-FOBOS特征权重的各个维度更新公式(3),也可以写作如下形式:
比较上式与TG的特征权重维度更新公式,可以发现如果令,L1-FOBOS与TG完全一致。我们可以认为L1-FOBOS是TG在特定条件下的特殊形式。
参考文献
[1] John Duchi & Yoram Singer. Efficient Online and Batch Learning using Forward Backward Splitting. Journal of Machine Learning Research, 2009
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)