FTRL算法详解

 

一、算法原理

FTRL算法详解_第1张图片

二、算法逻辑

FTRL算法详解_第2张图片

三、个人理解

  • 从loss function的形式来看:FTRL就是将RDA-L1的“梯度累加”思想应用在FOBOS-L1上,并施加一个L2正则项。【PS:paper上是没有加L2正则项的】
  • 这样达到的效果是:
    • 累积加和限定了新的迭代结果W**不要离“已迭代过的解”太远**;
    • 因为调整后的解不会离迭代过的解太远,所以保证了每次找到让之前所有损失函数之和最小的参数;
    • 保留的RDA-L1中关于累积梯度的项,可以看作是当前特征对损失函数的贡献的一个估计【累积梯度越大,贡献越大。】
    • 由于使用了累积梯度,即使某一次迭代使某个重要特征约束为0,但如果后面这个特征慢慢变得稠密,它的参数又会变为非0;
    • 保留的RDA-L1中关于累积梯度的项,与v相加,总会比原来的v大,加起来的绝对值更容易大于L1的阈值,保护了重要的特征;
  • FTRL的巧妙之处在于:
    • 在MSE的前面乘以了一个和learning_rate有着神奇关系的参数σ_s。
    • 因为这个参数,保证了FTRL在不使用L1时和SGD保持了一致性。
  • FTRL使用的自适应learning_rate,其思想和 Adagrad Optimizer 类似的自适应思想:
    • 如果特征稀疏,learning_rate就大一点;
    • 如果特征稠密,learning_rate就小一点;
  • FTRL中为什么要同时兼顾FOBOS-L1和RDA-L1??
    • 因为不是为了产出稀疏而进行变化,真正的目的是产出有效的稀疏解。即稀疏又保留有效特征!!!
    • 稀疏靠RDA-L1,保留有效特征靠FOBOS-L1和RDA-L1的累积梯度思想。
  • 本质上,FTRL只是一种适用于online-learning的optimizer;
  • FTRL-Proximal中的Proximal的含义:
    • t+1次迭代的解,不能离t次迭代的解太远;
    • t+1次迭代的解,不能离0太远;
    • 是对具体约束的表达。

小结:

 

  • FOBOS-L1:使用MSE+L1对w_{t+1/2}进行建模,目标是使调整后的梯度在离SGD结果附近的基础上,产出稀疏解;
  • RDA-L1:使用累积平均梯度 + L1 + L2进行建模,这里使用L2有两方面的理解:
    • 能产出极小值点;
    • 调整后的梯度不能与零点太远;

你可能感兴趣的:(算法)