阿里妈妈,是一个想让天下没有难做的营销的大数据平台,它拥有阿里巴巴集团的核心商业数据。在这里,每天有超过50亿的推广流量完成超过3亿件商品的推广展现,覆盖高达98%的网民,实现数字媒体(PC端+无线端+互联网电视端)的一站式触达。
在这些鲜亮的数据背后,是什么样的核心算法在起作用?它如何保证商家的产品得到最有效的推荐?本文将给大家详解阿里妈妈 CTR 预估核心算法 MLR 的研发背景和应用实践。
一、关键词小知识
点击通过率 CTR(Click-Through-Rate),指网络广告(图片广告/文字广告/关键词广告/排名广告/视频广告等)的点击到达率,即该广告的实际点击次数除以广告的展现量。
点击率预估(Click-Through Rate Prediction)是互联网主流应用(广告、推荐、搜索等)的核心算法问题。
CTR 预估是互联网计算广告中的关键技术环节,预估准确性直接影响商家的广告收入。广告领域的 CTR 预估面临的是超高维离散特征空间中模式发现的挑战,即如何拟合现有数据的规律,同时又具备推广性。
二、CTR预估算法
传统CTR预估算法和非线性模型存在的不足
业界传统的 CTR 预估解法是广义线性模型 LR (logistic regression,逻辑斯特回归)+人工特征工程。LR 使用了 Logit 变换将函数值映射到0~1区间,映射后的函数值就是 CTR 的预估值。LR 这种线性模型很容易并行化,处理上亿条训练样本不是问题。
但这种解法的不足是线性模型的学习能力有限,需要引入大量的领域知识来人工设计特征以及特征之间的交叉组合来间接补充算法的非线性学习能力,非常消耗人力和机器资源,迁移性不够友好。
另外,业界也有一些效果不错的非线性模型不断被提出来,并被工程实践且取得不错效果,但这些模型都或多或少存在一些不足。
Kernel 方法,因为复杂度太高而不易实现。
Tree based 方法,由 Facebook 团队在2014年首先提出,有效地解决了 LR 模型的特征组合问题,但缺点仍然是对历史行为的记忆,缺乏推广性。
FM(factorization machine)模型,能自动学习高阶属性的权值,不用通过人工的方式选取特征来做交叉,但FM模型只能拟合特定的非线性模式,如最常用的 2 阶 FM 只能拟合特征之间的线性关系和二次关系。
深度神经网络非线性拟合能力足够强,但面对广告这样的大规模工业级稀疏数据,适合数据规律的、具备推广性的网络结构业界依然在探索中,尤其是要做到端到端规模化上线,这里面的技术挑战依然很大。
那么,挑战来了,如何设计算法从大规模数据中挖掘出具有推广性的非线性模式?
阿里妈妈自主研发的MLR算法
基于上述的算法的不足和商户的实际需要,2011-2012年期间,阿里妈妈资深专家盖坤(花名靖世)突破主流大规模线性模型的思路,提出了 MLR (mixed logistic regression, 混合逻辑斯特回归)算法,给广告领域 CTR 预估算法带来了新升级。
MLR 算法基于数据自动发掘可推广的模式,直接在原始空间学习特征之间的非线性关系,相比于人工来说提升了效率和精度。
MLR 可以看做是对 LR 的一个自然推广,它采用分而治之的思路,用分片线性的模式来拟合高维空间的非线性分类面,其形式化表达如下:
这里超参数分片数 m 可以较好地平衡模型的拟合与推广能力。当 m=1 时,MLR 就退化为普通的 LR,m 越大,模型的拟合能力越强,但是模型参数规模随 m 线性增长,相应所需的训练样本也随之增长。
因此,实际应用中 m 需要根据实际情况进行选择,一般 m 设定为12。下图中,MLR 模型用 4 个分片完美地拟合出数据中的菱形分类面。
MLR 算法适合于工业级的大规模稀疏数据场景问题,优势体现在两个方面:
端到端的非线性学习:从模型端自动挖掘数据中蕴藏的非线性模式,省去了大量的人工特征设计,可以端到端地完成训练,使得在不同场景中的迁移和应用变得轻松。
稀疏性:MLR 在建模时引入了和范数正则,使得最终训练出来的模型具有较高的稀疏度, 模型的学习和在线预测性能更好。
MLR算法高级特性
在具体的实践应用中,阿里妈妈精准定向团队进一步发展了 MLR 算法的多种高级特性,主要包括:
结构先验。基于领域知识先验,灵活地设定空间划分与线性拟合使用的不同特征结构。它有助于帮助模型缩小解空间的探索范围,收敛更容易。
例如精准定向广告中验证有效的先验为:以 user 特征空间划分、以 ad 特征为线性拟合。它符合人们的常规认知:不同人群具有聚类特性,同一类人群对广告有类似的偏好,例如高消费人群喜欢点击高客单价的广告。
线性偏置。这个特性提供了一个较好的方法解决 CTR 预估问题中的 bias 特征,如位置、资源位等。实际应用中,工程师通过对位置 bias 信息的建模,获得了 4% 的 RPM提升效果。
模型级联。MLR 支持与 LR 模型的级联式联合训练,这有点类似于 wide&deep learning。一些强 feature 配置成级联模式有助于提高模型的收敛性。
典型的应用方法是:以统计反馈类特征构建第一层模型,它的输出(如下图中的 FBCtr)级联到第二级大规模稀疏 ID 特征体系中去,能够获得更好的提升效果。
增量训练。MLR 通过结构先验进行 pretrain,然后再增量进行全空间参数寻优训练,会获得进一步的效果提升。同时增量训练模式下,模型达到收敛的步数更小,收敛更为稳定。在阿里妈妈的实际应用中,增量训练带来的 RPM 增益达到了 3%。
大规模分布式实现
MLR 算法面向的是工业级的数据,例如亿级特征,百亿级样本。因此,工程师设计了一套分布式架构,以支持模型的高效并行训练。
下图是架构示意图,它跟传统的 parameter server 架构略有区别,主要不同点在于每一个分布式节点上同时部署了 worker 和 server 两种角色,而不是将 server 单独剥离出去部署。这样做是为了充分利用每个节点的 CPU 和内存,从而保证最大化机器的资源利用率。
此外,针对个性化广告场景中数据的结构化特性,他们提出并实现了 common feature 的 trick,可以大幅度压缩样本存储、加速模型训练。
如下图所见,在展示广告中,一个用户在一天之内会看到多条广告展现,而一天之内这个用户的大量的静态特征(如年龄、性别、昨天以前的历史行为)是相同的,通过 common feature 压缩,阿里妈妈对这些样本只需要存储一次用户的静态特征,其余样本通过索引与其关联;在训练过程中,这部分特征也只需要计算一次。在实践中,他们应用 common feature trick 使得相比之前,使用近 1/3 的资源消耗获得了 12 倍的加速。
三、业务应用实践
从2013年起,MLR 算法在阿里妈妈及阿里集团多个 BU 的主要场景(包括阿里妈妈精准定向广告、淘宝客、神马商业广告、淘宝主搜等等)被大规模地应用和尝试,尤其是在阿里妈妈的精准定向广告场景,算法模型创新带来了业务上的重大突破,主要场景下的 CTR 和 RPM 均获得 20% 以上的提升。
典型应用如下:
基于 MLR 的定向广告 CTR 预估算法
基于 MLR 算法的非线性学习能力,阿里妈妈的定向广告 CTR 预估采用了大规模原始ID 特征 + MLR 算法的架构。具体为刻画一次广告展现为特征向量,它由三部分独立构成:
用户部分特征(包括 userid、profile 信息、用户在淘宝平台上的历史行为特征(浏览/购买过的宝贝/店铺/类目上的 id 和频次等)
广告部分特征(包括 adid、campainid、广告对应的卖家店铺 id、类目 id 等)
场景部分特征(包括时间、位置、资源位等)
这些特征之间无传统的交叉组合,维度在 2 亿左右。然后,他们将数据直接喂给 MLR 算法,并且应用了结构化先验、pretrain+ 增量训练、线性偏置等高级技巧,让模型从数据中自动去总结和拟合规律。相比于传统的 LR+ 特征工程思路,这种解法更为高效和优雅,模型精度更高,在实际生产中的可迭代更强。
基于 MLR 的定向广告 Learning to Match 算法
Match 算法是定向广告中的一个重要环节,它的核心使命是基于用户的人口属性、历史行为等信息来猜测用户可能感兴趣的广告集合。传统的 Match 算法更多采用的是规则匹配、协同过滤等方法,方法的扩展性不强。
在阿里妈妈定向广告系统中,工程师研发了基于 MLR 的 learning to match 算法框架。简单来说,用模型的方法基于用户的行为历史来学习用户个性化的兴趣,从而召回高相关性的候选广告集。
同样地,基于 MLR 算法的非线性能力,他们可以很容易地将不同的特征源、标签体系融合到框架中,不需要过多地关注和设计特征的交叉组合,使得框架的灵活性大大增强。
四、总结和面临的挑战
阿里妈妈算法技术团队自主创新的 MLR 模型和算法,在业务的大范围推广和应用中取得了比较好的效果,另外在大数据智能方面,因为省去特征工程,具备了从数据接入到应用的全自动功能。
但是未来面临的挑战也很多,比如:
初值问题、非凸问题的局部极值。虽然 MLR 比 LR 好,但不知道和全局最优相比还有多远;
在初值的 Pre-train 方面需要改进和优化模型函数等;
目前规模化能力方面也需要能够吞吐更多特征和数据,比如采用更快的收敛算法等等;
整体的 MLR 算法的抽象能力也需进一步得到强化。
本文作者:阿里妈妈算法团队
来源:51CTO