Fork me on GitHub

华为|联邦学习在广告行业上的探索及应用

图片

分享嘉宾:刘璐 华为 联邦学习专家
编辑整理:吴叶国 微言科技
出品平台:DataFunTalk

导读: 华为联邦学习专家刘璐老师(牛油果)为大家分享联邦学习在广告行业的应用。

分享将会围绕下面六点展开:

  • 广告业务背景介绍
  • 不同视角下的转化流程
  • 广告链路中的算法技术
  • 纵向联邦学习如何服务广告场景
  • 横向联邦学习如何服务广告场景
  • 联邦学习中的攻防技术

01 广告业务背景介绍

在广告业务当中主要有三大主体,首先是广告主,然后是广告平台,最后是用户。

图片

广告主在广告平台上投放广告任务,广告平台通过背后的大数据以及深度模型深度网络去进行算法推荐,将合适的广告推送给合适的用户,用户看了广告之后会发生转化,最终为广告主带来商业价值。一句话来说就是给某个人在某个时间某个地方去看某个素材,用以宣传某个东西,最终达到某种效果。

1. 广告形式

图片

华为Ads支持多种广告形式,比如Banner广告、原生广告,激励视频广告、插屏广告以及开屏广告。同一个广告形式可以在不同的媒体上面进行展示,同一个媒体也支持各种广告形式的播放。

2. 媒体资源

图片

华为Ads有优质的流量资源,包括自有媒体和三方媒体。自有媒体包括华为视频、浏览器、云空间、华为阅读等。第三方媒体有丰富的游戏类媒体,视频类媒体,以及资讯类媒体。之前曾有数据表明,华为的优质用户已经高达7.4亿,现在应该又有增长。

3. 转化跟踪

图片

转化跟踪是将广告主所关心的转化行为,通过API、SDK等方式上报给广告平台。

目前国内的广告行业惯用方式是API。平台已经支持 APP、H5、快应用等场景。SDK主要是在海外广告行业使用的跟踪方式,还有一种跟踪方式来自于HMS Core。HMS Core是华为的独特能力,目前华为平台已经支持统计激活和次留场景。通过转化跟踪,将广告主的转化数据上报给广告平台。

4. 为什么要转化跟踪

图片

我们为什么要用转化跟踪技术?因为平台和广告主的数据存在天然的割裂。举例来说,平台只知道有几个任务产生了100个安装,但是究竟有多少真正付费了,平台是不知道的;而广告主恰恰知道今天收集到了50个付费,但分别是哪个任务带来的,广告主也是不知道的。

借助转化跟踪,可以将广告主的转化事件,比如说激活、付费以及其他转化行为,跟广告平台侧的投放任务关联,为投放效果分析和oCPC模型做数据支撑。

5. 转化跟踪潜在问题

  • 转化跟踪也存在一些潜在的问题,比如:
  • 如果用户的OAID无法收集,怎么预估转化概率?
  • 广告主愿不愿意回传后端的转化事件。
  • 广告隐私政策日益趋严情况下,现在的跟踪方式合不合法。
  • 数据回传的正确性能否得到保证。

02 不同视角下的转化流程

在了解了广告形式、媒体资源以及转化跟踪技术之后,我们来看一下不同视角的转化流程是怎样的。

1. 用户视角:以APP广告为例

图片

在用户视角下,以APP广告为例。在用户看来是以下4个简单的页面,首先用户会看到广告,当用户对该广告感兴趣时,会点击广告跳转到下载页,进行APP的下载,然后首次打开,统计安装和激活量。

2. 客户端视角

图片

客户端视角就不是4个页面这么简单了。首先客户端会收到用户请求,收到这个请求之后,客户端将请求发送到服务器,服务器收到请求之后会发生广告竞价,在竞价任务事件发生之后,最终竞价成功的广告展示给用户。用户看到广告之后,客户端会记录广告是否展示,展示之后客户端会记录广告是否点击。如果广告被点击,客户端需要判断是否开始下载,以及下载是否完成。下载完成之后,这个APP有没有安装,安装是否完成,最终是否发生了激活,每一个动作在客户端来看,都需要进行一个埋点、采集、记录。

3. 服务器视角

图片

在服务器视角下,服务器需要与客户端进行配合。服务器收到响应之后,将进行一系列的请求的监控,包括收到曝光事件、点击事件、下载开始事件、下载完成事件、安装开始事件、安装完成事件以及激活事件等,都需要服务器进行采集记录。激活完成之后,整个转化流程就结束了。

03 广告链路中的算法技术

图片

下面我们介绍一个完整广告链路中的算法技术。

首先,用户会点击网站、APP、视频等媒体,产生一个网络请求;媒体收到网络请求后,会将请求转发给负责整合流量的SSP供应方;SSP将请求信息交给ADX,ADX就是广告交易中心;ADX通知所有负责广告主的DSP进行出价;因为广告主会在DSP当中投放广告,并且投放任务当中会设置广告出价,各个DSP在收到请求之后,会选择一个出价最高的广告主,并且以出价第二高的价格加0.1元进行计算,然后出价最高的广告会原路返回给用户,并展示给用户。到此为止,一个广告的交易流程就基本结束了。

整个过程经历了很多个服务器,比如说SSP、ADX、DSP,然后是媒体,再到用户,这个过程是非常复杂的,但是整个流程一般会控制在100毫秒左右。其中涉及的所有数据都会存储在DMP当中,DMP是把分散的各方数据整合到一个统一的技术平台中,对用户进行标准化和细分后,进行营销环境的使用。

对广告而言,大致经历了检索、召回、特征抽取,模型预估,最后展示给用户。其中有两个最重要的模型,一个是点击率预估模型,一个是 转化率预估模型

图片

DSP进行竞价时最重要的公式就是ECPM公式,其等于广告主的出价price乘以pctr乘以pcvr再乘以1000,最终ECPM高者竞价成功,最后展示给用户。

其中,pctr是点击率预估模型预估出来的概率,pcvr是转化率预估模型预估出来的概率。

图片

在点击率预估模型中主要用到的数据是广告的曝光数据和点击数据,这两种数据在广告平台侧都是具备的。

有了这个数据之后,经过数据预处理、特征工程、模型训练以及评价指标AUC,最终发布上线。

所使用的特征大概有以下几类:用户特征、广告特征、上下文特征、High Level特征(泛化能力比较强)和Low Level特征(自解释能力比较强) 。使用以上的特征再加上标签数据(是否点击),实现模型的训练和推理。

图片

转化率预估模型是大家所说的金牌模型 ,用到的数据主要是更后端的数据,因为用户发生的转化行为是广告链路中比较深的一个链路,用到的是点击数据和转化数据,其中转化数据包括下载、激活、注册、付费等行为。

在广告行业背景介绍中,我们介绍了转化数据是怎么来的,是依据现有的转化跟踪技术,通过广告主或者媒体嵌入广告投放平台的SDK或者API接口,实现将后端的数据给到平台,以此实现任务和标签的关联。

如果转化跟踪技术出现了问题,或者转化跟踪突然不能用了,转化率预估模型是没办法完成训练的,因为后端的数据广告主没有给到平台。在此场景下,我们就需要使用纵向联邦学习来解决这个问题。

04 纵向联邦学习如何服务广告场景

图片

接下来我们看一下,纵向联邦学习是怎么服务于广告场景的。

上图画的是纵向联邦学习在广告中的架构图。 纵向联邦学习天然可以解决标签缺失问题,除了这个问题之外,还可以解决是转化率预估这种稀疏场景下的特征不足,特征维度有限的问题。如果广告主系统和DSP系统进行联邦学习,它不仅能够解决标签问题,同时能够帮助模型增加特征维度,更好地提高模型的准确度。

在广告主和DSP进行离线联邦训练服务中,必然要用到 特征和标签 。广告平台侧(DSP)可以利用用户特征、广告特征、上下文特征以及High Level特征和Low Level特征;广告主除了可以提供后端转化数据之外,还可以提供端内行为数据、历史兴趣标签以及短期行为标签,来完成模型的训练。

不同于已有的广告链路, 整个请求响应都是在广告平台侧发生 。如果使用了纵向联邦学习,在离线训练阶段请求就必然要经历广告主系统,同样在线推理也必然要经历广告主系统,所以它的请求链路发生了改变。

图片

纵向联盟学习我们主要是依托于TICS服务完成,TICS全称是可信智能计算服务,产品架构图如上图所示 。TICS基于多方安全计算以及区块链等技术,实现了数据在存储、流通和计算过程中端到端的安全和可审计。它主要提供如下一些功能,如联盟管理、数据融合分析、计算节点、联邦分析计算、数据使用监管和容器化部署。

使用这个服务的前提是,所有参与方要在一个联盟链中,也就是说在同一个联盟的用户,需要进行相关节点的部署。计算节点是以两种方式进行部署的,一种是以容器化的形式部署,支持云容器CCE引擎,另一种是边缘节点的部署,也就是智能边缘平台服务部署。云容器引擎的优点是提供了高可靠和高性能的企业级服务,支持Kubernetes社区原生应用以及相应工具的使用。

TICS服务内有一个计算节点,计算节点的主要功能是实现数据源注册,并且提供了一些隐私策略的发布,比如某个数据源可以选择是敏感的、非敏感的以及脱敏的设定,然后是元数据的发布。

图片

使用TICS平台构建联邦学习服务非常简单。首先我们要加入联盟,进入计算节点,选择作业类型。作业类型有两种,一种是联邦数据分析,一种是联邦机器学习(模型训练)。

图片

在作业类型选择完成之后,就会进行样本初筛和样本对齐。纵向联邦学习第一个过程就是要进行PSI隐私交集,找出共同的用户群体。不同的参与方其用户量天然就不一样,比如有的参与方用户量达到了亿,有的参与方则只有百万或者几万等等。为了加速求交过程,我们首先要进行样本粗筛,然后再进行PSI样本对齐。

图片

在样本对齐之后,就可以进行特征选择,并且启动训练,配置模型参数,发起评估,包括准确率、AUC、KS、F1、召回率等各项指标的评估。

纵向联邦学习主要是跟广告主进行合作,主要产品形态有两种:一种是广告主只需要提供标签Y;另外一种如果广告主很open,并且希望其转换效果能够得到提升,他既可以提供标签Y,也可以提供特征X,然后广告主和广告平台发起联邦学习。

广告链路中性能是一个重要的问题,整个广告链路过程要控制在100毫秒。并不是所有的广告主都可以满足时延的性能要求,针对这种场景我们提供了两种方案,一种是离线方案,不需要做实时计算。另一种是在线方案,广告主和广告平台测试发现性能100毫秒可以满足,就可以做模型的实时推理在线计算。如果广告主侧满足不了时延要求,就用模型提前预测出广告主的转化率放在在线模型上面,不做实时计算。比如请求来了之后,通过查表获得转化率,然后再进行后边的竞价和播放链路。这就是纵向联邦学习的两种产品形态。

05 横向联邦学习如何服务广告场景

横向联邦学习技术,最早是谷歌提出来的,概念就不在此赘述了。在广告场景主要是利用手机端和广告服务器,依托于Mindspore的端云训练框架进行横向联邦学习的训练。

比如海外是无法收集用户数据的,甚至连OAID都不能采集的;如果随着国内隐私保护条例逐渐收紧,用户数据也无法上传到云侧,就需要使用横向联邦学习技术进行广告推荐了。

图片

整个Mindspore的框架架构如上图所示 ,主要分成FL Scheduler和FL Server两个组件。它有如下 4个优点

  • 隐私安全 :既支持基于多方安全计算的精度无损的安全聚合,防止模型窃取,同时也支持基于本地差分隐私的性能无损的加密方案,防止模型泄露隐私数据。差分隐私因为噪声添加必然带来精度损失,而多方安全计算保护了数据安全必然带来了通信的开销。
  • 分布式联邦聚合 :支持千万级数量的大规模异构终端部署场景,实现高性能高可用的分布式联邦计算。
  • 联邦效率提 :Mindspore框架提供了多种模型压缩算法,以及多种通信压缩算法,从而提高联邦学习效率,节省带宽资源。
  • 灵活易用 :仅用一行代码就可以切换单机和联邦学习模式。

图片

在一个联邦学习任务中有两种角色的Mindspore进程:FL Scheduler和FL Server。

FL Scheduler的主要功能包括:

  • 协助集群组网 :在集群初始化的时候,由Scheduler负责收集Server的信息,并保障集群的一致性。
  • 开放管理面 :它向用户提供RESTful接口,实现对集群的管理。

整个联邦学习推理训练,执行任务的主体是FL Server, FL Server负责

  • 接收和解析端侧设备上传的数据
  • 具有安全聚合、限时通信以及模型存储等能力

在一个联邦学习的任务当中,用户可以配置多个Server, Server和Server之间通过TCP进行通信,Server和客户端通过HTTP接口进行通信。

图片

横向联邦学习中,一个千万级的联邦,其通信开销是非常庞大的。为了提高效率或者减少开销,Mindspore提供了一些上传压缩方法,主要分为三个部分:权重差编解码、稀疏编解码以及量化编解码。

整个上传压缩方法在FL Client的执行顺序是 :首先客户端发起了一个联邦学习任务之后,会收集到云侧下发的权重并复制权重,然后开始端侧的训练,经历了权重差编码、稀疏编码、量化编码之后,把训练好的模型update上传服务器。

在Server上的执行顺序刚好与客户端相反,要先量化解码,再稀疏解码,权重差解码之后再进行聚合权重,进行后续过程。

权重差就是端侧训练前后的权重向量的矩阵差。对于原始权重而言,权重差的分布更符合高斯分布,也更适合被压缩。

FL Client的整个压缩过程 :首先把云侧下发的权重赋值w’复制为w0, w0和w’是相等的;然后他将w’布置到端侧的模型中,开始端侧的训练;训练完后将所得权重加密后获得w,然后将w与w0相减,相减后的差值进行稀疏编码,量化编码。

服务器收到权重差之后,进行量化解码,稀疏解码之后对权重进行加权,因为上传的权重是没有data size的,没有加权的,服务器收到之后要乘一个data size,进行权重还原,再进行权重聚合。

稀疏编解码技术已经比较成熟了,其原则是端云需要使用同样的稀疏编码方式,就是随机算法以及随机种子生成掩码矩阵。掩码矩阵和原本上传的权重矩阵是相同的,每一个Client只需要上传和掩码矩阵非零位置相同的权重给Server就可以了。Serve收到压缩权重后,首先会用与Client同样的随机算法和随机种子生成一个掩码矩阵,在生成的掩码矩阵当中,取出位置为1的 index,再生成和模型size相同的全零矩阵,依次将收到的压缩向量中值为1的放入 weight vector的index中,原矩阵就恢复了。

以ALBERT模型为例,在稀疏编码之前,需要上传的参数有99,221个,而稀疏编码之后,只需要上传压缩后的compressed vector 7937个就可以了。

量化编码是将浮点型的通信数据定点为近似的有限个离散值,因为浮点数的开销是比较大的,所以就用了量化编码的方式去压缩带宽。

图片

在Mindspore中,端云通信压缩功能是非常简单的,只需要在开启云侧服务时,在Server启动脚本当中使用set_fl_context()设置upload_compress_type和download_compress_type这两个参数就可以了。

我们以ALBERT的代码为例,提供了如何使用通讯加速功能的示例。在ALBERT的实验结果比较好,最终在验证集上的准确率,不压缩的普通联邦场景为72.3%,压缩后的是72.5%。

06 联邦学习的攻防技术

图片

下面我们简单看一下联邦学习的攻防技术。联邦学习涉及大量的通信,不管是纵向还是横向联邦学习,都必然会存在攻击。根据不同训练阶段,我们可以将攻击划分为训练前、训练中以及训练后三个阶段。

针对训练阶段的攻击主要有两种:一种是投毒攻击,一种是后门攻击。 投毒攻击和后门攻击的主要思想是将恶意数据注入到训练数据集中,使模型无法有效的学习到决策边界,或者学习到错误的决策边界。

发生攻击的根本原因是因为深度学习模型的脆弱性。 深度学习算法的性能很大程度上取决于训练数据,训练数据质量越高,模型效果就越好。

高质量的训练数据是全面的、无偏的和有代表性的。结合广告转换这个场景来说,收集到这样高质量的训练数据是非常困难的。因为这个特定场景下数据就非常稀疏了,正样本又非常少,很难做到数据无偏或者有代表性的,数据稍有波动,模型的效果就会很差。

后门攻击又可以分为两种,针对训练数据的以及针对模型的。针对数据的很好理解,本质是在训练集上找一个全局或者局部的分布扰动,使训练数据的分布发生畸变就可以了,只要训练数据发生了畸变,模型必然会学偏,效果必然会变差。针对模型的攻击之所以能够发生,本质上是归咎于算法和模型的脆弱性,最终导致的结果是没有具有代表性的特征,整个模型的结果也就很差了。

图片

下面介绍四种攻击思想,前两种针对的攻击对象是训练数据,后两种是针对模型的。

针对数据的攻击模型是黑盒的,攻击者不知道模型是什么样子,不知道模型结构,也不知道参数有多少个,基于标签翻转或者植入触发器,通过修改特定的标签,或者针对触发器进行样本覆盖,然后重新训练,对模型造成攻击。它主要的局限性是其攻击能力比较弱,有一些技术手段可以防止其攻击。

针对模型的攻击模型其攻击思想一个是修改训练过程,修改训练过程要么是修改训练过程中的模型参数或损失函数。另一个攻击更厉害,直接修改训练后的模型。这两种方式本质上是改了模型,要么改了损失函数,要么改了模型参数,对于攻击者而言,攻击模型是白盒的,如需发生攻击,其必须要知道模型的网络结构,必须知道模型参数有哪些,才可以发生攻击,也就是说攻击者需要有一定的技术壁垒,他付出的代价也是非常大的,而最终这种攻击的后果也是不可想象的。

上面所讲的攻击,攻击者都是在横向联邦学习用的比较多,因为横向联邦学习主要的设备参与方是拥有训练数据的,既然端侧参与的方式非常简单,一个攻击者只要收集到了足够的设备,比如说收集到了1000个设备,想篡改数据或者直接攻克端侧模型,都是比较容易的。

下面看一下纵向联邦学习。应用比较多的是把两个参与方以标签持有方和数据持有方进行区分。本质上无论标签持有方或者数据持有方,要想训练完整的模型,就需要通信,需要梯度的传输,而梯度的传输有很多论文,根据梯度是完全可以推导出用户数据的,其实是非常不安全的。

图片

攻击者只要控制了一个或者多个被动方就可以了,因为数据是在被动方的,攻击者有标签,但没有数据,攻击者要知道的就是数据是什么,然后非法利用数据进行非法经营或是各种破坏。

基于中间梯度获得样本标签,主要因为当损失函数是交叉熵的时候,注入攻击是非常容易发生的,这篇论文详细讲述了攻击发生的过程。

图片

最后简单介绍一下如何防御, 防御大致分为四种

  • 基于增强模型稳定性的防御

增强模型有几种方式,首先是在主动方添加可训练层,一般主动方只有一个标签,只是计算梯度,为了加强模型的稳定性,可以在标签方做一些策略,加一些训练层,让它没那么容易进行攻击。第二种方式是基于dropout的防御,dropout本质上提高了模型的鲁棒性,而模型鲁棒性越强,要攻击它就越困难。第三种是基于自动编码器的防御。

  • 基于梯度扰动策略的防御

针对的攻击思想是只要有了梯度,就可以知道数据了。可以直接在梯度中加入差分,或者进行梯度的过裁剪更新,以及添加一些高速噪声等,去保护梯度,对梯度造成扰动,让攻击者无法知道原来的梯度;也可以进行梯度稀疏化的防御。

  • 基于硬件TEE路线的防御

将所有的运算过程都放在硬件当中,攻击者攻击的代价就非常大了。

  • 基于同态+TEE路线的防御

总结

  • 基于同态的研究已经非常多了,但目前在训练阶段还是不可行的,因为会涉及到密态数据下运算,其时延和性能往往在工业界是不达标的。
  • 浅层网络的单进程版本对比明文训练普遍会有2~3个数量级的降低。
  • 有多种路线可以提高计算性能,包括并行、硬件加速、针对神经网络的特殊优化。

07 QA环节

Q1:目前有没有可用于实验的纵向联邦学习的广告推荐数据集?

A1:目前我们与很多广告主做纵向联邦学习方面的尝试,但是数据集不能够提供。因为使用的都是比较真实的个人数据,不仅因为有个人数据保护法的限制,而且它是具有商业价值的数据,因此目前还没有公开的数据集提供。

Q2:TICS平台目前在系统里实现了什么样的联邦学习算法,在线预测的时候是否会影响用户体验?

A2:TICS目前最基本的逻辑回归是有的,最基本的XGBoost树模型也是有的,因为这两种模型是针对一些银行或者金融是比较常见的,因为它要求模型可解释。对于广告而言,因为广告涉及到的数据还有一些特征是非常多的,而且数据也非常稀疏,所以对于广告产品而言往往需要一些深度模型。TICS上一些深度学习模型,多任务模型等后续都会发布上线。

Q3:联邦学习能够完全替代RTA的广告主明细数据的回传吗?RTA的广告主是不是不需要回传数据了?

A3:联邦学习场景主要用于广告主不愿意提供数据,或者例如金融信贷行业这类无法提供数据的场景。并不是说有了联邦学习,那RTA或者说转化跟踪就不需要了。多一种技术也是多一个场景的考虑,另外就是整个广告架构当中,当转化跟踪技术突然有一天无法使用或者出现问题后,你的技术需要有一个backup,并不是一个冲突的关系。

Q4:华为现在端云联邦场景里面有哪些落地案例?

A4:端云联邦学习场景落地案例还是蛮多的。端云主要用Mindspore,比如说我们有一些短信标签是用端云Mindspore实现的,以及在海外场景广告没有OAID用户的广告推荐,其实也是用端云联邦学习实现的。

分享嘉宾

图片

刘璐

华为联邦学习专家

北京大学硕士,华为广告算法联邦学习专家。


本文地址:https://www.6aiq.com/article/1661848974049
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出