多场景建模: STAR(Star Topology Adaptive Recommender)

news2024/11/15 18:27:32

之前,分享了一篇关于多任务学习的文章:多任务学习MTL模型:MMoE、PLE,同样的还有关于多任务学习中的多目标loss优化策略。

这篇文章则开始一个与多任务学习有着紧密联系的系列:多场景建模学习。

前言

首先,讲一下多任务学习和多场景建模的区别:

  • 多任务学习通常是聚焦于单独一个domain(场景、领域)内的不同任务的处理,即不同任务的label空间是不同的;
  • 而多场景建模则是关注于多个domain的同一个任务的建模,比如CTR,即不同场景的label空间是一样的,但数据分布是不同的。

(当然,多任务和多场景也可能是同时存在的,因此这两者的联合建模也是一个热门主题,该系列后面也会涉及)

直接将多任务学习应到多场景中,无法高效地利用场景之间在样本空间的关联,以及忽略了不同场景的数据分布的差异。

多场景建模

针对这种多场景的业务需求,一般是以下三种解决方案:

1、所有场景共享一个模型

不同场景行为数据分布不同,会导致各个场景互相产生负向影响。

2、每一种场景单独建模

  • 这种方案的人力和硬件成本的都比较高,需要同时维护和部署多个模型
  • 样本量较少的场景,建模效果较差
  • 无法利用所有场景的数据

3、所有场景联合建模

  • 既有每一个场景的独立参数,又有共同的共享参数
  • 既可以减少维护成本,同时也能用样本量大的场景去带动小场景。

STAR

CIKM’2021:One Model to Serve All: Star Topology Adaptive Recommender for Multi-Domain CTR Prediction

https://arxiv.org/abs/2101.11427

如上图,论文列举了淘宝两个不同场景的推荐流。这些业务的用户往往是存在重叠的,因此不同场景会共享部分共同的用户组和商品的,这些场景是存在共性的;但同时不同场景是存在不同的用户组和商品的,甚至即使是同一个用户,在不同场景的行为表现也是不一样的。

针对所有场景共享一个模型难以应对不同的数据分布和捕获不同场景的特定特性,以及每一种场景单独建模无法利用其他场景的数据和共性的弊端,论文提出一种多场景建模方法:Star Topology Adaptive Recommender (STAR) for multi-domain CTR prediction

如下图(b)所示,STAR既有共享的中心参数,又有多个场景特定参数的集合,最后模型每个场景的输出是结合共享中心参数和场景特定参数得到的。

  • 中心参数是为了学习不同场景的通用行为,这里是为了能够学习和迁移场景之间的共同知识;
  • 场景特定参数则是为了捕获不同场景的行为特性,促进更精确的ctr预估。

这使得STAR既促进了场景之间信息高效的转换,学习了场景之间的共性,同时又能捕获不同场景自己的特性。

并且,在每一层网络中都是使用元素位相乘( element-wise product)来作为组合策略。增加的场景特定参数对于embedding层的参数几乎可以忽略不计,因此STAR上线仅仅增加了少量的计算和内存。

符号定义

在序列推荐系统中,模型的输入包括用户的历史行为、用户画像属性、候选物品属性(target item feature)、其他特征比如上下文信息,对用户u在物品m上的预估CTR y ^ \hat{y} y^ 为:

  • { u 1 , . . . , u i } \{u_1,...,u_i\} {u1,...,ui} 是用户属性的集合,包括历史行为和其他画像属性
  • { m 1 , . . . , m j } \{m_1,...,m_j\} {m1,...,mj} 是target item的属性集合
  • { c i , . . . , c k } \{c_i,...,c_k\} {ci,...,ck} 是其他属性的集合
  • E ( ⋅ ) ∈ R d E(\cdot) \in \mathbb{R}^d E()Rd 是embedding layer,将离散的IDs映射到密集向量(dense vectors)

多场景建模是构建单个CTR模型同时为M个场景 D 1 , D 2 , . . . , D M D_1,D_2,...,D_M D1,D2,...,DM 输出精准的CTR预估。模型输入也可以简化(x,y,p),x为多个场景的共同输入,比如上述的用户历史行为和画像特征, y ∈ { 0 , 1 } y \in \{0,1\} y{0,1} 为是否点击的标签, p ∈ { 1 , 2 , . . . , M } p \in \{1,2,...,M\} p{1,2,...,M} 则为当前样本属于哪个场景的指示器。

Embedding Layer

如上一小节提到,embedding layer是将离散的IDs映射到密集向量(dense vectors)。映射到低维的embeddings之后,常规实践是将这些embeddings进行聚合为固定长度的向量,比如之前介绍的 DIN 或者 DIEN,也是论文使用的方法。如下图:

在工业推荐系统,embeddings的参数量是整个CTR模型的绝大部分,远远超出其他参数比如全连接网络,这导致在有限的数据下,是很难学习到场景特定的embeddings,因此应该选择所有场景共享embedding层的参数,即同一个ID特征在不同场景下共享同一个embedding,这也能够非常有效地减少内存和计算。

Partitioned Normalization

上述提到,原始特征转换为低维的embeddings之后会pooling和聚合成固定长度的向量,这个先成为中间表征,记为z。为了更快和更稳定地训练深度网络,将标准化网络应用到z是一个常用做法。

batch normalization (BN)是其中一种高效的代表性方法,起着关键的作用。BN是一种针对所有样本的全局标准化,具体公式如下:

z ′ z^{'} z是BN的输出, γ \gamma γ β \beta β 是可学习的scale和bias, σ 2 \sigma^2 σ2 μ \mu μ 是当前批次样本的方差和均值, ϵ \epsilon ϵ 是防止分母为0的平滑常数。

而在推理阶段, σ 2 \sigma^2 σ2 μ \mu μ 则会替换为移动平均的统计方差和均值 E E E V a r Var Var,如下式(不理解BN的可以看看之前的文章batch_normalization的正确使用姿势):

不过 BN需要假定所有样本是 i.i.d.(独立同分布),但论文认为针对多场景数据是局部 i.i.d.的,即属于同一个场景的数据才满足 i.i.d.

因此,使用全局的BN会模糊场景之间的差异,给模型带来负向影响。为了能够捕获每一个场景的特定数据特征,提出了一种分区标准化 partitioned normalization (PN) :私有化场景自己的标准化统计和参数,如下式:

  • 需要假定当前样本批次全是从场景p采样而来

  • γ \gamma γ β \beta β 是全局的scale和bias,而 γ p \gamma_p γp β p \beta_p βp 便是场景p特定的scale和bias。

  • 对于每一个样本批次,PN使用共享的 γ \gamma γ与场景特定的 γ p \gamma_p γp相乘作为最后的scale,来实现根据场景指示器来自适应的scale中间表征z β p \beta_p βp也是同理。

由于每一个样本批次都是来自同一个场景,那么PN累积的移动平均的统计方差和均值便也是场景特定,那么推理阶段,对于场景p,PN则为下式:

image-20240822073610678

Star Topology FCN

如上图,经过FN层之后,表征 z ′ z^{'} z会进入到一种星形拓扑结构的多层全连接神经网络,称为star topology multi-layer fully-connected neural network (star topology FCN)。

star topology FCN包括共享的中心FCN和多个独立的场景FCN,因此总的FCN数量为M+1。第p个场景的输出是由共享的中心FCN和场景特定FCN组合而成的,共享的中心FCN参数可以学习场景之间的共同行为,而场景特定FCN参数可以捕获不同场景的特定行为,促进更精确的CTR预估

star topology FCN结构如下图所示:

具体地,W和b为共享FCN的权重和偏置。对于第p个场景, W p W_p Wp b p b_p bp 则是对应该场景FCN的权重和偏置。那么, 最后场景p的权重 W p ⋆ W_p^{\star} Wp 是由前面两者进行element-wise product而来,而偏置 b p ⋆ b_p^{\star} bp 则是两者相加,如下式, W , W p ⋆ ∈ R c × d W,W_p^{\star} \in \mathbb{R}^{c \times d} W,WpRc×d

得到Star Topology FCN的权重 W p ⋆ W_p^{\star} Wp和偏置 b p ⋆ b_p^{\star} bp,那么场景p的最终输出则为:

  • 其中 i n p ∈ R c × 1 in_p \in \mathbb{R}^{c \times 1} inpRc×1 o u t p ∈ R d × 1 out_p \in \mathbb{R}^{d \times 1} outpRd×1 ϕ \phi ϕ 是激活函数。

除了计算表达式之外,STAR还一个比较关键的参数更新机制:

  1. 共享参数是由所有样本来贡献梯度去更新的,而场景特定参数只靠对应场景的样本来更新
  2. 这样有助于捕获场景之间的差异来得到更精准的CTR预估,同时又可以学习到场景之间的共性
  3. 这其实很符合直觉,场景自己对自己的私有参数负责,不应由其他场景来干扰

辅助网络

注意到,在Embedding Layer之前还有一个标注了红框的Domain Indicator(场景指示器),这个便是用于辅助网络的

论文认为,传统的方法即直接将所有特征平等地喂给复杂的模型,在多场景CTR预估任务中,是很难自动学到场景之间的区别/特点的。因此,提出一个好的多场景CTR预估模型应具备以下两个特性:

  1. 有关于场景特性的丰富特征
  2. 让这些特征可以更容易和直接地影响最终的CTR预估

这个直觉的背后是描绘场景信息的特征是非常重要,因为它降低了模型去捕获场景之间的区别的难度。

那么,基于以上论文提出的两个特性,额外引入了:

  1. 场景embeddings:即把场景指示器当做特征ID,映射为对应场景的embedding向量;
  2. 还有一个简单的辅助网络:2层的全连接网络层

为了更直接地影响最后的CTR预估,辅助网络的输出会与star topology FCN的输出相加:

  • s m s_m sm 是star topology FCN的一维输出,即star topology FCN的最后输出
  • s a s_a sa 便是辅助网络的最后输出,辅助网络的输入是场景指示器embedding拼接其他的特征

最后,所有场景的交叉熵loss如下式:

实验结果

评估指标

论文使用的是常用的指标:Area under the ROC curve (AUC),并加上用户加权的AUC:

其中,n是用户的数量, i m p r e s s i o n i impression_i impressioni A U C i AUC_i AUCi 是第i个用户的曝光数和AUC。

参数配置

整体参数:

  • 优化器:Adam
  • 学习率:0.001
  • batch_size:2000

具体模型:

  • Base模型:embedding layer+pooling&concatenation layer+batch normalization+7-layer fully-connected network,其中pooling&concatenation layer使用的是 DIEN
  • Shared Bottom模型:共享embedding layer+7-layer fully-connected network
  • MulANN:Multi-Domain Adversarial Learning
  • MMoE:可以看之前的介绍文章,多任务学习MTL模型:MMoE、PLE。专家的数量等于场景的数量,每一个专家网络是7-layer fully-connected network
  • Cross-Stitch:Cross-Stitch Networks for Multi-task Learning

模型效果对比

不同模型的效果对比

  1. Shared Bottom, MMoE, Cross-Stitch和STAR都比Base取得了更好的效果,这也证明了探索场景之间的关联和捕获不同场景的区别/特性能够提升预估效果
  2. 但是有些场景下,除了STAR,都有其他模型比Base效果反而更差的情况,比如#5,#6,#16,可能是不同场景的学习存在冲突;而STAR便是使用star topology来避免这个问题,只使用对应场景来更新场景特定参数
  3. STAR可以比Shared Bottom取得更好的效果,这证明顶层网络共享场景信息对于多场景学习的重要性,STAR是所有场景共享了同一个label空间
  4. STAR比MMoE, Cross-Stitch都取得更好的效果,这证明显式建模场景的关联相比隐式建模(如门控网络)的优越性。

消融实验

下面是对每个组件的消融实验:

PN和STAR FCN消融实验

辅助网络消融实验

总结

针对多场景任务建模,STAR提出了几个有效的组件来探索场景之间的关联和捕获不同场景的区别/特性:

  • Partitioned Normalization:基于场景分区的标准化
  • Star Topology FCN:组合共享中心参数和场景特定参数,对应场景样本更新场景特定参数
  • 辅助网络:场景特征更直接地去影响最后的预估

代码实现

github

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2089761.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Raspberry Pi]如何利用docker執行motioneye,並利用Line Notify取得即時通知和照片?

[Motioneye]How to setup motion detection and send message/image for Line Notify 無意間,翻了一本關於樹莓派的書籍,除了樹莓派的簡介和應用外,也包含初階和高階的Linux運作邏輯,書籍結構相當完整,也因此需要花時間…

DAC: High-Fidelity Audio Compression with Improved RVQGAN

Rithesh KumarDescript, Inc.2023NIPS code 文章目录 abstratmethod abstrat 44.1k音频编码为8k bps,接近90x压缩比;可以处理speech, musiccodebook collapse: 部分码本没有利用到。----quantizer dropout :允许单个模型支持可变比特率&…

HarmonyOS NEXT实战:“相机分段式拍照”性能提升实践

概述 相机拍照性能依赖算法处理的速度,而处理效果依赖算法的复杂度,算法复杂度越高的情况下会导致处理时间就越长。目前系统相机开发有两种相机拍照方案,分别是相机分段式拍照和相机单段式拍照: 分段式拍照是系统相机开发的重要…

几款最新好用的图纸加密软件

在现代数字化办公环境中,图纸的保护变得尤为重要。无论是建筑设计图纸、工程图纸,还是机械制造图纸,如何有效地加密并保护这些机密文件,避免信息泄露,是每个企业都需要重视的问题。今天,我们就来推荐几款最…

从开题到答辩:ChatGPT超全提示词分享!(下)【建议收藏】

数据收集 1. "请帮我找出关于如何收集【研究领域】社交媒体数据进行消费者行为研究的五篇指导性文章,并概述它们的主要方法论摘要。" 2. "我需要对【特定领域】市场的消费者偏好进行调查。能否提供一份包含调查问卷设计原则和示例的草稿?…

react vant 在使用dialog.confirm取消报错 Uncaught (in promise) undefined

项目场景: 在使用react做移动端开发时,需要使用Dialog.confirm确认框来做弹框选项,这是在操作中非常常用的一种场景。 问题描述 在列表中,使用弹框时,点击取消时,语法报错;导致后面再触发弹框…

养老小程序源码家政服务小程序开发方案

预约上门养老小程序,是php开发预约,前端是uniapp,有开发好的小程序案例,可源码,也可以二开,也可以定制开发。 一 用户端:服务分类、服务内容详情介绍、在线下单支付,管理我的订单。…

认知杂谈42

今天分享 有人说的一段争议性的话 I I 《摆脱自负自卑,找准自我定位》 I 在咱的生活里啊,有时候咱会在自负和自卑这两个地方来回晃悠,根本就找不着真正属于自己的那个位置。你想想看,自负的时候呢,就好像给自己戴了…

Unity(2022.3.41LTS) - 地形

目录 一、地形的创建 二.页面详解 1.创建相邻的 Terrain 瓦片。 2.雕刻和绘制地形。 3.添加树。 4.添加细节,如草地、花朵和岩石。 5.更改所选 Terrain 的常规设置 三、地形编辑工具 四、地形的属性设置 五、地形的优化 六、地形的应用场景 一、地形的创…

校园牛奶订购配送小程序开发制作方案

校园牛奶订购配送小程序系统的开发方案,包括对用户需求的分析、目标用户的界定、使用场景的设定以及开发功能模块的规划。校园牛奶订购配送小程序系统主要是为校园内学生和教职工提供牛奶订购与配送服务。 目标用户 主要面向在校学生、教职工以及其他有牛奶订购需求…

Mac GIF录制神器LICEcap

GIF录制软件的优点先看下 mac gif制作win gif录制完全免费界面简洁软件大小不到1M 今天就来介绍一款录屏并能生成 GIF 的软件:LICEcap。 背景 希望小巧免费的GIF录制的话LICEcap非常适合,网上很多能轻松录制屏幕的工具,基本都是录制之后带…

操作系统:实验四进程调度实验

一、实验目的 1、了解操作系统CPU管理的主要内容。 2、加深理解操作系统管理控制进程的数据结构--PCB。 3、掌握几种常见的CPU调度算法(FCFS、SJF、HRRF、RR)的基本思想和实现过程。 4、用C语言模拟实现CPU调度算法。 5、掌握CPU调度算法性能评价指…

基于python文案转语音并输出-自媒体等职业副业均可使用,不受他人限制

开发背景: 目前自媒体比较火爆,有很多书单、视频等推广方式可以作为副业盈利,之前每次搞的时候都需要不停的网上找一些在线文字转语音的平台将文案复制上去然后生成下载,好多还是付费的,挺无奈的,然后就想着自己能不能搞,然后的然后就有了下面的东西, 如果大家有此类需要…

文心智能体-梦想目标实现助手-实现你的老板梦

前言: 其实我从小就很羡慕小说里面的男主,从家境贫寒到后面成为天之骄子,在一路上都有很多好的机遇和贵人。用今天的话来说,男主好像都有一个“系统”,毫不意外,我也有这样的武侠梦,金庸的小说更…

波导阵列天线学习笔记6 用于K和Ka频段卫星通信的超宽带双圆极化波导阵列天线

摘要: 在本文中,设计了一种用于K和Ka双频段的宽带双圆极化波导天线阵列。一种多级方波导结构被利用(exploited)在辐射层内来实现双极化响应的激励。一种脊波导极化器被集成在内来实现左旋圆极化和右旋圆极化。为了馈网的更好设计,…

qtlinux

filezilla传 白色 权限不够 chmod x ./运行 source路径 qmake make 55可执行文件 nfs拷贝到开发版 ./运行 make j 核数 (加速编译过程)

【精选】推荐4款写作效率翻倍的AI论文写作助手

在当前的学术研究和写作领域,AI论文写作助手已经成为提高写作效率和质量的重要工具。这些工具利用先进的自然语言处理和机器学习技术,帮助研究人员和学生快速生成论文草稿、优化内容、进行查重和排版等操作。以下是四款高效且广受好评的AI论文写作助手&a…

迎来“成人礼”的良品铺子,蜕变了吗?

成立18年的良品铺子,正在迎来一场“成人礼”。 在这一关键节点,“苦”可能是其最先品尝到的味道。据良品铺子近日发布的财报,2024年上半年,公司实现营业收入38.86亿元,同比下滑2.52%;归属于上市公司股东的…

python脚本如何用sleep

Python 编程中使用 time 模块可以让程序休眠&#xff0c;具体方法是time.sleep(秒数)&#xff0c;其中“秒数”以秒为单位&#xff0c;可以是小数&#xff0c;0.1秒则代表休眠100毫秒。 代码如下&#xff1a; # 例1&#xff1a;循环输出休眠1秒 import time i 1 while i <…

Linux Debian12安装flameshot火焰截图工具

一、Linux Debian12安装flameshot 打开终端&#xff0c;运行&#xff1a; sudo apt install flameshot安装成功后&#xff0c;使用下面命令查看帮助信息&#xff1a; flameshot -h其中flameshot launcher命令可以打开启动器。 二、使用flameshot截图方法 打开终端&#x…