什么是在线学习,为什么要用在线学习
在一些大型互联网公司的广告系统中,Logistic Regression的权重更新非常看重速度,否则无法应对超大规模的数据集和在线数据流,因此就不能再用传统的批量梯度更新方法。在线学习是根据新来的样本,一边学习,一边对样本进行预测,从而保证了模型的及时更新。在线更新算法主要为了减少在线更新的误差同时又保证参数的稀疏性。
Truncated Gradient
问题定义:
无优化约束描述:
Logistic Regression损失函数:
相对于TG来说,两种传统的优化算法是Gradient Decsent和Stochastic Gradient Decsent。SGD每次只选择一个样本更新参数,但是没有考虑稀疏性。
简单截断
解决参数稠密问题,最简单粗暴的方法就是当参数矩阵W中某维参数w小于设定阈值时直接置为0,但是w数值比较小可能是因为迭代轮数小学习不充分,简单截断可能会丢失重要特征。
K是截断窗口的大小,窗口中的迭代正常进行。
梯度截断
上面的简单截断法看上去十分 aggressive,TG则是对简单截断的一种改进,同样是以 k 作为窗口,每进行 k 步就进行一次截断操作:
从上面的公式可以看出,决定了 W 的稀疏程度,如果和都很大,那么稀疏性就会越强。
由上图可以看出选择,截断梯度法就可以变成简单截断法。从公式上也可以通过计算直接得出。
FOBOS(FORWARD-BACKWARD SPLITTING)
第一项2范数那项表示不能离loss损失迭代结果太远,第二项通常是正则化项(例如L1范数),用来限定模型复杂度、抑制过拟合和做稀疏化等。设:
那么Wt+1的最优解一定在F(W)的偏导集合中:
进而得到另一种权重更新方式:
RDA(Regularized Dual Averaging Algorithm)
RDA的特点是:相对FOBOS,在精度与稀疏性之间做平衡,其中实验表明,在L1正则下,RDA比FOBOS可以更加有效地得到稀疏解。
公式中第一项表明前t轮所有梯度的均值作为了当前轮参数的稀疏,通常指L1范数,通常指L2范数。是一个非负递增序列。自然地RDA的L1形式如下:
因此第t+1轮的参数矩阵中的更新方式如下:
其中
经过推导证明,可以表示成如下形式:
意思就是:当某个维度的累加平均值小于时,时,该维度的权重被设置成零,此时就可以产生特征权重的稀疏性。
RDA与FOBOS形式上的统一:
假设,并带入到FOBOS-L1的权重更新公式中,可以得到:
等式右边除以可以整理成如下形式:
同时LDA-L1可以整理成:
其中,如果令:
上面的公式可以写成:
FOBOS:
RDA:
从公式上来看,
FTRL
FTRL同时借鉴了RDA和FPBOS的思想
用公式表达就是
可以看出,既用到了RDA的前t轮梯度均值,又用到了保证每次迭代权重不会变化太多。
FTRL求解过程如下: