写点什么

CTR 预估在动态样式建模和特征表达学习方面的进展

  • 2020-04-16
  • 本文字数:5911 字

    阅读完需:约 19 分钟

CTR预估在动态样式建模和特征表达学习方面的进展

导读:富媒体时代,广告的样式需要千人千面,广告产品形态呈现多样式、多物料组合形态,对 CTR 预估提出了巨大的挑战;针对这个问题,我们提出了一种动态样式组合优选加 DSA 模型,并结合分位置拍卖技术,较完美地解决了组合样式优选的问题。


另外,传统的 CTR 预估较少能挖掘特征之间的交互信息,我们提出一种 MCP 模型,通过辅助的网络结构来学习更好的特征表达,同时在线上 inference 时不会产生额外的计算消耗。


综上,本次分享的内容主要包括


  • 动态样式 CTR 预估建模

  • 特征表达辅助学习

01 业务背景及 CTR 介绍

1. 智能营销平台业务背景



我们的主要业务是搜索广告和信息流广告。搜索广告主要通过搜索 query 触发,信息流广告是在没有 query 的情况下展示广告。


一个通用的商业广告系统,如右图所示:


  • 前端 server:包括媒体接入、广告样式封装等

  • Server A:策略的中心 Server,实现各个下游 server 之间的连接,以及排序和过滤等策略

  • Server C:Server A 会先让 Server C 计算出一些候选的拍卖词或者广告集合 ( 在搜索广告中称为触发,在信息流广告中称为定向 )

  • Server B:广告检索,检索出广告的具体信息,并请求 model server 进行 Q 值计算

  • Model server:进行各种 Q 值计算的 server

  • 我们可能还会用到用户维度的实时信息,所以我们还有用户特征 server 和用户信息存储等基础架构。


整个商业广告系统是由做工程架构的同学来维护架构,策略同学进行策略的迭代优化。接下来会讲下商业系统中非常重要的部分,也就是 CTR 预估。


2. Click-Through Rate ( CTR ) 预估



CTR 预估的重要性:


  • Ad selecting:用 CTR 预估做广告漏斗的选择,也就是从检索出来的广告中选出一部分广告进行精排。

  • Ad ranking:CTR×bid 排序,CTR 估的越准,排序效率越高。

  • Ad charging:广告计费,根据 CTR 进行广告计费计算。


在线广告的点击率 ( CTR ) 预估问题是构建一个预测模型,来估计给定用户给定广告的点击概率。如图中表格所示:


给定用户 ID、用户属性 ( 如:年龄,性别,兴趣等 ),给定广告 Title,通过用户的行为反馈,可以收集到这个广告用户点击/未点击,作为训练样本就可以训练出一个模型 ( 一个非常复杂的非线性函数表达形式 ),然后推送到在线的 model server 进行实时的 CTR 预估。


CTR 预估的问题看似简单,但确实是业界重点研究的方向,主要从如下几个方向展开:特征优化,模型算法研究,模型应用的创新。


3. CTR 相关工作



回顾下业界常用的模型结构:


  • 逻辑回归模型 ( LR ):模型简单,容易实现,早些年非常流行。

  • 因子分解机 ( FM ):FM 模型增加了二阶项,可以做一些特征两两交互的学习工作。

  • 深度神经网络 ( DNN ):最早以 Google 的 DNN 模型为代表,从结构上对特征做 Embedding,再接几层全连接神经网络,由于我们是分类问题,所以最后用 Sigmoid 计算 CTR 预估值。

  • Wide&Deep:DNN 在泛化和推理上效果比较好,但是在广告系统中,更希望有一些记忆的特性 ( 如果一个用户对广告有频繁的点击行为,我们希望记住他 ),于是引入了 LR 的组件,来实现记忆的特性。

  • DeepFM:华为基于 Wide & Deep 模型,又提出了 DeepFM,将 LR 升级为 FM,同时在 DNN Embedding 学习时,联合 FM 进行学习。

  • 后面还有 DCN,以及阿里的深度兴趣网络 DIN 等等。


我们团队的模型现状:


  • 大规模离散 DNN 模型作为基本的模型框架

  • 支持 Wide&Deep,DeepFM 模型结构

  • 自研了时空 DNN,深度记忆网络结构,可以更好的处理用户历史行为,在 CTR 预估中起作用

  • 在特征 Embedding 学习方面,自研了 MCP 网络

02 动态样式 CTR 预估建模

——CTR 预估如何赋能广告样式升级?


1. 广告产品样式升级



在前几年,广告样式主要是普通的样式:标题+描述,信息量非常少,用户真正感兴趣的内容,需要在落地页中呈现。


近期针对样式方面,我们做了很多的产品升级,如右图所示,增加了商品列表、图文混排、子链 ( 分组 ) 等样式。这样做的优点:


  • 更多信息前置,内容更吸引人,带来点击率的大量提升

  • 可根据用户意图个性化选择样式和物料,千人千面

  • 转化信息前置,提升转化效率


2. 动态创意的组件化



广告产品样式升级主要是通过动态创意来实现的,动态创意包含 样式布局组件 两个要素。如左侧的广告,我们将它拆成元素,有标题、图片、描述和分组等各种子链区,我们将它定义成样式布局。有了样式布局之后,我们需要做的就是填充,比如从广告库中找到标题,填充进去,同时把图片、描述等等也一一找出填充进去。这样的方案对广告主来说是很省时省力的,因为广告主主要关注的是内容的提供。对于内容的提供,我们也提出了策略的解决方案,广告主只需要提供一些基础的内容,我们可以用算法生成一些相近的物料。对于组件的样式不需要广告主定制,我们有专业的样式产品团队进行样式设计,然后由策略团队做样式的策略优选,来确定哪种样式是最好的。


动态创意从产品逻辑上来看很简单,但是从策略上来讲是巨大的难点,首先要确定哪种样式加物料的组合效果最优,而且针对不同用户和广告主最优;其次还要考虑同屏展现下的最优组合。所以我们提出了整体的解决方案:先通过样式+物料组合优选,确定每个广告的动态创意组合,然后通过 DSA 模型建模分位置拍卖过程。


3. 样式+物料组合优选



首先介绍一个最基本的解法:


一个广告要展示的时候,我们第一层要选 Layout,确定样式的布局;选定 Layout 之后,要选定每个容器中放哪个物料,从图片到描述,到标题等等,整个计算就是一个多连乘的公式,在线上如果要实现这一套计算,特别是每种实际展现的样式我们在计算 CTR 时,单次检索的 CTR 预估次数会超过百万次,致使单个广告 CTR 预估组合爆炸。并且不只是单个广告,我们检索可能会检索出上千条广告,哪些创意要进入样式+物料优选,也是非常难的问题。因此简单的样式优选难以实现,对性能挑战非常大。


4. 一种简单的算法升级



针对上面的问题,先看一种简化的解决思路


  • 广告检索,基于原来的检索逻辑,先检索出来创意 ID

  • CTR 预估,筛选广告,不计算样式和物料内容,只计算基本的 CTR 预估值

  • 广告精排,确定展现队列,排序之后,在搜索广告系统中,可能只剩下了少数条广告

  • 样式和物料选择计算,确定最终的创意样式


这样做的优点


样式+物料计算的候选广告大大减少。


同时,缺点也非常明显


  • CTR 预估没有体现样式和物料带来的加成,使策略最优的效果没有体现出来

  • 样式之间的相互影响没有体现出来,一个强样式排在前面时,会使后面的广告 CTR 预估受影响。业界有很多论文在做这块内容的研究,大家可以了解下


5. 样式+物料选择建模



因此,我们将问题进行定义:动态创意优选 = 组合爆炸 + Ranking ( eCPM 最大化 ) + EE


  • 针对组合爆炸的解法是运用贪心算法+EE。这里的贪心策略是将物料组装的形式分层次来做,比如先选定标题,再放图片,进而放入描述,放入子链,…,而不是整个展开来计算。如左图所示,树中每一个节点代表一个容器,每一条从 root 到叶子节点的路径就是一个完整的样式。

  • 针对 Ranking ( max-eCPM ) 的解法是:CTR 预估+广告 EE 机制


优选策略


① 每层容器优选


  • 组件多元关系 ( 互斥规则 )

  • CTR ( 组件 )

  • Ranking ( max-eCPM )

  • 剪枝 ( EE ):每层留多少个节点


② 每层优选使用前文信息 ( 上一层容器 )


③ 样式优选结束后进行组件物料优选


这里用到的算法和 Model


  • CTR 预估:DNN

  • CTR 预估中的 EE:汤普森采样

  • 剪枝 EE:目前这部分还没有做,未来我们准备用深度强化学习 ( DRL ) 来做剪枝,来决策哪些内容可以提前去掉,不用参与计算


6. 一种改进的算法流程



前面的算法,已经解决了大部分的问题,当然还有一部分问题没有解决掉,进而我们又引入了 DSA 动态广告排序过程。


整个广告计算流程


  • 基于原来的检索逻辑,检索出来创意 ID

  • CTR 粗排预估,进行广告初选,筛选 Top N 广告

  • 针对 Top N 广告进行样式和物料组合优选,确定候选广告的样式+创意

  • PSA 机制按位置从上到下逐个计算广告展现

  • DSA 模型考虑 rank,样式,物料,上文广告等信息计算精确的 CTR


这里的改进是增加了新模型 DSA,可以在上游 Q 值输入的基础上,增加上文,位置,样式,物料等相关特征。另外,我们对 CTR 模型和 DSA 模型是分别独立进行训练的,这里会存在一些问题。


7. CTR 粗选模型 + DSA 模型联合训练



独立训练存在的问题:由于是独立训练,两个模型都存在幸存者偏差,那么 CTR 预估模型中的选出的最好的广告,并不代表在 DSA 模型中就是排的最好的,这两个模型解的不一致性就会带来策略的损失。


近年来,Multi-task Learning ( 多目标学习 ) 领域比较火,也是用来解决这个问题的,所以我们引入了 Multi-task Learning 算法。针对前一版的改进是两个模型联合一起训练,在特征层面可以 share embedding,在网络结构上是两个共生网络进行联合训练。


这里一个小的 trick 是:有些特征在 DSA 阶段,不需要重复计算,所以我们会把上一阶段的 Q 作为下一阶段的输入去使用。


8. 小结


本节内容小结


  • 在动态样式产品升级的情况下,CTR 预估会面临 组合爆炸 的难题

  • 为减少计算量,可以先计算出广告展现队列 ( 减少样式物料优选的计算量 ),然后再进行 样式和物料选择

  • 即使单个广告的样式和物料优选也会面临计算量非常大的问题,所以引入了 贪心 + EE 的策略,逐层筛选最优结果

  • 先计算广告队列再进行样式和物料优选时,样式和物料的效果 不能影响排序,不是最优结果,收益不能达到最大化

  • 因此,引入 PSA 机制和 DSA 模型,将样式优选和排序过程融合起来,能大幅提升效果

  • DSA 模型可以和上游模型进行联合建模,进一步提升模型效果

03 特征表达辅助学习

——CTR 模型的 Embedding 能否学习得更好?


1. 深度匹配、关联与预测网络 ( DeepMCP ) idea



常用的 CTR 模型结构,如左图,模型就是在学一个映射的网络,来实现特征输入到 CTR 的映射形式。传统的模型是解 Feature 到 CTR 目标值的关系,即使后面的 FM 模型,也是在解两两特征如何影响 CTR,并没有建模特征表达是否相似。因此是否可以建立特征表达之间的约束学习,使模型具有更好的泛化性?


我们的解决办法是在 CTR 网络结构中引入辅助的网络结构 ( DeepMCP ),对特征和 CTR 之间的关系,以及特征和特征之间的关系进行建模。其中特征和特征之间的关系,主要包括:用户和广告 之间的关系以及 广告和广告 之间的关系。


2. DeepMCP 概览



具体的解决方案是在原来预测网络的基础上,加入匹配子网络和关联子网络。目标是学习具备好的预测能力和表达能力的 Embedding 模型。


DeepMCP 的优点:


  • 训练时,三个子网络均被激活

  • 线上做预估时,只有预测子网络被激活,不需用到两个辅助子网络,不会消耗额外的线上计算性能


3. Motivating Example



背景动机:


如上图,u 代表用户特征,a 代表广告特征。用户 u1点击了广告 a1和 a3,用户 u2点击了广告 a1,实际场景中,我们可能会需要预测用户 u2对 a3的点击率,在之前的网络中,用户 u2和 a3在 Embedding 表达上没有任何的关系,所以很难预测 u2对 a3的 pCTR。有了辅助网络之后,由于 u1和 a1的 Embedding 与 u2和 a2的 Embedding 比较像,可以推导出 a1和 a3的 Embedding 相似,最终更有可能准确预测出 u1对 a3的 pCTR。


4. 细节



上图为 DeepMCP 的网络结构图,三个子网络共享 Embedding matrix。下面将整个网络拆开分别进行介绍:


① 预测子网络



预测子网络就是传统的网络,给定一些特征,然后接几层全连接层,再通过 Sigmoid 生成 CTR 值,最后得到 Prediction loss。这里的预测子网络可以替换为任意 CTR 预估模型,比如 Wide&Deep、DeepFM、Deep and Cross Network 等等。


② 匹配子网络



匹配子网络主要是建立用户和广告之间的关系,广告是否一定程度上匹配用户兴趣。我们把用户特征和广告特征分别经过几层神经网络,映射到两个相等维度的 Embedding,再通过 tanh 激活,计算相关性得到 Matching score,最后得到 Matching Loss。这里用到的不只是用户 ID 和广告 ID,而是用户和广告相关的所有特征,因为我们是要辅助的学习特征的表达,而不是推荐系统中只对 ID 进行学习。


③ 关联子网络



关联子网络是建模广告和广告之间的关系。我们首先要构建广告和广告之间的关系,这里借鉴了图网络的思路,但是我们用到的是用户在 context window 一段时间内的点击序列,跟点击序列不相关的广告用随机负采样的方法 ( skip-gram model with neg sampling ) 做负样本,这种方法跟 word2vec 算法的核心思想比较类似。收集完序列之后,把当前广告作为 target ad features,用户点击的广告作为 context ad features,随机负采样的作为 Neg ad features,输入到网络中。网络的目标是当前广告跟历史点击的广告学到的 Embedding 表达尽量接近,随机负采样的表达不接近。将得到的正负样本的 loss 加起来就是 Correlation loss。


④ DeepMCP



对于整个网络,所有 loss 加一起的时候会有调制,我们加入了 α ( 对应 Matching Loss ) 和 β ( 对应 Correlation Loss ) 两个参数。调制参数的调整是在 validation 数据集上监测 AUC,最佳参数在最高 validation AUC 处获得。在线上时,只使用预测子网络。


5. 实验


① 预估效果



我们分别在公开比赛数据集 Avito 和公司业务数据集,通过对比基础模型 ( LR、FM、DNN、PNN、Wide&Deep、DeepFM ),并对我们的网络进行拆解,DeepCP 代表只加入了一个 Correlation 网络,DeepMP 代表只加入了一个 Matching 网络。可以看到 DeepMP 效果优于 DeepCP,整体上 DeepMCP 效果最好。最终上线的时候,我们采用的是 DeepMP,在预估准确性和模型复杂度之间达到了最好的折衷 ( best compromise )。在线 A/B test 时,CTR2 + 2.9%,CPM1 + 0.9%。


② 调权参数的影响



经过测试,我们发现 Matching 部分的权重要大于 Correlation。


③ 网络参数的影响



这里主要是指 MCP 辅助网络的层数,主网络的层数根据业务来定。


6. 小结


本节内容小结:


  • 传统 CTR 预估模型主要是建模 feature-CTR relationship

  • DeepMCP 额外建模 feature-feature relationship ( i.e., user-adad-ad relationships )

  • DeepMCP 是一种多目标学习 ( multi-task learning ) 框架

  • DeepMCP 包含预测、匹配、关联三个子网络

  • 当三个子网络在 target labels 的监督下联合优化时,学到的 feature embeddings ( representations ) 既具有好的 预测能力,又具有好的 表达能力

  • 实验结果表明匹配子网络比关联子网络带来更大的效果提升

  • 最终我们选择了 DeepMP ( pred+match ),在预估准确性和模型复杂度之间达到了 最好的折衷( best compromise )


本次的分享就到这里,谢谢大家。


作者介绍


秀武,阿里巴巴高级算法专家。


本文来自 DataFunTalk


原文链接


https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247498872&idx=1&sn=c7eb8e9147cb106b4122174981dce0b9&chksm=fbd74e14cca0c7027a2db1641d0e4e7bc16846035359684b702d462abdda8926ee7626bf4505&scene=27#wechat_redirect


2020-04-16 14:002925

评论

发布
暂无评论
发现更多内容

从头学Java17-Lambda表达式

烧霞

Lambda java17

单色和彩色LED显示屏

Dylan

场景 使用技巧 显示器 LED显示屏 全彩LED显示屏

NFTScan | 06.26~07.02 NFT 市场热点汇总

NFT Research

热点 NFT\

云原生实力再获认可!腾讯云云原生拿下重量级奖项

Geek_2d6073

稳定性和高可用如何兼顾,华为云网站高可用解决方案满足多方案需求

轶天下事

给新手产品经理的技术接口文档入门指南

Liam

产品 程序员 接口 API接口文档

云会议成为企业高频服务,华为云会议为何成为众多企业的选择?

轶天下事

前端常见的十种布局

EquatorCoco

前端 前端前端框架

​阻抗计算,真的没有那么难!

华秋PCB

工具 电路 阻抗 PCB PCB设计

微服务架构中的单一职责原则:构建高内聚、低耦合的服务

2756

微服务 微服务架构 单一职责

关于序列化与反序列化MessagePack的实践 | 京东云技术团队

京东科技开发者

序列化 反序列化 企业号 7 月 PK 榜 MessagePack 字节序列

完全兼容DynamoDB协议!GaussDB(for Cassandra)为NoSQL注入新活力

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

怎么样可以算一名云原生工程师?

高端章鱼哥

云原生

华为云桌面正协助企业快速进入云上数字化办公时代

轶天下事

与 TDengine 性能直接相关——3.0 的落盘机制优化及使用原则

爱倒腾的程序员

涛思数据 tdengine 时序数据库

【直播预告】HarmonyOS极客松赋能直播第四期:HarmonyOS开发经验分享

HarmonyOS开发者

HarmonyOS

哪家好用?四款国内外远程桌面软件横测:ToDesk、向日葵、TeamViewer、AnyDesk

热爱编程的小白白

互联网高可用架构探讨 | 京东云技术团队

京东科技开发者

高可用 架构设计 硬件架构 网络架构 企业号 7 月 PK 榜

Jmeter压测实战:Jmeter二次开发之自定义函数 | 京东云技术团队

京东科技开发者

测试 Jmeter 压测 企业号 7 月 PK 榜 插件化机制

《golong入门教程📚》,从零开始入门❤️(建议收藏⭐️)

不在线第一只蜗牛

教程 Go 语言

如何设计一个最简化的推荐系统

快乐非自愿限量之名

框架开发 系统框架

一文了解AppSec,以及如何通过Perforce工具保障应用程序防护

龙智—DevSecOps解决方案

APP开发 应用程序安全 AppSec

从头学Java17-Modules模块

烧霞

modules java17

数字化办公需求激增,华为云桌面解锁全新云办公模式

轶天下事

聊聊Excel解析:如何处理百万行EXCEL文件? | 京东云技术团队

京东科技开发者

POI 内存优化 企业号 7 月 PK 榜 excel解析

数据库中用户删除不掉总是报错,依赖如何处理干净?

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

迭代失败的4个迹象,团队中了几个?快来看看如何解决!

敏捷开发

项目管理 Scrum 迭代 开发人员

CTR预估在动态样式建模和特征表达学习方面的进展_架构_DataFunTalk_InfoQ精选文章