多场景建模:快手参数及Embedding个性化网络PEPNet

Parameter and Embedding Personalized Network (PEPNet)

背景

多场景:双列Tab(Double-Columned Discovery Tab)、精选Tab(the Featured-Video Tab)、沉浸单列Tab(the Single-Columned Slide Tab)
多目标:点赞(Like)、关注(Follow)、转发(Forward)、收藏(Collect)、不喜欢(Hate)、 点击(Click)、有效观看(EffView)

在这里插入图片描述

user及item在不同场景有交叉重叠,场景之间存在共性;任务之间也存在相互关系,单独为每个场景训练单独的模型既耗费人力也无法利用全量的数据,忽略了场景之间的共性,因此需要多场景多任务建模。

业务挑战&难点:

双跷跷板效应

  1. 所有样本混合在一起训练,不同场景有不同的数据分布,容易出现场景跷跷板效应(domain seesaw)
  2. 不同的目标有不同的稀疏性,而且目标之间有相关性,会相互影响,容易出现任务跷跷板效应(task seesaw)

在这里插入图片描述

解决方案

引入 domain-specific EPNet(Embedding Personalized Network),增加场景相关的先验信息去个性化选择底层的embedding,底层embedding按场景个性化
引入 task-specific PPNet(Parameter Personalized Network),将user和item的个性化先验信息加入进来,通过gate去动态个性化改变DNN隐层单元,平衡不同任务之间的稀疏性

点评:通过输入的个性化先验信息通过gate机制动态缩放底层的Embedding参数以及上层的DNN隐层参数
在这里插入图片描述

方案详情:

EPNet和PPNet的基本单元都是Gate NU(Gate Neural Unit),详解下Gate NU,这个结构受语音识别领域的LHUC结构启发而来的,目的是将个性化的先验信息注入到网站中。LHUC是通过speaker的先验信息来缩放模型的隐层单元达到语音识别的个性化。但是LHUC仅仅是用userID来作为个性化的先验信息,并没有用到用户的年龄、性别等其他画像信息,而这些信息在推荐系统非常重要,包括itemID,item的类别、作者等等先验信息,当然也包括场景ID等先验。Gate NU就是将这些信息都当做先验信息输入来个性化调节DNN网络隐层,达到场景、任务的个性化。
在这里插入图片描述

Gate NU是由两层网络结构实现,第一层目的是交叉输入的先验信息 x \mathbf x x,通过非线性函数relu进行激活,第二层通过sigmoid函数产生gate缩放分数,用 γ \gamma γ来调节缩放的程度
x ′ = R e l u ( x W + b ) \mathbf x^{'} = Relu(\mathbf x \mathbf W + \mathbf b) x=Relu(xW+b)

δ = γ ∗ S i g m o i d ( x ′ W + b ′ ) \mathbf \delta = \gamma * Sigmoid(\mathbf x^{'} \mathbf W + \mathbf b^{'}) δ=γSigmoid(xW+b)

Embedding Personalized Network(EPNet)

面临问题:所有特征的Embedding拼接到一起作为共享底层(share-bottom)输入,但是这种方式面对多场景时没有考虑场景之间的差异性,怎样从输入层面考虑场景的差异?
解法:将场景先验信息注入到底层Embedding中,实现场景个性化

sparse特征和dense特征合拼接起来,经过Embedding层,作为主体网络的输入
E = E ( F S ) ⊕ E ( F D ) \mathbf E = E(F_S) \oplus E(F_D) E=E(FS)E(FD)
场景特征像场景ID、场景的统计特征(用户曝光量和点击量)等表示为 F d F_d Fd

经过GateNU后,GateNU的输出为
δ d o m a i n = G a t e N U ( E ( F d ) ⊕ ( ⊘ ( E ) ) ) \mathbf \delta_{domain} = GateNU( E(F_d) \oplus (\oslash (\mathbf E)) ) δdomain=GateNU(E(Fd)((E)))

这里 ⊘ \oslash 表示GateNU不对原来的Embedding层做梯度回传,也就是说虽然GateNU会缩放改变Embedding,但是不对Embedding进行梯度回传,避免和主体网络的梯度回传冲突混乱。GateNU这种参数缩放的方式,其实是一种注入的方式,还是尽量减少对原始Embedding的影响。

EPNet的输出如下,这样就实现了对Embedding输入的场景个性化
δ d o m a i n ⊗ E \mathbf \delta_{domain} \otimes \mathbf E δdomainE

Parameter Personalized Network(PPNet)

面临问题:各个任务都是用DNN塔来学习的,这样所有用户都是共享这个任务塔,这样缺少个性化,很难去平衡各个任务之间的学习。
核心目的:将user、item、author等先验信息注入上层的DNN塔中,实现任务的个性化

user、item、author的相关特征表示为 F u F_u Fu/ F i F_i Fi/ F a F_a Fa,这部分先验输入拼接起来再和底层经过场景先验注入的Embedding拼接在一起作为PPNet的网络输入

经过GateNU后,GateNU的输出为
δ t a s k = G a t e N U ( ( E ( F u ) ⊕ E ( F i ) ⊕ E ( F a ) ) ⊕ ( ⊘ ( δ d o m a i n ) ) ) \mathbf \delta_{task} = GateNU( (E(F_u) \oplus E(F_i) \oplus E(F_a) ) \oplus ( \oslash (\mathbf \delta_{domain}) ) ) δtask=GateNU((E(Fu)E(Fi)E(Fa))((δdomain)))
这里GateNu也是不对DNN网络进行回传梯度,减少对主网络的影响

这里 H \mathbf H H表示DNN的隐层 H = [ H 1 , H 2 , . . . , H T ] \mathbf H=[H_1,H_2,...,H_T] H=[H1,H2,...,HT],其中 H t ∈ R h H_t \in R^h HtRh表示任务 t t t任务塔的隐层单元数量, δ t a s k ∈ R h ∗ T \mathbf \delta_{task} \in R^{h*T} δtaskRhT需要split拆分成 T T T h h h维度的向量,这样好乘到任务的隐层单元上面,达到改变任务塔隐层的目的。

PPNet的输出如下,这样就实现了对DNN塔参数的任务个性化
δ t a s k ⊗ H \mathbf \delta_{task} \otimes \mathbf H δtaskH

对DNN每一层进行这样的处理,假设有 L L L
O l = δ t a s k l ⊗ H l \mathbf O^l = \mathbf \delta_{task}^l \otimes \mathbf H^l Ol=δtasklHl
H l + 1 = f ( O l W + b l )     l ∈ { 1 , 2 , . . . , L } \mathbf H^{l+1} = f( \mathbf O^l \mathbf W + \mathbf b^l ) \ \ \ l \in \{1,2,...,L\} Hl+1=f(OlW+bl)   l{1,2,...,L}

消融分析

10天的数据训练,第11天验证,第12天测试
训练策略:由于Embedding层的参数更新频率比DNN层参数更新频率要大很多,特别是ID类特征的Embedding参数,因此使用不同的更新策略,Embedding层AdaGrad,学习率 0.05,DNN层Adam,学习率设置相对小:5.0e-06。

A场景
在这里插入图片描述
B场景
在这里插入图片描述
C场景
在这里插入图片描述

without EPNet、without PPNet、without both EPNet and PPNet
在这里插入图片描述

PPNet在单场景多任务上的表现
在这里插入图片描述

EPNet在多场景单任务上的表现
在这里插入图片描述

PPNet在单任务单场景上的表现
在这里插入图片描述

超参数分析

Embedding维度,维度在16维的时候已经能取得较好的效果

在这里插入图片描述

DNN层数,4层最好,太深了可能过拟合
在这里插入图片描述

GateNU的缩放系数,2最好,因为输出是(0,2),中心是1,这样缩放比较平衡
在这里插入图片描述

把GateNU对input的后向梯度传播加/不加进来,说明不对主网络进行更新效果更好

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

spring-bus消息总线的使用

文章目录 依赖bus应用接口用到的封装参数类 接收的应用监听器定义的事件类 使用bus定义bus远程调用A应用数据更新后通过bus数据同步给B应用 依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp…

使用CUDA过程中出现异常

使用&#xff1a;yolo detect train dataSKU-110K.yaml modelyolov8n.pt epochs100 imgsz640 device0,1 出现错误 UserWarning: CUDA initialization: CUDA unknown error - this may be due to an incorrectly set up e nvironment, e.g. changing env variable CUDA_VISIB…

ATM和AMS启动流程

AMS 即 ActivityManagerService&#xff0c;负责 Activy、Service、Broadcast、ContentProvider 四大组件的生命周期管理。本文主要介绍 AMS 的启动流程和初始化过程。AMS 在初始化的过程中&#xff0c;也伴随着了ATMS&#xff08;ActivityTaskManagerService&#xff09;的初始…

QT使用QFileSystemModel实现的文件资源管理器(开源)

文章目录 效果图现实的功能总体框架功能介绍视图双击进入处理复制与剪切粘贴重命名&#xff0c;新建显示文件详细信息文件路径导航栏 总结 效果图 现实的功能 支持文件/文件夹复制&#xff0c;粘贴&#xff0c;剪切&#xff0c;删除&#xff0c;重命名的基本操作支持打开图片&…

一键部署私有化的思维导图SimpleMindMap

简介 SimpleMindMap 是一个可私有部署的web思维导图工具。它提供了丰富的功能和特性&#xff0c;包含插件化架构、多种结构类型&#xff08;逻辑结构图、思维导图、组织结构图等&#xff09;、节点内容支持文本、图片、图标、超链接等&#xff0c;支持拖拽、导入导出功能、快捷…

windows消息循环之手撸一个Win32窗口程序

Windows消息循环&#xff08;Windows Message Loop&#xff09; 在Windows操作系统中&#xff0c;一个程序通过不断地接收和处理消息来保持活动状态的一种机制。在Windows编程中&#xff0c;消息循环是处理用户输入、操作系统事件和其他消息的关键部分。 在Windows应用程序中…

join | join_any | join_none之间的区别

文章目录 前言一、join/join_any/join_none之间的区别总结 前言 本文主要记录一下&#xff0c;与fork想匹配的三个选项&#xff0c;join/join_any/join_none之间的区别。 一、join/join_any/join_none之间的区别 join&#xff0c;等到所有的子进程全部结束&#xff0c;才能继…

软件测试|Python自动化测试实现的思路

Python自动化测试常用于Web应用、移动应用、桌面应用等的测试 Python自动化实现思路通常分为以下几步&#xff1a; 1. 确定自动化测试的范围和目标&#xff1a; 首先需要明确需要进行自动化测试的范围和目标&#xff0c;包括测试场景、测试用例、测试数据等。 2. 选择自动化…

【代码随想录-链表】移除链表元素

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

shell脚本——条件语句

目录 一、条件语句 1、test命令测试条件表达式 2、整数数值比较 3、字符串比较 4、逻辑测试&#xff08;短路运算&#xff09; 5、双中括号 二、if语句 1、 分支结构 1.1 单分支结果 1.2 双分支 1.3 多分支 2、case 一、条件语句 条件测试&#xff1a;判断某需求是…

《Linux C编程实战》笔记:管道

从这节开始涉及进程间的通信&#xff0c;本节是管道。 管道是一种两个进程间进行单向通信的机制。因为管道传递数据的单向性&#xff0c;管道又称之为半双工管道。。管道的这一特点决定了其使用的局限性。 数据只能由一个进程刘翔另一个进程&#xff1b;如果要进行全双工通信…

快速掌握PHP:用这个网站,让学习变得简单有趣!

介绍&#xff1a;PHP是一种广泛使用的开源服务器端脚本语言&#xff0c;特别适合Web开发。 PHP&#xff0c;全称为Hypertext Preprocessor&#xff0c;即超文本预处理器&#xff0c;是一种嵌入在HTML中的服务器端脚本语言。它主要用于管理动态内容和数据库交互&#xff0c;使得…

双非本科准备秋招(9.3)—— JVM2

学这个JVM还是挺抽象的&#xff0c;不理解的东西我尽量记忆了&#xff0c;毕竟刚接触两天&#xff0c;也没遇到过实际应用场景&#xff0c;所以学起来还是挺费劲的&#xff0c;明天再补完垃圾回收这块的知识点。U•ェ•*U 先补一下JVM运行时的栈帧结构。 线程调用一个方法的执…

【并发编程】volatile原理

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;并发编程⛺️稳重求进&#xff0c;晒太阳 volatile原理实现是内存屏障&#xff0c;Memory Barrier 对volatile变量的写指令后会加入写屏障。对volatile变量的读指令前会加入读屏障 如何保…

Spring - 基本用法参考

Spring 官方文档 Spring容器启动流程&#xff08;源码解读&#xff09; BeanFactoryPostProcessor vs BeanPostProcessor vs BeanDefinitionRegistryPostProcessor&#xff1a; From java doc&#xff1a; BeanFactoryPostProcessor may interact with and modify bean defin…

网工内推 | 申通快递急招网安、测试工程师,包食宿,30k*13薪

01 申通快递 招聘岗位&#xff1a;信息安全工程师 职责描述&#xff1a; 1、 负责集团数据安全风险的识别、协同、跟踪、改进优化及事后评估&#xff1b; 2、 负责集团数据安全专项风险的治理及系统上线前的数据安全评审&#xff1b; 3、 负责集团信息安全、合规等方面制度的编…

限时回归!!!3D版《空洞骑士》!!!

空洞骑士是一款基于横板平台跳跃的传统风格2D动作冒险游戏。庞大的游戏世界交错相通&#xff0c;玩家控制小虫子去探索幽深黑暗的洞穴&#xff0c;成为了一代人茶余饭后的惦念&#xff0c;深受广大玩家们的喜爱。 这类平台跳跃游戏一般是游戏开发初学者以及独立游戏开发者们比…

React一学就会(7): 细说redux及其应用

不知不觉一个星期结束了&#xff0c;很快就要过年了&#xff0c;中间休息了两天&#xff0c;小孩生病&#xff0c;我也有点感冒了&#xff0c;还好&#xff0c;我的这个 React 基础教学课程也基本结束了。大家有不明白的可以留言问我&#xff0c;我一定竭尽所能的帮助你。后面几…

D3703F——应用于音响系统的静音检测电路 当音响系统在放音或快进 / 退时进行静音检测,输出控制信号。

D3703F 是 一 块 汽 车 音 响 静 音 检 测 电 路 。 用 于 音 响 系 统 检 测 在 放 音 或 快 进 / 退 时 进 行 静 音 检 测 。 D3703F 的 的 电 压 范 围 &#xff1a; 3.2V &#xff5e; 16V &#xff0c; 信 号 检 测 和 静 音 时 间 可 通 过 外 围 电 阻 、 电 容 来 …

中小型企业知识库建设的秘诀来啦,赶紧收藏起来

知识库是企业的智慧宝库&#xff0c;其中的信息和知识的整合&#xff0c;可以极大地提高工作效率和团队协作能力。尤其对中小企业来说&#xff0c;知识库的建设更是关系企业未来发展的重要因素。那么&#xff0c;怎样有效地构建高效的知识库系统呢&#xff1f;下面这些秘诀值得…