8

(FTRL) Follow The Regularized Leader

 3 years ago
source link: https://xiang578.com/post/ftrl.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

(FTRL) Follow The Regularized Leader

发表于

2020-01-03 更新于 2021-04-12 分类于 机器学习

阅读次数: 578
本文字数: 3.9k

FTRL 是 Google 提出的一种优化算法。常规的优化方法例如梯度下降、牛顿法等属于批处理算法,每次更新需要对 batch 内的训练样本重新训练一遍。在线学习场景下,我们希望模型迭代速度越快越好。例如用户发生一次点击行为后,模型就能快速进行调整。FTRL 在这个场景中能求解出稀疏化的模型。

  • L1 正则比 L2 正则可以产生更稀疏的解。
  • 次梯度:对于 L1 正则在 处不可导的情况,使用次梯度下降来解决。次梯度对应一个集合 ,集合中的任意一个元素都能被当成次梯度。以 L1 正则为例,非零处梯度是 1 或 -1,所以 处的次梯度可以取 之内任意一个值。

FTL(Follow The Leader) 算法:每次找到让之前所有损失函数之和最小的参数。

FTRL 中的 R 是 Regularized,可以很容易猜出来在 FTL 的基础上加正则项。

FTRL 的损失函数直接很难求解,一般需要引入一个代理损失函数 。代理损失函数常选择比较容易求解析解以及求出来的解和优化原函数得到的解差距不能太大。

我们通过两个解之间的距离 Regret 来衡量效果:

其中 是直接优化 FTRL 算法得到的参数。当距离满足 ,损失函数认为是有效的。其物理意义是,随着训练样本的增加,两个优化目标优化出来的参数效果越接近。

参数 的迭代公式:

其中 , 为 的次梯度。参数 ,学习率 ,随着迭代轮数增加而减少。

展开迭代公式

对 求偏导得到:

和 异号时,等式成立。

根据基础知识里面提到的对于 L1 正则利用偏导数代替无法求解的情况,得到:

  1. 当 时,当且仅当 成立

因此可得:

FTRL 和 SGD 的关系

将 SGD 的迭代公式写成:

FTRL 迭代公式为:

代入 到上面的公式中,得到

求偏导得到

令偏导等于 0 :

化简得到:

根据上一个公式得出上一轮的迭代公式:

两式相减:

最终化简得到和 SGD 迭代公式相同的公式:

FTRL 工程化伪代码

引用自论文 Ad Click Prediction: a View from the Trenches

下面的伪代码中学习率和前面公式推导时使用的一些不一样: 。Facebook 在 GBDT + LR 的论文中研究过不同的学习率影响,具体可以参看博文 Practical Lessons from Predicting Clicks on Ads at Facebook(gbdt + lr) | 算法花园

FTRLFTRL

例:FM 使用 FTRL 优化

FM 是工业界常用的机器学习算法,在之前博文 (FM)Factorization Machines 中有简单的介绍。内部的 FTRL+FM 代码没有开源,所以也不好分析。从 FM+FTRL算法原理以及工程化实现 - 知乎 中找了一张 FTRL+FM 的伪代码图片。

15780576261639.jpg

Reference


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK