文章目录

  • 相关介绍
    • SGD: Stochastic Gradient Descent
    • TG
      • 简单加入L1范数
      • 简单截断法
      • 梯度截断法
    • FOBOS: Forward Backward Splitting[^4]
      • RDA: Regularized dual averaging[^5]
  • FTRL: Follow-the-Regularized-Leader
  • 总结

相关介绍

SGD: Stochastic Gradient Descent

由于批量梯度下降法在更新每一个参数时,都需要所有的训练样本,所以训练过程会随着样本数量的加大而变得异常的缓慢。 与SGD比较,GD需要每次扫描所有的样本以计算一个全局梯度,SGD则每次只针对一个观测到的样本进行更新。通常情况下SGD可以更快的逼近最优值,而且SGD每次更新只需要一个样本,使得它很适合进行增量或者在线计算(也就是所谓的Online learning)。权重更新方式如下:

Δωt=−ηgt\Delta {\omega_t} = - \eta {g_t}Δωt​=−ηgt​

ωt+1=ωt+Δωt{\omega_{t + 1}} = {\omega_t} + \Delta {\omega_t}ωt+1​=ωt​+Δωt​

特别的,迭代和选取模型的时候我们经常希望得到更加稀疏的模型,这不仅仅起到了特征选择的作用,也降低了预测计算的复杂度。在实际使用LR的时候我们会使用L1或者L2正则,避免模型过拟合和增加模型的鲁棒性。在GD算法下,L1正则化通常能得到更加稀疏的解;可是在SGD算法下模型迭代并不是沿着全局梯度下降,而是沿着某个样本的梯度进行下降,这样即使是L1正则也不一定能得到稀疏解1

TG

简单加入L1范数

如上所说,在GD算法下,L1正则化通常能得到更加稀疏的解;可是在SGD算法下模型迭代并不是沿着全局梯度下降,而是沿着某个样本的梯度进行下降,这样即使是L1正则也不一定能得到稀疏解。a+b两个float数很难绝对等于零,无法产生真正稀疏的特征权重。权重更新方式如下:

Δωt=−gt−λsgn(ωt)\Delta {\omega _t} = - {g_t} - \lambda {\mathop{\rm sgn}} ({\omega _t})Δωt​=−gt​−λsgn(ωt​)

ωt+1=ωt+ηΔωt{\omega _{t + 1}} = {\omega _t} + \eta \Delta {\omega _t}ωt+1​=ωt​+ηΔωt​

简单截断法

既然L1正则化在Online模式下也不能产生更好的稀疏性,而稀疏性对于高维特征向量以及大数据集又特别的重要,我们应该如何处理的呢?

简单粗暴的方法是设置一个阀值,当W的某纬度的系数小于这个阀值的时候,将其直接设置为0。这样我们就得到了简单截断法。简单截断法以kkk为窗口,当tk{t \over k}kt​不为整数时采用标准的SGD进行迭代,当tk{t \over k}kt​为整数时,权重更新方式如下:

ωt+1=T0(ωt+ηΔωt,θ){\omega _{t + 1}} = {T_0}({\omega _t} + \eta \Delta {\omega _t},\theta )ωt+1​=T0​(ωt​+ηΔωt​,θ)

T0(vi,θ)={0,if∣vi∣≤0vi,otherwise{T_0}({v_i},\theta )=\left\{\begin{array}{cc} 0, & {if \quad|{v_i}| \le 0}\\ {{v_i}}, & otherwise \end{array}\right.T0​(vi​,θ)={0,vi​,​if∣vi​∣≤0otherwise​

θ\thetaθ为一正数,viv_ivi​为一向量。

梯度截断法

简单截断法法简单且易于理解,但是在实际训练过程中的某一步,ω\omegaω的某个特征系数可能因为该特征训练不足引起的,简单的截断过于简单粗暴(too aggresive),会造成该特征的缺失。那么我们有没有其他的方法,使得权重的归零和截断处理稍微温柔一些呢?那就是梯度截断法。

ωt+1=T0(ωt+η∇L(ωt),ηgi,θ){\omega _{t + 1}} = {T_0}({\omega _t} + \eta \nabla L({\omega _t}),\eta {g_i},\theta )ωt+1​=T0​(ωt​+η∇L(ωt​),ηgi​,θ)

T1(vi,α,θ)={max⁡(0,vi−α),ifvi∈[0,θ]min⁡(0,vi+α),ifvi∈[−θ,0]vi,otherwise(1){T_1}({v_i},\alpha ,\theta )=\left\{\begin{array}{cc} \max (0,{v_i} - \alpha ),&{\rm{ }}if\quad {v_i} \in [0,\theta ]\\ \min (0,{v_i} + \alpha ),&{\rm{ }}if\quad {v_i} \in [ - \theta ,0]\\ {v_i}, & otherwise \end{array}\right.\tag1T1​(vi​,α,θ)=⎩⎨⎧​max(0,vi​−α),min(0,vi​+α),vi​,​ifvi​∈[0,θ]ifvi​∈[−θ,0]otherwise​(1)

同样的梯度截断法也是以kkk为窗口,每kkk步进行一次截断。当tk{t \over k}kt​不为整数时,当tk{t \over k}kt​为整数时gi=kg{g_i}=kggi​=kg。从Eq.(1)可以看出ggg和θ\thetaθ决定了截断的区域,也决定了ω\omegaω的稀疏程度。这两个数值越大,截断区域越大,稀疏性也越强。尤其这两个值相等的时候,只需要调节一个参数就能控制稀疏性。

FOBOS: Forward Backward Splitting2

FOBOS将每一个数据的迭代过程,分解成一个经验损失梯度下降迭代Eq.(1)和一个最优化问题Eq.(2)。分解出的最优化问题Eq.(2),有两项:第一项l2范数表示不能离第一步loss损失迭代结果太远,第二项是正则化项,用来限定模型复杂度抑制过拟合和做稀疏化等3

ωt+12=ωt−ηtgtf(1){\omega _{t + {1 \over 2}}} = {\omega _t} - {\eta _t}{g_t}^f\tag1ωt+21​​=ωt​−ηt​gt​f(1)

ωt+1=arg⁡min⁡ω{12∥ω−ωt+12∥2+ηt+12r(ωt)}(2){\omega _{t + 1}} = \mathop {\arg \min }\limits_\omega \left\{ {{1 \over 2}{{\left\| {\omega - {\omega _{t + {1 \over 2}}}} \right\|}^2} + {\eta _{t + {1 \over 2}}}r({\omega _t})} \right\}\tag2ωt+1​=ωargmin​{21​∥∥∥​ω−ωt+21​​∥∥∥​2+ηt+21​​r(ωt​)}(2)

对Eq.(2)求ωt+1{\omega _{t + 1}}ωt+1​导数,我们可以得出一个结论:000一定属于Eq.(2)等号右边的导数集!

0∈∂{12∥ω−ωt+12∥2+ηt+12∂r(ωt+1)}∣ω=ωt+1(3)0 \in \partial {\left. {\left\{ {{1 \over 2}{{\left\| {\omega - {\omega _{t + {1 \over 2}}}} \right\|}^2} + {\eta _{t + {1 \over 2}}}\partial r({\omega _{t + 1}})} \right\}} \right|_{\omega = {\omega _{t + 1}}}}\tag30∈∂{21​∥∥∥​ω−ωt+21​​∥∥∥​2+ηt+21​​∂r(ωt+1​)}∣∣∣∣​ω=ωt+1​​(3)

由于ωt+1=ωt−ηtgtf{\omega _{t + 1}} = {\omega _t} - {\eta _t}{g_t}^fωt+1​=ωt​−ηt​gt​f,可得

0∈ωt+1−ωt+ηtgtf+ηt+12∂r(ωt+1)(4)0 \in {\omega _{t + 1}} - {\omega _t} + {\eta _t}{g_t}^f + {\eta _{t + \frac{1}{2}}}\partial r({\omega _{t + 1}})\tag40∈ωt+1​−ωt​+ηt​gt​f+ηt+21​​∂r(ωt+1​)(4)

Eq.(4)意味着只要选择使得Eq.(3)最小的ωt+1{\omega _{t + 1}}ωt+1​,那么就保证可以获得向量gt+1f∈∂r(ωt+1){g_{t + 1}}^f \in \partial r({\omega _{t + 1}})gt+1​f∈∂r(ωt+1​)使得:
0=ωt+1−ωt+ηtgtf+ηt+12gt+1f(5)0 = {\omega _{t + 1}} - {\omega _t} + {\eta _t}{g_t}^f + {\eta _{t + \frac{1}{2}}}{g_{t + 1}}^f\tag50=ωt+1​−ωt​+ηt​gt​f+ηt+21​​gt+1​f(5)

从而将ωt+1{\omega _{t + 1}}ωt+1​写成:

ωt+1=ωt−ηtgtf−ηt+12gt+1f(6){\omega _{t + 1}} = {\omega _t} - {\eta _t}{g_t}^f - {\eta _{t + {1 \over 2}}}{g_{t + 1}}^f\tag6ωt+1​=ωt​−ηt​gt​f−ηt+21​​gt+1​f(6)

最后论文中推导了带L1正则的FOBOS算法。权重更新式为:

算法伪代码如下:

RDA: Regularized dual averaging4

之前的算法都是在SGD的基础上,属于梯度下降类型的方法,这类型的方法的优点是精度比较高,并且TG、FOBOS也能在稀疏性上得到提升。但是RDA却从另一个方面进行在线求解,并且有效提升了特征权重的稀疏性。

L1-RDA特征权重各个纬度更新方式为:

这里当某个纬度上累积梯度平均值小于阀值的时候,该纬度权重将被设置为0,特征稀疏性由此产生。

对比L1-FOBOS我们可以发现,L1-FOBOS是TG的一种特殊形式,在L1-FOBOS中,进行截断的判定条件是$|{\omega _t} - {\eta _t}{g_t}^f| \le {\lambda _{TG}} = {\eta _{t + {1 \over 2}}}\lambda 。通常会定义为正相关函数。通常会定义为正相关函数。通常会定义为正相关函数\eta = \Theta \left( {{1 \over {\sqrt t }}} \right)。因此L1−FOBOS的截断阀值为。因此L1-FOBOS的截断阀值为。因此L1−FOBOS的截断阀值为\Theta \left( {{1 \over {\sqrt t }}} \right)\lambda ,随着,随着,随着t$增加,这个阀值会逐渐降低。而相比较而言L1-RDA的截断阀值为,是一个固定的常数,因此可以认定L1-RDA比L1-FOBOS更加aggressive。此外L1-FOBOS判定是针对单次梯度计算进行判定,避免由于训练不足导致的截断问题。并且通过调节一个参数,很容易在精度和稀疏性上进行权衡。

给出其两种实现的伪代码:

FTRL: Follow-the-Regularized-Leader

有实验证明,L1-FOBOS这一类基于梯度下降的方法有较高的精度,但是L1-RDA却能在损失一定精度的情况下产生更好的稀疏性。如何能把这两者的优点同时体现出来的呢?这就是FTRL,L1-FOBOS与L1-RDA在形式上的统一。这里有张来自引用[3]的图:

FTRL综合考虑了FOBOS和RDA对于正则项和W的限制,其特征权重为:

而后可导出更新式为:

具体的变换推导,请参考2013年发表的FTRL工程化实现的论文5

其采用L1和L2混合正则的FTRL的伪代码如下:

上面所谓的per-coordinate,其意思是FTRL是对www每一维分开训练更新的,每一维使用的是不同的学习速率,也是上面代码中λ2\lambda_2λ2​之前的那一项。与www所有特征维度使用统一的学习速率相比,这种方法考虑了训练样本本身在不同特征上分布的不均匀性,如果包含www某一个维度特征的训练样本很少,每一个样本都很珍贵,那么该特征维度对应的训练速率可以独自保持比较大的值,每来一个包含该特征的样本,就可以在该样本的梯度上前进一大步,而不需要与其他特征维度的前进步调强行保持一致。

总结

从类型上来看,简单截断法、TG、FOBOS属于同一类,都是梯度下降类的算法,并且TG在特定条件可以转换成简单截断法和FOBOS;RDA属于简单对偶平均的扩展应用;FTRL6可以视作RDA和FOBOS的结合,同时具备二者的优点。目前来看,RDA和FTRL是最好的稀疏模型Online Training的算法。FTRL并行化处理,一方面可以参考ParallelSGD,另一方面可以使用高维向量点乘,及梯度分量并行计算的思路。


  1. 机器学习(五)— FTRL一路走来,从LR -> SGD -> TG -> FOBOS -> RDA -> FTRL ↩︎

  2. Efficient Online and Batch Learning Using Forward Backward Splitting ↩︎

  3. 各大公司广泛使用的在线学习算法FTRL详解 ↩︎

  4. Dual Averaging Methods for Regularized Stochastic Learning and Online Optimization ↩︎

  5. Ad Click Prediction: a View from the Trenches ↩︎

  6. Follow-the-Regularized-Leader and Mirror Descent: Equivalence Theorems and L1 Regularization ↩︎

在线学习算法FTRL基本原理相关推荐

  1. 机器学习算法平台alink_Alink漫谈(十二) :在线学习算法FTRL 之 整体设计

    Alink漫谈(十二) :在线学习算法FTRL 之 整体设计 [Toc] 0x00 摘要 Alink 是阿里巴巴基于实时计算引擎 Flink 研发的新一代机器学习算法平台,是业界首个同时支持批式算法. ...

  2. 各大公司广泛使用的在线学习算法FTRL详解

    现在做在线学习和CTR常常会用到逻辑回归( Logistic Regression),而传统的批量(batch)算法无法有效地处理超大规模的数据集和在线数据流,google先后三年时间(2010年-2 ...

  3. 【GNN】图嵌入之 DeepWalk:基于社交表征的在线学习算法

    论文名称:DeepWalk: Online Learning of Social Representations 论文下载:https://arxiv.org/abs/1403.6652 论文年份:S ...

  4. android 入侵检测系统,面向Android智能手机异常入侵检测的在线学习算法.DOC

    面向Android智能手机异常入侵检测的在线学习算法 页码 计算机应用研究 第28卷收稿日期:2014-00-00:修回日期: 基金项目:基金项目1全称(基金项目号):基金项目2全称(基金项目号):作 ...

  5. 在线学习算法(Online Learning)理论与实践

    背景 Online Learning是工业界比较常用的机器学习算法,在很多场景下都能有很好的效果.本文主要介绍Online Learning的基本原理和两种常用的Online Learning算法:F ...

  6. 上交张伟楠副教授:基于模型的强化学习算法,基本原理以及前沿进展(附视频)

    2020 北京智源大会 本文属于2020北京智源大会嘉宾演讲的整理报道系列.北京智源大会是北京智源人工智能研究院主办的年度国际性人工智能高端学术交流活动,以国际性.权威性.专业性和前瞻性的" ...

  7. 深度学习算法原理_用于对象检测的深度学习算法的基本原理

    深度学习算法原理 You just got a new drone and you want it to be super smart! Maybe it should detect whether ...

  8. 在线学习FTRL介绍及基于Flink实现在线学习流程

    背景 目前互联网已经进入了AI驱动业务发展的阶段,传统的机器学习开发流程基本是以下步骤: 数据收集->特征工程->训练模型->评估模型效果->保存模型,并在线上使用训练的有效模 ...

  9. 新兴机器学习算法:在线学习

    1.前言 前面介绍的是对于所有训练样本{(xi,yi)}i=1->n同时进行学习的回归.分类算法.一般来说,在训练样本不同时给定的情况下,比起将所有的训练样本集中起来同时进行学习,把训练样本逐个 ...

最新文章

  1. 程序员如何缓解“电脑病”
  2. 中职计算机专业英语说课稿,高职高专英语说课稿
  3. 『重构--改善既有代码的设计』读书笔记----序
  4. [jQuery] jQuery.fn的init方法返回的this指的是什么对象?为什么要返回this
  5. leetcode 112路径总和
  6. 。。。。。etc 时域错误隐藏个人理解
  7. 10 行代码构建常见目标检测应用
  8. python无条件跳转_python按按钮实现界面跳转_python实现界面跳转 - CSDN
  9. springmvc 处理器方法返回的是string 重定向到处理器方法
  10. CTS(14)---Android O CTS 测试之Media相关测试小结(二)
  11. http请求后status为canceled处理
  12. vue 获取安卓原生方法_H5-vue与原生Android、ios交互获取相册图片
  13. masscan for windows windows编译masscan
  14. linux装回windows系统,装linux后怎样装回windows?(Linux系统清除Grub的几种方法)
  15. 网站安全测试-安全性缺陷
  16. 用Matplotlib绘制渐变的彩色曲线
  17. 按键精灵——欲望驱使之下的碧蓝航线12-4练级脚本
  18. Ubuntu下九大最佳绘图程序---kolourpaint4 ubantu已经自带了
  19. CentOS7-查看和设置日期时间
  20. 日志审计系统的基本原理与部署方式

热门文章

  1. 开发者收到“加料”的假 Offer,害上家被盗近 6.25 亿美元!
  2. 论文阅读KMN:Kernelized Memory Network for Video Object Segmentation
  3. 刺激战场春节版年兽全网最详细位置,另附刺激战场更新内容
  4. python批量裁剪图像
  5. 自用大智慧策略l2支持行情
  6. 贝赛尔曲线及其应用全面解析
  7. 买卖股票的最佳时机——力扣121题
  8. C语言手机通讯录系统
  9. 雪加,电子烟风口上的“孙宇晨”
  10. Chrome 插件下载、安装、加载正在开发的扩展程序和打包扩展程序