360展示广告智能化演进

2020 年 11 月 12 日

360展示广告智能化演进

导读: 360 展示广告平台始终关注广告投放效果,围绕广告后续优化问题先后开发了多款产品。随着产品规模的不断扩张,有关效果优化的新需求新问题不断产生。本文主要介绍了效果优化系统随业务发展的演进过程,聚焦如何使用算法解决客户痛点,实现广告投放智能化。使大家了解到展示广告算法团队如何分析业务,如何选择算法,如何优化系统的过程。


01 背景介绍


1. 展示广告业务介绍



市场上有很多媒体,用户访问媒体 ( 比如 PC 端的搜狐、网易、新浪,移动端的头条等 ) 时页面会出广告,媒体会将用户当前流量相关信息发送给 Ad Exchange ( 流量拍卖平台 ),该流量会由 Ad Exchange 发送给与其对接的多家 DSP ( 广告投放系统 ),DSP 会根据当前流量选择合适的广告返回给 Exchange,响应时间要求在 100ms 以内,这些广告一般是由客户或者广告主 ( 比如电商类广告主京东、唯品会、苏宁,旅游类广告主携程等 ) 在 DSP 平台按照流量筛选条件 ( 用户、媒体、时间、地点 ) 设置,Exchange 将各个 DSP 平台返回的结果进行整理,选择出价最高的广告返回给媒体,媒体最终将出价最高的广告展示给用户。


2. 常见展示广告



常见的展示广告有:


  • 场景橱窗广告,购物tab栏里出现的购物商品广告,有价格、商品名称;

  • 开屏广告,打开媒体产品时展示由设计师精心设计的广告素材;

  • 信息流广告,用户在阅读信息流内容时,像正常信息流形式一样出现的广告,有标题有图片有内容,这样的信息形式不会特别破坏用户的阅读体验。


3. 展示广告架构



展示广告技术架构,可以分为线上系统和线下系统。线上系统以 DSP Server 切入,Ad Exchange 会将流量发送给 DSP Server,DSP Server 会将信息传递给 Ad Search,Ad Search 是广告的检索召回系统,海量广告中粗召回匹配的几百个甚至上千个广告投放,Ad Search 会将信息发送给 Ad Selector,Selector 会在几百个广告中选择当前最合理的一个返回给 DSP,DSP 再返回给 Ad Exchange。整个过程的数据都会被记录,以消息的形式发送给 Kafka,最后存储在 hdfs 上。线下系统,ETL 会将数据转成标准的训练样本,这些训练样本会提供给 CVR、CTR 等模型训练,训练好的模型在由线下推送到线上,交给 Ad Search、Ad Selector 作为广告召回和排序使用。


4. CPC 广告投放设置



广告有按照点击扣费,有按照曝光扣费,CPC 广告是广告主与 DSP 平台按照点击结算。右图是典型的 CPC 广告投放设置页面,广告主在设置页面主要需要进行如下操作:


  • 上传素材(图片、文案);

  • 筛选流量(用户、媒体、时间、地点);

  • 设置出价(CPC为一次点击的出价)


本文主要介绍 CPC 广告的效果优化。


02 效果优化


1. 一切选项皆可优化



  • 转化:用户看到广告,点击广告之后后续产生的一系列广告主认为有商业价值的行为称为转化。

  • 广告效果优化:获取更多的转化,提高转化的概率,降低获取转化的成本称为广告效果优化。


360 效果优化产品设计的基本理念是一切选项皆可优化。可以将效果优化产品分为两大类,一类是广告主主动开启使用,一类是后端策略优化自动生效。产品的核心是点击到转化的概率预估问题,结合广告主需求去拓展可以做效果优化的场景。


2. 流量分层处理



对广告来说,流量是海量的,能够产生转化的流量是极少的,那么流量按照转化的效果自下而上来看,呈现的是一个金字塔结构。针对塔底的低质流量可以采取预算分配和分流量调价两个方案。预算分配是针对点击率低的流量,设置在这类低质流量上的花费上限,如计划的 10%或 20%,其他主要花费重点用在高质流量上。分流量调价是从出价的角度,对于低质流量的出价是按照正常流量出价打折。塔顶的流量可以采用优选人群方案。根据用户的广告行为训练模型预测其是否会发生转化,模型输出值高的人群被归为优选人群。广告主给这类优选人群更高的出价,这样在竞价过程中更有可能胜出,得到曝光转化机会。


3. 智能点击出价



智能点击出价是一款约束了广告主平均点击成本,尽可能优化后续效果的一款广告主主动开启的产品。出价按照转化率分段处理,高段做溢价处理,低段做减价处理。线上策略可以从三个维度进行实现:


  • 广告已经积累了大量样本数据,可以单独为广告实现一个转化率模型,并根据模型设计分段出价;

  • 新广告投放,可以根据广告主的以前的广告数据分布,设计一个模型指导分段出价;

  • 新广告主投放,可以根据同行业的其他广告主的广告数据分布设计模型进行分段出价。


4. 智能创意组合



广告主在创建广告单元上传素材时,有很多的素材(图片文案)组合选择,但是不清楚哪种组合转化效果最好,所以广告主会在投放过程中,根据实际的投放效果,选择最佳的素材组合,关闭其他组合。智能创意组合,就是为了解决广告主的这个需求而设计的产品。上图展示的是广告主上传素材的界面,允许广告主上传多个图片和多个文案,算法会根据当前流量选择最佳的图片和最佳的文案组合展现给用户。


5. 创意组合生成网络



智能创意组合算法通过强化学习思路实现,打分模型为转化率预估模型,根据当前流量信息和生成网络得到的图片文案的组合作为输入,得到转化率;转化率越高,创意组合越有价值。创意组合生成网络是根据 Attention 机制实现的,生成网络的输入为图片、文案、上下文信息。在生成网络结构中,以 image1 为例,将其作为 query,与整个图片素材库的关系以及与整个文案库的关系使用 Attention 建模,得到图片信息经过一个前向网络得到输出分数,如果是多图片,使用 Softmax 得到多图片的概率分布。组合的结果可以直接选择图片和文案概率最大的,或者是概率分布做采样。在迭代过程中,这两种方式都会有所选择来训练。


03 广告投放智能化演进


1. oCPC:智能化广告投放产品



o 是 optimize,oCPC 是针对 CPC 的广告优化。右图展示的是 oCPC 的广告设置界面。oCPC 的特点如下:


  • 相比于正常的CPC广告界面,该界面简化了设置内容,不需要设置点击出价;

  • 量化了广告主的目标——转化类型和目标转化成本;

  • 效量兼顾,既考虑实际转化成本接近目标转化成本,又兼顾扩量的优化,给广告主带来更多未投流量的转化。


2. 出价逻辑



普通 CPC 的出价逻辑,从 DSP 角度来说,通过点击率预估建立与广告主目标的桥梁,即 CPC \ PCTR。对于 oCPC 的出价逻辑:一阶段基于实时反馈,广告投放初期数据少,由系统给出 CPC,根据线上实际转化成本的情况来调整出价。二阶段基于模型,当数据积累到一定阶段,训练转化率模型得到 PCVR,用客户给出的目标出价 CPA\PCVR 来模拟 CPC 出价,即 CPA \ PCVR \ PCTR。


3. 多模型→单模型



oCPC 的核心是转化率模型:


  • 产品上线初期,客户较少,可以采用分客户训练,针对使用该产品的客户专门优化,避免影响其他正常的客户;

  • 随着数据的积累和效果稳定,在前期投放过程中,出于谨慎考虑,对于客户的投放都是精细化的流量,流量之间相互之间没有重叠;

  • 随着客户对投放量需求的增加,模型需要对之前没有见过的流量做转化率预估,利用同行业客户的相似性,分行业训练模型可以让客户共享投放信息来解决这个问题;

  • 随着产品的成熟,分行业和分客户的多模型维护成本过高,使用单一模型就能满足所有客户需求。


4. 简单模型→复杂模型



随着产品的迭代,模型从简单模型发展到复杂模型。产品初期,仅在精细流量上做投放,采用 GBDT 就可以满足需求。随着可投流量和特征数量增加,GBDT 的树深度和棵数有限无法满足需求,采用 LR 模型解决可投流量扩展问题。随着业务发展拥有海量数据,传统模型存在瓶颈,最终采用了 DNN 模型解决海量数据问题。


5. oCPC 模型结构



oCPC 模型结构采用 PNN 架构,将特征分为多个 group——广告、媒体、用户、其他上下文;每个 group 学习一个 embedding 表示,然后使用 embedding 相乘得到特征交叉。考虑到神经网络的复杂性,线上计算做了性能优化,预测时广告无关的部分只会计算一次,只有不同的广告特征才会被多次计算。


6. 单任务→多任务



转化率模型初期只考虑了点击到转化的样本,训练出一个单任务的转化率模型。随着 ESMM 和 ESM2 的出现,360 的转化率模型从单任务向多任务模型发展。单任务模型考虑的是点击后到转化的样本,只考虑了曝光的子集样本。如何保持线上线下一致,将曝光无点击的样本加入训练,这就是多任务模型解决的问题。完整的样本空间,子模块 CTR PNN 模型是曝光样本的点击概率,LOSS1 是 pctr 的 loss,子模块 CVR PNN 模型是点击后转化的概率模型,pcvr 表示该曝光样本如果点击,点击到转化的概率。实际需要对于每个曝光样本做曝光转化预估,那么将 pctr * pcvr 就得到了曝光转化概率 pctcvr,而 LOSS2 就是该曝光转化的 loss。曝光到转化之间还存在其他链路,可以使用更多的任务和 loss 来表示。另外,多任务模型会共享 group embedding 输入。


7. 单目标出价→多目标出价



随着业务发展,客户会有更多的转化要求。在注册目标成本已经满足需求的情况下,考虑付费的优化。参考智能点击出价,训练一个付费模型,在注册率一定的情况下,付费率如果在金字塔顶层,就增加出价,在低层,就减少出价,来满足客户付费优化的需求。付费模型采用 MMOE 实现,注册是任务 A,付费是任务 B,Gata A 仅作为任务 A 的输入,Gata B 仅作为任务 B 的输入。对于该模型的任一任务来说,可以由几个固定的专家打分得到。那么专家的输出与 Gata A 输出的概率分布作为任务 A 的输入,专家的输出与 Gata B 输出的概率分布作为任务 B 的输入。这个模型在同时拥有多个转化的场景中得到效果验证。


8. 高延迟→低延迟



知识蒸馏解决线上高延迟问题。知识蒸馏存在 Student 模型参数减少过多,导致效果 Teacher 模型差很多,以下是两个优化方法:


  • 提高Teacher模型复杂度

  • Teacher模型加入点击后转化前的特征


今天的分享就到这里,谢谢大家。


作者介绍


刘斌,360 资深算法工程师


本科毕业于上海交通大学,研究生毕业于纽约州立大学。2014 年作为算法工程师入职 360。2015~2017 年负责展示广告商品库和人群库系统。2018~2020 年专注广告效果优化,作为项目主要负责人先后开发了预算分配系统和 oCPC 系统。


本文来自 DataFunTalk


原文链接


360展示广告智能化演进


2020 年 11 月 12 日 10:06709

评论

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

const关键字应用总结

C语言与CPP编程

程序员 编程语言 C语言

第二课框架设计课后作业

Geek_michael

数据结构与算法:递归

Java架构师迁哥

Java 编程 程序员 算法

腾讯某Java程序员为了肝出《300页图解网络知识》+《计算机底层操作系统》超全教程差点猝死!

Java架构之路

Java 程序员 面试 编程语言 操作系统

架构1期-第二周作业一

道长

极客大学架构师训练营

周总结二

何毅曦

第二周 作业二:框架设计学习总结【未陌】

a d e

设计模式 架构设计

听说有人不了解柔性数组

C语言与CPP编程

程序员 数组 编程语言 C语言

第二周 作业一【未陌】

a d e

设计模式 架构设计原则 基本原则

数字与能源,交织成新基建的摩比斯环

脑极体

C语言/C++基本语句编程风格

C语言与CPP编程

程序员 编程语言 C语言

字节3-2专家3年心血终成IT运维之道PDF(IT运维精髓)

周老师

Java 编程 程序员 架构 面试

2020年高频Java面试题集锦(含答案),让你的面试之路畅通无阻!

Java架构之路

Java 程序员 面试 编程语言

架构师第二周总结

悠哉

架构师训练营 - week2 - 个人学习心得总结

谭明华

极客大学架构师训练营

原来我写的软件里面都是臭味 - 架构师训练营第 1 期 - 第二周总结

Todd-Lee

极客大学架构师训练营

极客时间架构师培训 1 期 - 第 2 周作业

Kaven

架构师训练营 1 期 -- 第二周

小河

极客大学架构师训练营

linux虚拟摄像头vivid配置

良知犹存

Linux 虚拟摄像

架构师训练营 - week1 - 个人学习心得总结

谭明华

架构师第二周作业

悠哉

极客大学架构师训练营

框架设计-第二周作业

睁眼看世界

极客大学架构师训练营 软件设计原则

第二周学习总结

追风

极客大学架构师训练营

食堂就餐卡系统设计

谭明华

极客大学架构师训练营

第二周作业二-学习总结

道长

极客大学架构师训练营

架构师训练营第二周学习总结

Gosling

极客大学架构师训练营

小白也能看懂的REDIS教学基础篇——REDIS基础数据结构

云流

Java 数据库 redis

UML练习2

何毅曦

专升本啦!!!

迷羊

超全算法笔试模拟题精解合集,这份《程序员面试宝典》简直太牛了

Java架构之路

Java 数据结构 面试 算法 编程语言

架构师训练营第二周命题作业

成长者

极客大学架构师训练营

360展示广告智能化演进-InfoQ