FTRL算法的数学原理
FTRL算法的数学原理
我们来深入讲解 FTRL(Follow The Regularized Leader)的数学原理。
我将从直观理解、公式拆解、与经典方法的对比、几何解释四个方面,完整地解析其数学原理。
直观理解:FTRL这个名字的含义
FTRL的名字“Follow The Regularized Leader”已经揭示了它的核心思想:
- Leader(领导者):指的是“到目前为止,在所有已见数据上累积损失最小的那个模型权重”。
- Follow The Leader:一个朴素的想法是,每一步都直接采用当前的Leader。但这会导致模型剧烈震荡,因为每个新数据都可能让Leader完全改变。
- Regularized(正则化的):为了避免震荡,我们不直接跟随Leader,而是跟随一个带有正则化约束的、更稳定的版本。
FTRL的本质:在每一步,寻找一个权重 w,它既要能很好地解释历史数据(Follow the Leader),又要保持稳定和简洁(Regularized)。
公式深度拆解
让我们仔细分析图中的公式:
第一项:累积梯度项 $ \sum_{s=1}^{t} g_s \cdot w$
$g_s = \nabla \text{loss}(w_s)$是第 s步的梯度
这一项的含义:我们希望新的权重 w的方向与历史所有梯度的加权平均方向一致
为什么是点积?在线性近似下,损失函数可写为:
忽略常数和与 w无关的项,就得到了
这一项实现了“Follow the Leader”:让 w朝着能降低历史累积损失的方向调整。
第二项:L1正则化 $ \lambda_1 |w|_1 $
- 是L1范数
- 作用1:产生稀疏性。L1正则化会将不重要的特征的权重压缩到0
- 作用2:特征选择。在CTR预估中,可能有上亿特征,L1正则化能自动选择重要特征
- 几何上,L1约束区域是“菱形”,最优解容易落在坐标轴上(产生0值)
第三项:L2正则化 $ \frac{\lambda_2}{2} |w|_2^2 $
- 是L2范数的平方
- 作用1:防止过拟合。让所有权重都变小,使模型更平滑
- 作用2:数值稳定性。防止权重过大
- 几何上,L2约束区域是“球形”
第四项:稳定性项(图中未展开)
这是FTRL算法的关键创新点。在实际的FTRL-Proximal算法中,这个“稳定性项”的具体形式是:
其中 σs是学习率相关的参数,通常定义为:
稳定性项的几何意义:它惩罚 w与历史各点权重 ws 的偏离。这使得:
- 更新是平稳的,不会剧烈震荡
- 结合了“Proximal”方法的思想:每一步不要离历史点太远
- 保证了理论上的收敛性
完整的FTRL-Proximal公式
将稳定性项展开,得到完整的FTRL优化问题:
其中 。
与经典方法的对比
FTRL vs SGD(随机梯度下降)
SGD更新:
- 只考虑当前梯度
- 没有显式正则化
- 容易震荡
FTRL更新:
- 考虑所有历史梯度的累积
- 有显式的L1/L2正则化
- 有稳定性约束
- 产生稀疏解
FTRL vs AdaGrad
AdaGrad更新:
- 有自适应学习率
- 但没有L1正则化(不产生稀疏性)
- 没有稳定性项
FTRL的优势:
- 有L1正则化 → 稀疏性
- 有稳定性项 → 更平稳的更新
- 理论性质更好
FTRL的求解:闭式解
虽然优化问题看起来很复杂,但FTRL有逐坐标的闭式解,这是它能实用的关键。
标量情况推导
考虑单个权重分量 wi的更新。省略下标 i简化表示:
FTRL的优化问题对每个坐标是独立的:
其中:
- (修正后的累积梯度)
- (梯度平方和)
- 这里做了近似和简化,详细推导见论文
这个问题的解是软阈值函数:
多变量情况的更新规则
对于每个特征 i:
其中:
数学原理的直观图解
如果以下代码执行后,图中有乱码出现,可以添加以下两行解决:
1 | # 解决方案1:设置字体,避免中文显示为方框 |
一维情况下的更新
1 | import numpy as np |
图形解释:
- 在 区域,FTRL直接将权重设为0(稀疏性!)
- 在 区域,FTRL进行软阈值收缩
- 相比SGD/AdaGrad,FTRL有明确的截断机制
二维情况下的优化路径
1 | # 二维优化路径对比 |
关键观察:
- FTRL路径更直接地趋向原点
- FTRL的权重能精确收敛到0(稀疏性)
- SGD在0附近震荡,无法产生精确的0
FTRL的数学创新性总结
理论贡献
- 统一框架:将在线学习、正则化、稳定性约束统一在一个框架内
- 闭式解:虽然优化问题复杂,但能导出逐坐标的闭式解
- 理论保证:有regret bound理论保证,在在线学习场景下是最优的
实际优势的数学原理
| 优势 | 对应的数学原理 |
|---|---|
| 稀疏性 | L1正则化 + 软阈值函数 |
| 稳定性 | 稳定性项 |
| 自适应学习率 | 通过 实现 |
| 处理大规模数据 | 逐坐标更新,只更新非零特征 |
与其他方法的数学联系
FTRL可以看作是以下方法的推广:
- SGD with L1:当去掉稳定性项和历史累积,退化为SGD with L1
- AdaGrad:当去掉L1正则化和稳定性项,近似AdaGrad
- 在线镜像下降:FTRL是OMD的一种特殊形式
- 近端梯度法:FTRL-Proximal是近端梯度法的在线版本
从数学到工程:为什么FTRL有效?
统计学习角度
- 偏差-方差权衡:L1/L2正则化控制模型复杂度
- 在线学习理论:regret bound保证累积损失接近最优
- 稀疏统计理论:L1正则化在适当条件下可恢复真实稀疏模式
优化理论角度
- 收敛性:在凸问题下保证收敛
- 计算效率:逐坐标更新,复杂度O(非零特征数)
- 数值稳定性:自适应学习率避免梯度爆炸
工程实现角度
1 | # FTRL的实际更新公式(工程版本) |
总结:FTRL的数学精髓
图片中的公式:
包含了FTRL的全部数学思想:
- 累积经验:让模型从历史中学习
- 稀疏简约:迫使模型简洁,自动特征选择
- 稳定泛化:防止过拟合
- 平稳进化:稳定性项保证更新不过于激进
FTRL的数学之美在于:它将在线学习的动态性、正则化的结构性、优化算法的有效性,完美地融合在一个简洁的公式中。这个公式不仅是理论分析的工具,也直接导出了高效的工程实现,是连接机器学习理论与工业实践的典范。
