深度学习中的优化器之FTRL(Follow-The-Regularized-Leader)算法原理与实现细节
字数 1751 2025-11-02 00:38:37

深度学习中的优化器之FTRL(Follow-The-Regularized-Leader)算法原理与实现细节

题目描述
FTRL是一种在线优化算法,广泛应用于大规模机器学习场景(如推荐系统、CTR预估)。其核心思想是:在每次更新模型参数时,不仅考虑当前梯度的方向,还通过正则化项控制参数的变化幅度,避免过于激进的更新。题目要求详细解释FTRL的数学原理、与传统优化器(如AdaGrad)的区别,以及如何通过近端梯度下降实现稀疏解。

解题过程

  1. 问题背景
    在线学习场景中,数据以流式到达,模型需实时更新。传统批量优化(如SGD)需多次遍历数据,而FTRL每收到一个样本即可更新参数,同时通过正则化(如L1)产生稀疏模型(部分权重为0),提升计算效率。

  2. 基础概念:FTRL的损失函数形式
    设第\(t\)步的损失函数为\(f_t(w)\),FTRL的目标是最小化累积损失加正则项:

\[ w_{t+1} = \arg\min_{w} \left( \sum_{s=1}^{t} f_s(w) + \psi(w) \right) \]

其中\(\psi(w)\)是正则化项(如L1正则\(\lambda \|w\|_1\))。

  1. 关键步骤:线性化近似与正则化
    • 将累积损失\(\sum f_s(w)\)在当前参数\(w_t\)处一阶泰勒展开,近似为:

\[ \sum_{s=1}^{t} \left[ f_s(w_t) + \nabla f_s(w_t)^\top (w - w_t) \right] + \psi(w) \]

  • 忽略常数项,问题简化为:

\[ w_{t+1} = \arg\min_{w} \left( g_{1:t}^\top w + \psi(w) + \frac{1}{2} \sum_{s=1}^{t} \sigma_s \|w - w_s\|_2^2 \right) \]

 其中$ g_{1:t} = \sum_{s=1}^{t} \nabla f_s(w_s) $是累积梯度,$ \sigma_s $是控制学习率的序列。
  1. 与AdaGrad的结合:自适应学习率
    • \(\sigma_s = \frac{1}{\eta_s} - \frac{1}{\eta_{s-1}}\),其中\(\eta_s = \frac{\alpha}{\beta + \sqrt{\sum_{i=1}^{s} g_i^2}}\)(AdaGrad风格的学习率)。
    • 代入后,问题转化为:

\[ w_{t+1} = \arg\min_{w} \left( g_{1:t}^\top w + \psi(w) + \frac{1}{2\eta_t} \|w\|_2^2 \right) \]

 此形式称为"FTRL-Proximal",可高效求解。
  1. 稀疏性实现:L1正则化的近端算子
    • \(\psi(w) = \lambda \|w\|_1\)时,闭式解可通过软阈值函数得到:

\[ w_{t+1,i} = \begin{cases} 0 & \text{if } |z_{t,i}| \leq \lambda \\ -\eta_t (z_{t,i} - \lambda \cdot \text{sign}(z_{t,i})) & \text{otherwise} \end{cases} \]

 其中$ z_t = g_{1:t} - \sum_{s=1}^{t} \sigma_s w_s $为累积梯度修正项。稀疏性由L1正则的阈值控制。
  1. 算法伪代码

    输入:学习率α, 正则参数λ, 参数β
    初始化:z=0, n=0 (梯度平方和)
    for t=1 to T do
       接收样本(x_t, y_t),计算梯度g_t = ∇f_t(w_t)
       更新n_i = n_i + g_{t,i}^2  (每个维度单独更新)
       计算学习率η_{t,i} = α / (β + √n_i)
       更新z_i = z_i + g_{t,i} - (√n_i - √n_{i,old})/α * w_{t,i}
       更新参数:w_{t+1,i} = 0 if |z_i|≤λ else -(η_{t,i}) * (z_i - λ·sign(z_i))
    end for
    
  2. 与AdaGrad的对比

    • AdaGrad直接更新:\(w_{t+1} = w_t - \eta_t g_t\),缺乏显式正则化,稀疏性差。
    • FTRL通过正则项和近端投影,显式控制参数幅度,更适合高维稀疏数据。

总结
FTRL通过结合自适应学习率与近端梯度下降,平衡了模型精度与稀疏性,成为大规模在线学习的核心算法。其优势在于:① 每步更新仅需当前样本;② L1正则化自动特征选择;③ 学习率自适应调整,稳定性强。

深度学习中的优化器之FTRL(Follow-The-Regularized-Leader)算法原理与实现细节 题目描述 FTRL是一种在线优化算法,广泛应用于大规模机器学习场景(如推荐系统、CTR预估)。其核心思想是:在每次更新模型参数时,不仅考虑当前梯度的方向,还通过正则化项控制参数的变化幅度,避免过于激进的更新。题目要求详细解释FTRL的数学原理、与传统优化器(如AdaGrad)的区别,以及如何通过近端梯度下降实现稀疏解。 解题过程 问题背景 在线学习场景中,数据以流式到达,模型需实时更新。传统批量优化(如SGD)需多次遍历数据,而FTRL每收到一个样本即可更新参数,同时通过正则化(如L1)产生稀疏模型(部分权重为0),提升计算效率。 基础概念:FTRL的损失函数形式 设第\( t \)步的损失函数为\( f_ t(w) \),FTRL的目标是最小化累积损失加正则项: $$ w_ {t+1} = \arg\min_ {w} \left( \sum_ {s=1}^{t} f_ s(w) + \psi(w) \right) $$ 其中\( \psi(w) \)是正则化项(如L1正则\( \lambda \|w\|_ 1 \))。 关键步骤:线性化近似与正则化 将累积损失\( \sum f_ s(w) \)在当前参数\( w_ t \)处一阶泰勒展开,近似为: $$ \sum_ {s=1}^{t} \left[ f_ s(w_ t) + \nabla f_ s(w_ t)^\top (w - w_ t) \right ] + \psi(w) $$ 忽略常数项,问题简化为: $$ w_ {t+1} = \arg\min_ {w} \left( g_ {1:t}^\top w + \psi(w) + \frac{1}{2} \sum_ {s=1}^{t} \sigma_ s \|w - w_ s\| 2^2 \right) $$ 其中\( g {1:t} = \sum_ {s=1}^{t} \nabla f_ s(w_ s) \)是累积梯度,\( \sigma_ s \)是控制学习率的序列。 与AdaGrad的结合:自适应学习率 令\( \sigma_ s = \frac{1}{\eta_ s} - \frac{1}{\eta_ {s-1}} \),其中\( \eta_ s = \frac{\alpha}{\beta + \sqrt{\sum_ {i=1}^{s} g_ i^2}} \)(AdaGrad风格的学习率)。 代入后,问题转化为: $$ w_ {t+1} = \arg\min_ {w} \left( g_ {1:t}^\top w + \psi(w) + \frac{1}{2\eta_ t} \|w\|_ 2^2 \right) $$ 此形式称为"FTRL-Proximal",可高效求解。 稀疏性实现:L1正则化的近端算子 当\( \psi(w) = \lambda \|w\| 1 \)时,闭式解可通过软阈值函数得到: $$ w {t+1,i} = \begin{cases} 0 & \text{if } |z_ {t,i}| \leq \lambda \\ -\eta_ t (z_ {t,i} - \lambda \cdot \text{sign}(z_ {t,i})) & \text{otherwise} \end{cases} $$ 其中\( z_ t = g_ {1:t} - \sum_ {s=1}^{t} \sigma_ s w_ s \)为累积梯度修正项。稀疏性由L1正则的阈值控制。 算法伪代码 与AdaGrad的对比 AdaGrad直接更新:\( w_ {t+1} = w_ t - \eta_ t g_ t \),缺乏显式正则化,稀疏性差。 FTRL通过正则项和近端投影,显式控制参数幅度,更适合高维稀疏数据。 总结 FTRL通过结合自适应学习率与近端梯度下降,平衡了模型精度与稀疏性,成为大规模在线学习的核心算法。其优势在于:① 每步更新仅需当前样本;② L1正则化自动特征选择;③ 学习率自适应调整,稳定性强。