FOBOS 算法简介
(1)FOBOS(Forward Backward Splitting)算法原理
前向后向切分(FOBOS,Forward Backward Splitting)是 John Duchi 和 Yoran Singer 提出的。在该算法中,权重的更新分成两个步骤:
第一个步骤实际上是一个标准的梯度下降(SGD),第二个步骤是对第一个步骤的结果进行局部调整。写成一个公式那就是:
假设 ,如果
存在一个最优解,那么可以推断 0 向量一定属于
的次梯度集合:
.
因为 , 那么可以得到权重更新的另外一种形式:
从上面的公式可以看出,更新后的 不仅和
有关,还和自己
有关。这也许就是”前向后向切分”这个名称的由来。
(2)FOBOS(Forward Backward Splitting)的 L1 正则化
假设 是 L1 范数,中间向量是
, 并且参数
,那么公式就可以展开得到
所以,可以对特征权重 W 的每一个维度进行单独求解:
for all $latex 1\leq i \leq N$.
Claim. 如果 是
的最优解,那么
.
证明:反证法,如果 ,那么
, 这与条件矛盾。
通过数学计算可以证明:在 L1 正则化下,FOBOS 的特征权重的各个维度的更新公式是:
for all
其中 是梯度
在第 i 个维度的分量。
从公式上看,
如果 , 则有
意思就是如果这次训练产生梯度的变化不足以令权重值发生足够大的变化时,就认为在这次训练中该维度不够重要,应该强制其权重是0.
如果 ,那么则有
L1-FOBOS 的算法:
(1)输入,初始化
(2)for
, 计算
按照公式更新
,
for all
(3)Return W
(3)L1-FOBOS 与 Truncated Gradient 的关系
令 ,可以得到 L1-FOBOS 与 Truncated Gradient 完全一致,换句话说 L1-FOBOS 是 Truncated Gradient 在一些特定条件下的形式。