在线学习(online learning)总结

最近研究在线学习,对理论和工程化做一些记录与总结,供以后回顾。话不多说,直接进入正题。

一、背景

传统机器学习开发流程基本是:数据收集->特征工程->模型训练->模型评估->保存模型->线上模型预测。这种方式有一定的缺陷,主要体现在以下方面:

        . 模型更新周期慢,不能有效反映线上变化,最快小时级,一般天级甚至周级;

        . 模型参数少,预测效果差;模型参数多,线上预测时需要内存大,QPS无法保证;

并且,在互联网行业,数据量往往特别大,几百G甚至更大。这种级别的数据在训练的时候直接套用一些算法框架是无法训练的,基本在特征工程阶段就会遇到瓶颈。通常采用采样、截断的方式获取更小的数据集,或者使用大数据集群的方式进行训练。这两种方式也存在两种问题:

        . 采样数据或者截断数据的方式,非常的依赖前期的数据分析以及经验;

        . 大数据集群的方式,spark、flink等支持的原生机器学习模型较少,且训练出来的模型较为复杂;

无论是线性回归、逻辑回归、支持向量机、深度学习中,最优化都是基本步骤。常见的梯度下降、牛顿法、拟牛顿法等都属于批量处理的方法(batch),每次更新都需要对已经训练过的样本重新训练一遍。在面对高维高数据量的时候,批量处理的方式就显得笨重和不够高效,因此需要要在线(online)处理的方法。

二、在线最优化算法理论

主要参考冯扬老师的《在线最优化求解》,沿着提升模型稀疏性的主线进行算法总结。

online模式下数据是流式的产生,类似随机梯度优化,L1正则化在online模式下也不能产生较好的稀疏性,故需要对其进行改进优化。

主要分为三类:

        一类梯度下降类的算法,该列算法优点就是精度比较高,并且TG、FOBOS也能在稀疏性上得到提升:简单截断法、截断梯度法(TG)、前向后向切分(FOBOS);

                简单截断法:最简单粗暴的方式设定一个阈值,当W某维度上系数小于这个阈值时将其设置为0;

                截断梯度法(TG):是对简单截断的改进,同样是采用截断的方式,但是比较不那么粗暴;

                前向后向切分(FOBOS):在FOBOS中,权重更新分为两个步骤:前一个步骤实际上是一个标准的梯度下降步骤,后一个步骤可以理解为对梯度下降的结果的微调;第二步对W微调也分为两部分:(1)、前一步保证微调发生在梯度下降结果的附近;(2)、后一部分则用于处理正则化,产生稀疏性;

                L1-FOBOS:加了L1正则的FOBOS,能够取得比较好的稀疏性;如公式也可以认为L1-FOBOS是TG在特定条件下的特殊形式;

        一类是简单对偶平均的扩展应用,从另一个方面求解Online Optimization并且更有效的提升了特征权重的稀疏性:正则对偶平均(RDA);

                RDA:梯度更新公式中包含3个部分:(1)、线性函数,包含了之前所以梯度(或次梯度)的平均值;(2)、正则项;(3)、额外正则项,它是一个严格凸函数;

                L1-RDA:加了L1正则的RDA,当某个维度累积梯度平均值的绝对值小于阈值时,该维度权重被置为0,特征权重稀疏性由此产生。L1-RDA与L1-FOBOS比较:L1-FOBOS的“截断阈值”随着t增加而逐渐降低,而L1-RDA的“截断阈值”为常数,不随t而变化,因而更易产生稀疏解。有实验表明,L1-FOBOS这一类基于梯度下降的方法有比较高的精度,但是L1-RDA却能在损失一定精度的情况下产生更好的稀疏性;

        一类是RDA和FOBOS的结合:FTRL(Follow the Regularized Leader);

                FTRL:综合考虑了FOBOS和RDA对于正则项和W限制的区别。目前工业街使用最多的也是FTRL作为在线优化的算法。

参考文献

[1] 在线最优化求解(online optimization)-冯扬-2014.12.09 - 豆丁网

你可能感兴趣的:(机器学习,学习)