FTRL 算法理解

Online LR—— FTRL 算法理解

Online Learning定义

Online Learning是一种模型训练的方法,能够根据线上反馈数据,实时快速的进行模型调整,使得模型及时反映线上的变化,提高线上预测的准确率。Online Learning的流程包括:将模型预测结果展现给用户,然后收集用户的反馈数据,再来训练模型,形成闭环的系统。

与传统训练方法的区别

传统的训练方法在模型训练上线后,一般是静态的,不会于线上的状况有任何的互动,加入预测错误,只能在下一次更新的时候完成修正,但是这个更新的时间一般比较长。Online Learning训练方法不同,会根据线上的预测结果动态调整模型,加入模型预测错误,会及时做出修正,因此Online Learning能够更加及时地反应线上变化。对于Online learning最重要的问题是SGD很难得到需要的正则化设计的解,特别是几乎得不到稀疏解(因为是浮点运算,训练出的w向量很难出现绝对的0。 当然可以采用当w较小时就强制为0)。

此处插入下关于稀疏性的常见解决方法[关于稀疏性可参考](http://blog.sina.com.cn/s/blog_eb3aea990101e8rj.html)
1.  加入L1范数
2.  在L1范数的基础上做截断:设定一个阈值做截断来保证稀疏,在online训练K个数据阶段一次。
3.  Black-box wrapper: 利用黑盒方法去掉一些特征,重新训练看去掉的特征是否有效。

Online Learning目标

Online Learning的优化目标是使得整体的损失函数最小化,它需要快速求解目标函数的最优解。

实现方法

Bayesian Online Learning

贝叶斯方法通过给定参数先验,根据反馈计算后验,将其作为下一次预测的先验,然后根据反馈计算后验,如此循环,可以参考此处

FTRL

FTRL 是在之前的几个工作上产生的,主要出发点就是为了提高稀疏度且满足精度要求,关于这个发展可以参照这个地址讲的很清晰 
先上FTRL 的伪代码:

这里写图片描述

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

关于这个公式是怎么来的,推导如下:

这里写图片描述

在论文中还提到了一些工程上的小trick, 我现在还感受不到啦~ 可以参考上面给的参考地址的解释,感觉很厉害。

最后当然还是得呼应下标题,为什么说是Online LR实现, 其实FTRL 就是正则项为0的SGD算法。

这里写图片描述

以上就是一些看论文的整理啦。

转载自:https://blog.csdn.net/ustbfym/article/details/79125977

另外一篇值得推荐的博客:https://blog.csdn.net/jediael_lu/article/details/77772542

猜你喜欢

转载自blog.csdn.net/hongxingabc/article/details/81388987