论文中为了严谨性使用LS-PLM: Large Scale Piecewise Linear Model 来命名MLR算法。
1. Motivation:
传统模型的不足:
LR模型的优点是可以很容易的实现并行化,轻松的处理上亿条训练样本。
LR是线性模型,它的学习能力有限,所以需要引入大量的领域知识来人为进行特征工程,构造交叉特征来间接补充算法的非线性拟合能力,迁移性不够友好。
SVM kernel方法:复杂度太高。
Facebook在2014年提出了GBDT+LR的模型。Tree-Based有效的解决了LR模型的特征组合问题,但是输入全是id的情况下,树模型更多的是对历史行为的一种记忆,缺乏推广性。在强特征上表现很好。
矩阵分解(Topic Model,LDA等):适用于两种id的情况,不适合多种id输入。
FM(Factorization Machine)模型能够自动学习高阶特征的权重,不用人工来做特征交叉,而且解决了在高维度样本下数据量不充分导致的问题。
FM只能拟合特定的非线性模式,常用的就是二阶FM。无法拟合其他非线性关系,比如值的高阶变换等。
2012年时候,DNN还没普及。
这种情况下,盖坤团队提出了:MLR(mixed logistic regression),在论文中的名称是LS-PLM(Large Scale Piece-wise Linear Model).
2. MLR算法
参考了MOE(牛顿法)模型,MOE与LR做级联。从神经网络的视角来看,就是分片做线性预测,再对不同的分片预测做向量内积。
MLR算法创新地提出并实现了直接在原始空间学习特征之间的非线性关系,基于数据自动发掘可推广的模式,相比于人工来说效率和精度均有了大幅提升。
MLR(LS-PLM)采用分而治之的策略,首先把特征空间划分为几个本地regions,然后在每个region拟合一个线性模型,结果输出线性预测值的加权组合。注意,这两步是以监督学习的方式同时学习的,目标是最小化预测损失。LS-PLM在web规模数据挖掘中的优势有以下三方面:
- 非线性。划分足够的区域,就能拟合复杂的非线性函数。
- 伸缩性。与LR模型类似,都可以很好的处理复杂的样本与高维的特征。并且可以在几百台机器上并行处理上百万的参数。
- 稀疏性。工业场景中,模型的稀疏性对online serving是一个很现实的问题。MLR采用L1和L2正则来达到很好的稀疏性。
论文中一个直观的例子,如下图,LR不能拟合非线性数据,MLR可以拟合非线性数据,因为划分-训练模式。这种菱形分界面(非线性数据)其实非常难学,但MLR在其中表现出色。通过控制分片数量m,可以平衡模型的拟合能力和过拟合。上图m=4。论文中m=12得到了不错的效果。理论上来说,增大m可以带来无限制的非线性拟合能力,但是同样会增加计算、存储的开销,同时会带来过拟合的风险。具体如何选取m要结合实际情况取舍。
2.1 公式
大规模CTR预估是一个二分类问题,特征通常是高维稀疏的。
提出一种piece-wise的线性模型,带来非线性能力。模型如下:
其中,{u1,u2,…,um}是划分函数
σ
(
⋅
)
\sigma(\cdot)
σ(⋅)的参数,
ω
1
,
.
.
.
,
ω
m
\omega_1,...,\omega_m
ω1,...,ωm用来拟合函数
η
(
⋅
)
\eta (\cdot)
η(⋅).
预测模型p(y|x)包含两部分:第一部分
σ
(
⋅
)
\sigma(\cdot)
σ(⋅)分割特征空间为m个region范围,其中m为给定的超参数,然后对于各region计算
η
(
ω
j
T
x
)
\eta (\omega_j^T x)
η(ωjTx)来预测每个区域范围。g()函数用于确保模型满足概率函数的定义。
特征空间 采用softmax作为划分函数
σ
(
x
)
\sigma(x)
σ(x),sigmoid()作为拟合函数
η
(
x
)
\eta(x)
η(x),g(x)=x,得到公式:
此时我们的混合模型可以看做一个FOE模型:
p
(
y
=
1
∣
x
)
=
∑
i
=
1
m
p
(
z
=
i
∣
x
)
p
(
y
∣
z
=
i
,
x
)
p(y=1|x)=\sum\limits_{i=1}^{m} p(z=i|x)p(y|z=i,x)
p(y=1∣x)=i=1∑mp(z=i∣x)p(y∣z=i,x)
目标损失:
L1正则和L2正则都是非光滑函数,所以目标损失函数是非凸和不光滑的。导致很难用传统的梯度下降方法或者最大期望法去优化。
另外面临着超大规模数据,高纬度的问题。
下面介绍怎么优化。
2.2 优化
证明略。
目标函数
a
r
g
min
Θ
f
(
Θ
)
=
l
o
s
s
(
Θ
)
+
λ
∥
Θ
∥
2
,
1
+
β
∥
Θ
∥
1
\mathop{arg\min}_{\Theta}f(\Theta)=loss(\Theta)+\lambda\|\Theta\|_{2,1} +\beta\|\Theta\|_1
argminΘf(Θ)=loss(Θ)+λ∥Θ∥2,1+β∥Θ∥1
下降方向:
提出了针对非凸非光滑目标的快速优化方法:
- 证明处处方向可导(不是处处可导);因为2,1范数 ∥ Θ ∥ 2 , 1 \|\Theta\|_{2,1} ∥Θ∥2,1在数学上是一个圆锥顶的函数,在锥顶不可导,但是从锥顶出发各个方向是可导的。
- 寻找最优下降方向:解析解; 拟牛顿法加速;代替负梯度。
- Scalability: 计算量对数据量线性。
为什么不用EM算法?
- EM只适用于条件概率连乘的模型形式,而本文的方法对非正则部分可导的形式通用;
- E-Step后转化为一个凸问题。
- 参数小,无非光滑正则时,这个凸问题可以用牛顿法求解(MOE算法)。
- 我们的情况:参数维度特别高,有非光滑正则,凸问题难度不比原问题小。
所以,EM没有带来便利。
MLR特性
- 分而治之
- 分片数足够多时,有非常强的非线性能力
- 模型复杂度可控:有较好的泛化性能
- 具有自动特征选择作用
- 可以适用于大规模高维度数据
LS-PLM(MLR)针对大规模工业级稀疏数据,采用分而治之的思想,在多个区域学习线性分类器,来在高维特征空间中学习非线性模型,应用L1和L2,1正则化实现了分组稀疏,得到了稀疏模型;
3. 实现
刻画一次广告展现为特征向量,它由三部分独立构成:
- 用户部分特征(包括userid、profile信息、用户在淘宝平台上的历史行为特征(浏览/购买过的宝贝/店铺/类目上的id和频次等)
- 广告部分特征(包括adid、campainid、广告对应的卖家店铺id、类目id等)
- 场景部分特征(包括时间、位置、资源位等)。这些特征之间无传统的交叉组合,维度在2亿左右。
MLR算法面向的是工业级的数据,例如亿级特征,百亿级参数,千亿级样本。因此我们设计了一套分布式架构,以支持模型的高效并行训练。架构跟传统的parameter server架构略有区别,主要不同点在于我们在每一个分布式节点上同时部署了worker和server两种角色,而不是将server单独剥离出去部署。这背后的考虑是充分利用每个节点的CPU和内存,从而保证最大化机器的资源利用率。
此外,针对个性化广告场景中数据的结构化特性,我们提出并实现了common feature的trick,可以大幅度压缩样本存储、加速模型训练。在展示广告中,一般来说一个用户在一天之内会看到多条广告展现,而一天之内这个用户的大量的静态特征(如年龄、性别、昨天以前的历史行为)是相同的,通过common feature压缩(压缩公共特征),我们对这些样本只需要存储一次用户的静态特征,其余样本通过索引与其关联;在训练过程中这部分特征也只需要计算一次。在实践中应用common feature trick使得我们用近1/3的资源消耗获得了12倍的加速。
tensorflow实现:
Jesse-csj的 TF Demo
文老师的TF实现
Ref:
《Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction》
大咖说盖坤介绍
阿里技术微信号