博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LS-PLM学习笔记
阅读量:4222 次
发布时间:2019-05-26

本文共 1268 字,大约阅读时间需要 4 分钟。

论文链接

首先介绍了传统的解决方案和局限性
(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(拟牛顿)方法来解决因为正则项使得目标函数非凸的问题。

这里写图片描述

用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) f ′ ( Θ ; d ) 总是存在的
(2)
这里写图片描述
基于公式9,根据limited-memory quasi-newton method (LBFGS)沿着下降方向进行参数的更新,同时在每一步迭代中限制了模型参数符号
这里写图片描述
关于inverse-Hessian matrix Hkd(k) H k d ( k ) 的估计做了两个trick:
(1)constrain the update direction in the orthant with respect to d(k) d ( k )
(2)因为目标函数非凸,无法保证 Hk H k 正定,所以把 yTs>0 y T s > 0 作为限制条件
这里写图片描述
这里写图片描述
最后在用backtracking line search寻找合适的步长 α α
这里写图片描述
整个流程(这里公式太多,建议还是看论文)
系统架构的并行化实现

这里写图片描述

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

你可能感兴趣的文章
HighCharts线型设定
查看>>
把win7 资源管理器的导航树改成xp的样式
查看>>
highcharts 内存泄露的解决
查看>>
blockUI 模态窗口
查看>>
网络通讯堵塞情况下的定时刷新
查看>>
手动将Apache注册为系统服务
查看>>
jdbc中Datetime与java.util.Date的相互转换
查看>>
hibernate中取得connection的方法
查看>>
如何使用log4j输出单个级别的log到指定文件
查看>>
表单元素与提示文字无法对齐的解决方法
查看>>
图片按钮消除边框
查看>>
关于汉字的正则表达式
查看>>
[转载]去除 struts2 标签中的自动生成的布局样式
查看>>
js控制html中的readonly
查看>>
在js中使用动态原型方法定义对象
查看>>
javascript注册事件的四种方式
查看>>
S.O.L.I.D五大原则之SRP(单一职责)
查看>>
自定义Struts2中的ActionErrors
查看>>
windows xp 系统CMD命令大全
查看>>
控制Highcharts中x轴和y轴坐标值的密度
查看>>