多场景建模:快手参数及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的后向梯度传播加/不加进来,说明不对主网络进行更新效果更好

在这里插入图片描述

  • 12
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值