LS-PLM学习笔记

论文链接
Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction
首先介绍了传统的解决方案和局限性
(1)LR不能捕捉非线性
(2)GBDT+LR虽然能够产生非线性特征组合,但是树模型不适用于超高维稀疏数据
(3)FM利用二阶信息来产生变量之间的相关性,但是无法适应多阶模式
LS-PLM采用divide-and-conquer策略,将特征空间分割成若干个子区域,在每个区域采用线性模型,最后用weighted linear predictions组合结果
LS-PLM存在三个优势:Nonlinearity(源于子区域的划分)、Scalability(与LR相似,可并行)、Sparsity(用L1和L2)
论文基于directional derivatives(方向导数)和quasi-Newton(拟牛顿)方法来解决因为正则项使得目标函数非凸的问题。

LS-PLM学习笔记

用softmax函数作为dividing function以及sigmoid函数作为fitting function
其中part1 dividing function将特征空间分割成m歌不同的区域,而part 2对每个区域做预测
损失函数logloss
如何优化?
因为目标函数的负梯度方向并不存在,所以用能够得到f最小的方向导数的方向b作为负梯度的近似值。
论文给了两个定理:
(1)目标函数由smooth loss function with L1 and L2,1 norm,对于任意的参数空间和方向d,其方向导数f(Θ;d)总是存在的
(2)
LS-PLM学习笔记
基于公式9,根据limited-memory quasi-newton method (LBFGS)沿着下降方向进行参数的更新,同时在每一步迭代中限制了模型参数符号
LS-PLM学习笔记
关于inverse-Hessian matrix Hkd(k)的估计做了两个trick:
(1)constrain the update direction in the orthant with respect to d(k)
(2)因为目标函数非凸,无法保证Hk正定,所以把yTs>0作为限制条件
LS-PLM学习笔记
LS-PLM学习笔记
最后在用backtracking line search寻找合适的步长α
LS-PLM学习笔记
整个流程(这里公式太多,建议还是看论文)
系统架构的并行化实现

LS-PLM学习笔记
work node负责保存局部的训练数据的模型参数,而server node 存储了整体模型的一部分(互斥)。每一步迭代中,在worker nodes上是数据并行的(各自计算损失和下降放下),而server nodes则把这些聚合起来(模型并行)对梯度进行修正。
针对CTR,论文用common features trick优化并行
(1)训练具有共同特征的样本,并确保这些样本存储在同一个worker中。
(2)通过只存储一次共享多个样本的公共特性来节省内存。
(3)关于共同特征只有一次加速迭代更新损失和梯度的过程。
最后和LR对比了方法的精度和效率。