您的位置:首页 >文化 >

华为在联邦广告算法上的探索及应用「拜占庭算法」

时间:2022-12-25 18:05:09 来源: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用户的广告推荐,其实也是用端云联邦学习实现的。

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


分享嘉宾:刘璐 华为 联邦学习专家

编辑整理:吴叶国 微言科技

出品平台:DataFunTalk


01/分享嘉宾

刘璐|华为联邦学习专家

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


02/关于我们

DataFun:专注于大数据、人工智能技术应用的分享与交流。发起于2017年,在北京、上海、深圳、杭州等城市举办超过100 线下和100 线上沙龙、论坛及峰会,已邀请超过2000位专家和学者参与分享。其公众号 DataFunTalk 累计生产原创文章700 ,百万 阅读,14万 精准粉丝。


郑重声明:文章仅代表原作者观点,不代表本站立场;如有侵权、违规,可直接反馈本站,我们将会作修改或删除处理。