kuaishou在《PEPNet: Parameter and Embedding Personalized Network for Infusing with Personalized Prior Information》中提出了PEPNet:

1.抽要

随着在线服务(电商/在线视频)的内容页面和展示样式的增加,工业级推荐系统经常面临着multi-domain和multi-task的推荐挑战。multi-task和multi-domain推荐的核心是,在给定不同的用户行为时,能精准捕获在不同domains中的用户兴趣。在本paper中,我们在multi-domain环境下的multi-task推荐上提出了一种即插即用(plug-and-play)的 Parameter and Embedding Personalized Network (PEPNet) **。PEPNet会将具有强bias的features作为input,并动态地对模型中的bottom-layer embeddings和top-layer DNN hidden units通过一个gate机制进行缩放(scale)**。通过将个性化先验(personalized priors)映射,将weights归一化范围(0, 2),PEPNet会同时引入参数个性化和embedding个性化。PPNet(Parameter Personalized Network )会影响DNN参数,来对多个任务上的相互依赖目标进行权衡。我们会做出一系列特征的工程优化,将Kuaishou训练框架与在线部署环境相结合。我们已经成功在Kuaishou apps上进行部署,服务了3亿的日活用户。

1.介绍

2.方法

该部分会介绍详细设计,用来缓解“双跷跷板(double seesaw)”问题。我们会详述问题公式、以及PEPNet的网络结构。

2.1 问题公式

这里我们定义了我们研究的概念和问题settings。该模型会使用sparse/dense inputs,比如:用户历史行为、用户profile features、item features、context features等。预估目标\(\hat{y}_i\)是user u在domain d的第i个task上对item p的偏好,它的计算如下:

\[\hat{y}_i = f(\lbrace E(u_1), \cdots, E(u_t) \bigoplus E(p_1), \cdots, E(p_j) \bigoplus E(c_1), \cdots, E(c_k) \rbrace_d)\]

…(1)

其中:

  • \(u_1, \cdots, u_t\):表示user-side features,它包含了:用户的历史行为、user profile和user ID等。
  • \(p_1, \cdots, p_j\):表示target item features,它包含了:item ID(iid)、author ID(aid)等
  • \(c_i, \cdots, c_k\):表示其它features,它会包含context feature和combine feature
  • \(\lbrace \rbrace_d\)表示来自domain d的样本
  • \(E(*)\):表示sparse/dense features,会通过在分桶算法之后的embedding layer被映射到可学习embedding中,
  • \(\bigoplus\):表示 concatenation

对于一个真实应用,item candidate pool和用户part会在多个场景共享。由于不同的消费目标,用户在不同场景对于相同item会改变他们的行为趋势。为了更好捕获对于不同行为的用户偏好,并增强在多个场景的联系,推荐系统需要同时为多个domains D做出多任务预估。注意,模型输入是\(\lbrace x, y_i, D \rbrace\),

其中:

  • x:是上述提到的feature
  • \(y_i\):是每个任务的label
  • \(d \in D\):是domain indicator,它表示样本收集来自哪个domain

  • Input:表示sparse/dense inputs,比如:用户历史行为、用户profile features、item features和其它context features
  • Output:一个推荐模型,它会估计用户在多个domains上的多个目标,例如:点赞(like)、关注(follow)、转发(forward)等

2.2 网络结构

图3展示了PEPNet的网络结构。该模型由三个部分组成,我们一一解释。

  • GateNU(Gate Neural Unit):Gate NU是EPNet和PPNet的基本单元,它是一个基于先验信息生成的门控结构。
  • EPNet(Embedding个性化网络:Embedding Personalized Network):EPNet会采用domain信息作为input,并使用Gate NU来进行domain-specific个性化,增强模型的bottom layer的能力来表示跨域的features。
  • PPNet(参数个性化网络:Parameter Personalized Network)。 PPNet使用用户信息和item信息来生成gates,并调整在不同task towers上每个layer的参数,并对模型的top layer上相互依赖目标进行权衡。

图片名称

图3 PEPNet包含了Gate NU, EPNet, PPNet。Gate NU是基础单元,它会使用先验信息来生成门控和增强的合法信号。EPNet会在Embedding layer上增加模型的domain-awareness,并将PPNet进行stacking到每个任务的DNN tower上来增强task personalization. 在多个domains上会估计相同集合的multi-targets。PEPNet可以被插入到任意网络中。颜色如上所示。

2.2.1 Gate Neural Unit(Gate NU)

受LHUC算法的启发,其关键思想是:为每个speaker学习一个特定的hidden unit贡献,PEPNet会引入一个门控机制,称为“Gate Neural Unit”,它对于不同用户来说,网络参数是个性化的。 Gate Neural Unit(简称为Gate NU),包含了两个nueral network layers。

  • \(x^{(0)}\):表示Gate NU的input
  • \(W^{(0)}\):表示第一层network layer的weight
  • \(b^{(0)}\):表示第一层network layer的bias

Relu被选择作为第一层该函数的activation function。第一层公式如下:

\[x_1 = Relu(x^{(0)} W^{(0)} + b^{(0)})\]

…(2)

接着, Gate NU会使用Sigmoid function来生成gate,它会将output限制为[0, 1]。

  • \(\gamma\)是参超数,设置为2
  • \(W^{(1)}\)和\(b^{(1)}\)是第二个layer的weight和bias

第二层的公式化如下:

\[x_2 = \gamma * Sigmoid(x^{(1)} W^{(1)} + b^{(1)}), x_2 \in [0, \gamma]\]

…(3)

根据等式1和等式2,Gate NU会使用先验信息\(x^{(0)}\)来生成gating vector,并使用超参数\(\gamma\)来进一步放大有效信号。接着,我们会详述如何使用该gating机制来组合EPNet和PPNet。

2.2.2 Embedding Personalized Network(EPNet)

出于计算和内存开销考虑,EPNet模型会共享相同的embedding layer,其中:

\[E(*) = E(SF) \oplus E(DF)\]

…(4)

  • SF是sparse features,DF是dense features。
  • \(E(*)\)是共享底层结构,它实际上会有许多缺点,关注共享却忽略了多个domains的不同

对于共享的EPNet,我们会使用domain-side features \(E(df) \in R^k\)作为input,比如:domain ID和统计特征

对于在第i个domain的特定数据样本,我们将其余feature表示为\(E(*) \in R^d\),其中:

  • d是input维度
  • \(V_{ep}\)是embedding layer的Gate NU

EPNet的输出\(\sigma_{domain} \in R^d\)给定如下:

\[\sigma_{domain} = V_{ep}(E(df))\]

…(5)

我们使用一个额外的Gate NU network来将embedding进行变换,并将多个domains的分布进行对齐(align),无需变更原始的embedding layers。转换后的embedding(transformed embedding)如下:

\[O_{ep} = \sigma_{domain} \otimes E(*)\]

…(6)

其中:

  • \(O_{ep} \in R^d\): 输出
  • \(\otimes\): 是element-wise乘法

2.2.3 Parameter Personalized Network(PPNet)

为了增强关于task-specific个性化的信息,我们使用user/item/author-side feature(uf/if/af)作为PPNet的输入,比如:user ID, item ID, author ID,以及side information features,比如:user age/gender, item tag/topic/popularity等。特别的,详细的PPNet结构如下:

\[O_{prior} = E(uf) \oplus E(if) \oplus E(af) \\ \sigma_{task} = V_{pp} (O_{prior} \oplus (\oslash(O_{ep})))\]

…(7)

其中:

  • \[E(uf) \in R^u, E(if) \in R^i, E(af) \in R^a\]

PPNet会将EPNet的output拼接在一起,features \(O_{prior}\)具有很强的个性化先验,它会给出模型关于先验信息的更多感知。关于个性化的先验信息可以通过一个来自user ID、item ID以及author ID的扩展来获得,其中:author表示kuaishou短视频的创作者。为了不影响在EPNet中已经更新的embedding,我们会在EPNet的output上执行stop gradient \(\oslash\)操作。在传统模型中,所有hidden units会被相等对待,并传给下一layer中。我们使用element-wise乘法来选择和放大合法信号,如下:

\[O_{pp} = \sigma_{task} \otimes H\]

…(8)

其中:

  • H是在task towers上每个DNN layer上的hidden unit。

在多任务学习中的参数共享可以极大减小DNN参数的size,但在多个共享targets间的一些信息会丢失,导致不均衡的效果。例如,预估Follow和Like的任务会共享DNN参数,但Follow任务具有更少的正样本。前两者的梯度会累计,Follow的一些信号会被Like所覆盖。因此对于每个任务,我们会在将PPNet \(O_{pp}^l\)插入到每个DNN task tower的第l个layer中,来增强任务个性化的先验信息,如下所示:

\[O_{pp}^{(l)} = \sigma_{task}^{(l)} \otimes H^{(l)} \\ O_{pp}^{(l+1)} = f(O_{pp}^{(l)} W^{(l)} + b^{(l)}), l \in \lbrace 1, \cdots, n \rbrace\]

…(9)

其中:

  • n是每个task tower的DNN layers的数目
  • f是activation function。

对于第n-1个layers,activation function f会使用Relu。最后一个layer是Sigmoid,它没有放大系数\(\gamma\),这与Gate NU不同。在获得last layer上的多个domains上的多个targets的预估得分后,会使用binary cross-entropy进行最优化。

2.3 工程优化策略

为了部署PEPNet,我们做出以下的工程优化策略:

  • Feature score消除策略:由于每个ID映射到一个embedding vector,可以快速填满服务的内存资源。为了确保系统进行长时间执行,我们设计了一个特殊参数服务器,来达到一个无冲突(conflict-free)、高效内存的全局共享embedding表(memory-efficient Global Shared Embedding Table) (GSET)。GSET使用feature score elimination策略来控制内存footprint,使得总是在一个预设的阈值之下。然而,传统的cache elimination策略使用LFU和LRU,只考虑了条目的频率信息,主要用于最大化cache命中率。

  • DNN/Embedding layer Updating: 由于系统采用在线学习,它在训练时会长时间累积数据。我们将训练数据的最小单元称为一个pass,每个pass会更新online inference模型。由于存在大量users、authors以及items,这会导致user ID、item ID、author ID的features的快速膨胀。平台的一些ID features会超期或变得很冷门,因此将所有ID features进行存储是不高效的。它会盲目增大系统的冗余,带来额外的存储和计算开销。我们会增加两个特征选择策略(feature eviction)。一个是指定一个feature的特定数目,当超过时会抛弃。另一个是设置ID featrues的过期时间,保证ID features可以频繁更新,并删除那些没有达到所需更新数的ids。相似的,当模型被更新时,我们会检查相应的embedding,只更新变化的embedding。

  • Training策略:由于在kuaishou的短视频场景的商业特性,ID features会快速变化。实际上,我们会发现:embedding的更新会比DNN模型参数更频繁。在线学习场景中,为了更好捕获在bottom-layer embeddings的变化,并稳定更新top-layer DNN参数,我们会分别更新embedding part和DNN参数部分,并使用不同的update策略。在bottom-layer embedding中,我们会使用AdaGrad optimizer,学习率会设置为0.05。而DNN参数会通过Adam optimizer进行更新,学习率为:5.0e-06.

3.离线实验

wechat在《Reweighting Clicks with Dwell Time in Recommendation》中提出了一种基于停留时长加权的建模:

2.模型设计与分析

图片名称

图1

2.1 Dwell Time Modeling

用户真正需要什么样的推荐?最近研究表明:对于CTR,停留时长(dweill time)更会影响用户的真实满意度。然而,直接对原始的dwell time进行最优化会导致模型过度增强具有long total duration的items,使得重度用户和long items会主宰模型训练。

我们相信:用户使用推荐系统的中心诉求是获得信息。因此,我们会返回:在dwell time、信息增益、用户偏好间的关系本质,并做出以下猜想:

  • (A1) 对于不同的items和users交互,具有相同dwell time,则正信号是相当的。因为他们通常表示会具有相同的time cost,对每个人公平
  • (A2) 用户需要一个最小的dwell time,以便从items获得信息。太短的dwell time表示着非常少的收益
  • (A3) 当前dwell time足够长时,信息增益(information gain)会逐渐随着dwell time的增加而递减

基于这些,我们在click reweighting中使用一个normalized dwell time function作为一个更好的监督信号来定义有效阅读(valid read).

2.2 有效阅读选择(valid read selection)

有效阅读是高质量点击行为,可以更好反映用户的真实偏好,它可以通过dwell time来天然选择。对于dwell time的一个更深理解,我们会绘制点击数随不同log dwell time的趋势。图2左可以看到:

  • 1) 总体上,我们可以假设:log dwell time具有一个近似高斯分布,例如: \(lnT=\mu + \sigma \epsilon\),其中:T是一个random dwell time,\(\epsilon \sim N(0,1)\)。
  • 2) 我们会将\([\mu-\sigma, \mu + \sigma]\)看成是主要的dwell time区间
  • 3) 接近19%的点击行为要短于15s dwell time,并且接近15%的点击行为要长于200s dwell time

根据上述假设A2和A3,具有过短和过长的dwell time的点击行为在click reweighting上会被降级。

图片名称

图2 log dwell time在我们系统中的趋势(左)以及normalized dwell time的趋势(右)

简单做法是:直接设置一个共享的dwell time阈值来收集有效阅读。然而,简单依赖阈值来定义有效阅读,会不可避免地忽略掉关于轻度用户与short items的大量行为信息。因此,我们定义了三种类型的user-item clicks作为我们的合法阅读行为

  • T1: dwell time要比长于\(x_l\)秒
  • T2: 该用户在最近一周近至少点击7个items
  • T3: dwell time会长于该item的历史dwell time记录的10%(例如:长于分位数P10)

(1) 第一种类型:根据common-sense阈值\(x_l\)构建了有效阅读的基础规则。我们将\(lnT\)的\(x_l = exp(\mu - \sigma)\)看成是有效阅读的共享dwell time阈值,它可以适配于不同的推荐系统。在我们的系统中,\(exp(\mu - \sigma)\)接近15s。19%的点击行为会被T1过滤掉。出于简单性,对于所有的users和items,我们根据time costs的绝对值直接采用一个共享的DT阈值,对于不同的user或item groups设置定制的dwell time阈值也很方便。

(2)第二种类型:会在轻度用户上打个补丁,将所有轻度用户的点击行为看成是在训练中的监督信号,因为他们的行为很稀少。我们希望避免长尾轻度用户(偏向于扫描浏览而非深度阅读)的重要信息丢失。

(3) 第三种类型:会在一个指定item上考虑相对dwell time,在相同item上所有历史点击间,取回的click具有一个相对符合条件的dwell time(top 90%)。通过该方法,我们的有效阅读会考虑上具有天然短长度、少dwell time的items(例如:news或short videos). 为了避免噪声,我们进一步将清除所有具有5s dwell time的点击,以确保有效阅读的最低能力。在我们的实践中,T1、T2、T3类型分别具有89.9%、2.9%、7.2%的总有效阅读。只有有效阅读会被用于训练中的监督信号。

2.3 归一化dwell time函数

有效阅读选择会作为一个pre-filter使用。然而,我们仍然面临着在click reweighting中如何精准定义不同dwell time值的挑战。直觉上,相同的dwell time提升,当current dwell time更短时对于一个click的quality会具有更大的贡献(例如:[1s -> 15s]要比[601s->615s]更大)。太长的dwell time会带来疲乏,对用户体验有害。因而,大量工作采用log dwell time的MSE作为训练loss作为dwell time的预估【2,16,27】。

不同于常规模型,我们会将有效阅读定义成高质量的supervised label,并且希望提升有效阅读的数目的比例。因此,我们的dwell time function会拥有以下两种特性C1和C2,分别对应于以上的A2和A3:

  • C1: 设计好的dwell time function曲线在early stage应该很陡,此时具有大梯度(特别是接近有效阅读阈值 \(exp(\mu - \sigma)\)的地方),这会指导模型很好区分有效阅读 vs. 无效点击
  • C2: dwell time funciton曲线在dwell time过长时会比较平,避免过长的items得到太多rewards,导致伤害轻度用户对短items的交叉。

根据以下规则,我们基于原始的dwell time T,使用一个sigmoid function,设计了normalized dwell time \(T_N\):

\[T_N = \frac{A}{1 + exp(- \frac{T-offset}{\tau})} - B\]

…(1)

图2(右)展示了\(T_N\)的趋势。对比起log dwell time,\(T_N\)会使用设置好的rates单调增加,其中:offset和\(\tau\)本质上是满足C1和C2的参数。

  • offset:决定了具有最大梯度的dwell time point。对于C1,我们会设置:\(offset = exp(\mu - \sigma)\)来使得normalized dwell time在有效阅读/无效阅读边界上具有最大的梯度,它会基于supervised training与有效阅读很好的一起协作。
  • \(\tau\):定义了dwell time曲线的sharpness。对于C2,我们定义了一个upper阈值 \(x_h\)作为\(exp(\mu + \sigma)\),假设:比\(x_h\)更大的dwell time T对\(T_N\)没啥贡献(例如:\(T_N\)提升\(x_h \rightarrow T\)要小于最小精度,例如:在系统中为1e-5)。\(\tau\)被设置成满合\(x_h\)的上述假设。
  • A和B:是超参数,可以将\(T_N\)归一化成\([0, T_{max}]\),其中:\(T_{max}\)是当前在线dwell time模型的最大dwell time值。我们将normalized dwell time范围保持不变,减少可能的不匹配问题。

最终,基于上述讨论,我们设置:\(offset=15, \tau = 20, A = 2.319, B = 0.744\)来满足C1和C2 。 我们也对这些参数做了grid search,发现当前setting可以达到最好的在线效果。

2.4 Click Reweighting

有效阅读和normalized dwell time被设置成过滤噪声,选出符合点击的分位数,以便更好的进行学习。在click reweighting中,我们采用一个multi-task learning框架来进行有效阅读预估(valid read prediction)以及加权有效阅读预估(weighted valid read prediction)。特别的,我们会进行一个共享bottom来跨任务共享原始的user/item features。

对于valid read tower,我们会采用一个3- layer MLP,它会采用原始user/item features \(f_u, f_{d_i}\)作为inputs,并输出用户u在item \(d_i\)上的预估点击概率\(P_{u, d_i}\)。接着,有效阅读loss \(L_v\)定义如下:

\[L_v = - \sum\limits_{(u,d_i) \in S_p} log P_{u,d_i} + \sum\limits_{(u,d_j) \in S_n} log (1 - P_{u,d_j})\]

…(2)

其中:

  • \(S_p\)和\(S_n\)表示正样本集(有效阅读)和负样本集(无效点击和未点击)。

相似的对于weighted valid read tower,我们直接使用normalized dwell time \(T_N^{u, d_i}\)作为每个\((u, d_i)\)的weight。另一个3-layer MLP会被用来输出预估点击概率\(P_{u,d_i}'\)。加权有效阅读tower接着会在loss \(L_w\)下被训练:

\[L_w = \sum\limits_{(u,d_j) \in S_n} T_N^{(u,d_j)} log(1 - P_{u,d_j}') - \sum\limits_{(u,d_i) \in S_p} T_N^{(u,d_i)} log P_{u,d_i}'\]

…(3)

\(L_v\)和\(L_w\)是线性组合成最终loss:\(L = L_v + L_w\)。在线部署中,两个towers的求和的预估得分会被用于在线排序。终合考虑original和DT weighted有效阅读预估任务是有益的。再者,我们进一步探索了MTL框架(MMoE和PLE),在线提升并不大。可能是因为dwell time与点击高度相关。出于简单,我们直接使用MLP作为shard bottom。

Clara Meister等在《Determinantal Beam Search》中提出了Determinantal Beam Search:

2.Neural Sequence Models

神经网络序列模型(Neural sequence models)是:给定一个input x,在一个output space Y上的序列y的概率分布\(p(y \mid x)\)。这里我们将Y定义成来自词汇表中的所有合法句子序列,以BOS开头,以EOS结尾。通常,序列长度由值\(n_{max} \in Z_+\)给定,它会依赖于x。在本文,我们会考虑局部归一化模型(locally normalized models),例如:给定之前已生成的tokens序列 \(y_{<t}\) ,这里的p表示:是一个在\(\bar{V} = V \cup \lbrace EOS \rbrace\)的概率分布。完整序列\(y = <y_1, y_2, \cdots>\)的概率接着通过概率的chain rule进行计算:

\[p(y | x) = \prod\limits_{t=1}^{|y|} p(y_t | y_{<t}, x)\]

…(1)

其中,\(y_{<1}= y_0 = BOS\)。

我们的模型p通常通过一个具有weights \(\theta\)的neural network进行参数化。由于我们不关注底层模型本身,我们忽略掉p在参数\(\theta\)的依赖。

我们将decoding problem定义为:在空间Y上的所有序列间,根据模型\(y(y \mid x)\)搜索具有最高scoring的y,它也被称为最大后验概率估计(maximum-a-posteriori(MAP)inference)

\[y^{*} = \underset{y \in Y}{argmax} \ log p(y | x)\]

…(2)

其中:惯例上,会使用p的log变换。

我们进一步将set decoding problem定义为:对于一个指定的基数k,在所有合法的subsets \(\lbrace Y' \subseteq Y \mid \mid Y'\mid=k \rbrace\)上,搜索一个具有最高分的set \(Y^*\),定义为:

\[p(Y | x) = \prod\limits_{y \in Y} p(y | x)\]

…(3)

类似于等式(2),set-decoding问题接着被定义为:

\[Y^* = \underset{Y' \subseteq Y, |Y'|=k}{argmax} \ log p(Y' | x)\]

…(4)

然而,由于需要注意的是,等式(2)和(4)有许多问题:

  • 首先,因为Y是一个指数大的空间,并且p通常是非马尔可夫(non-Markovian)性的,我们不能进行有效搜索,更不用说\(Y^k\)。
  • 第二,特别是对于语言生成任务,这些可能不是有用的目标

目标降级

需要重点注意的是:在 neural sequence models下具有最高概率解,并不总是高质量的(high-quality);特别是涉及到语言生成的任务,比如:机器翻译等。相应的,启发式搜索方法或者一些替代目标通常会被用于decoding language generators.

用于逼近等式(2)的decoding problem的一种常见启发法是:在每一timestep t上,以最大化 \(p(y_t \mid y_{<t}, x)\)的方法,顺序选择token \(y_t\),直到EOS token被生成,或者达到最大序列长度\(n_{max}\)。该过程被称为greedy search。Beam search是一种经常使用(oft-employed)的greedy search的生成方法,它会返回k个candidates,并探索更多search space。在本工作中,我们关注于迭代式子集选择(iterative subset selection)的beam search,它有一个很简洁的算法公式。给定一个初始集合\(Y_0\),它只包含了BOS token,对于\(t \in \lbrace 1,\cdots,n_{max} \rbrace\),我们会根据以下递归来选择子序列\(Y_t\):

图片名称

图1

其中,我们会限制,只扩展在beam set中的candidates,它被定义为:

\[B_t = \lbrace y_{<t} \circ y | y_{<t} \in Y_{t-1} \ and \ y \in \bar{V} \rbrace\]

…(6)

其中:

  • \(\circ\)会被用于表示string concatenations。

注意:在\(Y_{t-1}\)中的candidates已经以EOS结尾,会直接添加到\(B_t\)上,例如:\(EOS \circ EOS = EOS\)。在该定义下,我们有基数k的constraint:\(\mid B_t \mid \leq \mid \bar{V} \mid \cdot k\).

2.2 Determinanta新公式

对于公式(5),我们接着引入另一种的等价概念,它使用matrics和determinants,它会阐明beam search的直接泛化(generation)。我们定义了一种timestep-dependent diagonal matrix \(D \in R^{\mid B_t \mid \times \mid B_t \mid}\),其中:我们会采用diagonal entry:

\[D_{ii} \overset{=}{def} p(Y_{\leq t}^{(i)} | x)\]

…(7)

这里:

  • \(y_{\leq t}^{(i)}\):表示在\(B_t\)中的第i个candidate,它根据一个unique mapping:对于每个element \(y_{\leq t} \in B_t\)会唯一映射到一个介于1和\(\mid B_t \mid\)间的integer

接着,我们会使用概念\(D_{Y_t}\):它表示只包含了对应于\(Y_t\)的elements的相应行和列的submatrix,其中:\(Y_t \subseteq B_t\)我们将等式(5)重写成:

图片名称

图2

这里的等式遵循对角阵行列式的定义。正式的,等式(8)被称为“子行列式最大化问题(subdeterminant maximization problem)”,该问题是发现这样一个行列式:它能最大化一个矩阵子集。而等式(8)引入的概念可能是人为的,它允许我们执行后续泛化。

3. Determinantal Beam Search

现在,我们会问该工作的基础问题:如果我们使用一个non-diagonal matrix来替换 diagonal matrix D,会发生什么?这种替换会允许我们对在beam中的elements间的interactions做出解释。正式的,我们会考虑一个时间独立半正定矩阵( timestep-dependent positive semi-definite (PSD) matrix):

\[D+w \cdot K\]

其中:

  • K:对角矩阵(off-diagonal matrix),表示在candidates间interactions的strength。
  • \(w \geq 0\):非负权重,控制着在decoding过程中interactions的重要性

在本case中,beam search递归变为:

图片名称

图3

很明显,当w=0时我们会恢复成图2的beam search。然而,我们现在会基于在candidate interactions之上来选择子集。也就是说,等式(9)现在具有一个作为“diversity objective function”解释,当K被合适选择时。由于log的存在,当矩阵\(D_Y + w \cdot K_Y\)是PSD时,等式(9)会被良好定义。

3.1 K的构建

构建K的最简单方法是:Gram matrix,其中:每个i, j element会通过一个kernel function: \(K: S \times S \rightarrow R\)来计算,它会将空间中的两个items映射到一个实数上。特别的,我们会定义:\(K_{ij}=K(s_i, s_j)\),其中\(s_i, s_j \in S\)是S的第i和第j个elements。概念上有些混洧,我们会该该kernel function K overload,它会采用一个set S,以便\(K = K(S)\)是在S的elements之上由pairwise计算的kernel matrix。根据Mercer理论,矩阵K=K(S)必须是PSD的,因为矩阵\(D_Y + w \cdot K_Y\)对于任意\(Y \subseteq S\)是PSD的。

3.2 与DPP关系

等式(9)是一个DPP。特别的,它是一个在L-ensemble parameterization上的k-DPP,其中:我们有\(L = D + w \cdot K\)。k-DPP的解释,对于为什么等式(8)是一个diverse beam search,给出了一个非常清晰的理解。对角的entries会编码quality,它会告诉我们:在beam上的每个candidate是多么“好”,而非对角entries(off-diagonal entries)则编码了两个elements有多么相似。

3.3 计算log-determinants

不幸的是,等式(9)中的argmax计算是一个NP-hard问题。然而,由于子行列式最大化问题( subdeterminant maximization problem)具有许多应用,业界研究了许多高效算法来近似计算DPP中的log-determinants。Han et.2017使用一个关于log-determinant function的一阶近似。Chen et.2018使用一个贪婪迭代法;通过增量式更新matrix kernel的Cholesky factorization,该算法可以将infernence time减小到\(O(k^2 \mid S \mid)\),并返回来自set S中的k个candidates。伪代码可以在Chen et.2018中找到,log-space算法的伪代码,可以在App.A中找到。

3.4 运行时(runtime)分析

我们会考虑:在给定任意时间,在等式(9)的递归上选择k个candidates的运行时。在每个timestep上,我们会首先构建一个matrix K。该计算高度依赖于被建模的interactions的集合;这样,当我们使用beam size为k时,\(O(c(k))\)是对于K计算的一个runtime上限。一旦我们构建矩阵\(D + w\cdot K\),我们必须接着选择k个items。在任意timestep上的hypotheses集合至多是\(k \mid \bar{V} \mid\)。如3.3中讨论,我们假设采用近似算法,以最大化等式(9)的方式精准发现size-k的子集具有指数的runtime。使用Chen et.2018的方法,近似MAP inference会具有\(k^3\mid \bar{V} \mid\)的时间,从一个size为\(k \mid \bar{V} \mid\)的集合返回k个items。这样,在该条件下,determinantal beam search的每轮迭代的runtime会是:\(O(c(k) + k^3 \mid \bar{V} \mid)\)。注意, standard beam search在每轮迭代会运行\(O(k \mid \bar{V} \mid log(k \mid \bar{V} \mid))\)。由于k通常很小(\(leq 20\)),c(k)的影响可以合理做出,在runtime上的实际增加通常是适中的。

4.Case Study: Diverse Beam Search

略略

华为在《Non-invasive Self-attention for Side Information Fusion in Sequential Recommendation》中提出了Non-invasive Self-attention的方法:

抽要

Sequential recommender systems的目标是:根据用户历史行为建模用户的兴趣演进。对比起传统的模型,DNN等已经达到了较高的水准。最近BERT框架的出现,受益于它的self-attention机制,在处理序列数据上非常合适。然而,original BERT框架只考虑单一输入源:在自然语言中的tokens。在BERT框架下如何利用众多不同类型的information仍是一个开放的问题。尽管如此,它看起来可以直接利用其它的side information,比如:item category或者tag,来进行更综合的描述与更好的推荐。在我们的实验中,我们发现naive方法(直接将不同side information的types进行融合到item embeddings中)通常会带来非常少或负向的效果。因此,提出了NOninVasive self-Attention机制 (NOVA) 来在BERT框架下有效利用side information。NOVA会利用side informaiton来生成更好的attention分布,而非直接更改item embeddings,它会造成信息压倒性(information overwhelming)。我们验证了NOVA-BERT模型,并能达成SOTA效果,计算开销很小。

。。。

3.方法

图片名称

图1 invasive和non-invasive方法的一个图示。invasive方法会以不可逆的方式来融合所有类型的信息,接着将它们feed到sequential models上。而对于non-invasive方法,side information只会参与attention matrix计算,item information会保存在一个独立的vector space中

3.1 问题设定

**给定一个用户与系统的历史交互,顺序推荐(sequential recommendation)任务会询问:下一个要交互哪个item? **

假设:u表示一个用户,它的历史交互可以被表示成一个按时间顺序的序列:

\[S_u = [v_u^{(1)}, v_u^{(2)}, \cdots, v_u^{(n)}]\]

其中:

  • \(v_u^{(j)}\):表示用户u做出的第j个交互行为

当只有一种类型的actions、并且没有side information时,每个interaction可以被简单表示成一个item ID:

\[v_u^{(j)} = ID^{(k)}\]

其中:

  • \(ID^{(k)} \in I\),表示第k个item ID。
\[I = \lbrace ID^{(1)}, ID^{(2)}, \cdots, ID^{(m)} \rbrace\]

其中:

  • I是所有items的vocabulary。
  • m是vocabulary size,表示在问题domain中的item总数

给定一个user \(S_u\)的历史,系统会预估用户最可能交互的下一个item

\[I_{pred} = ID^{(\hat{k})} \\ \hat{k} =\underset{k}{argmax} \ \ P(v_u^{(n+1)} = ID^{(k)} | S_u)\]

3.2 Side Information

Side information可以是任意提供额外有用信息的东西,它可以被分类成两种类型:item-related或behavior-related。

  • Item-related side information:是固有的,可以描述item本身,除了item IDs(例如:价格、生产日期、生产商)。
  • Behavior-related side information:是由一个user初始化的一个interaction,例如:action的类型(购买、评分) 、发生时间、用户反馈打分。

每个交互的顺序(例如:原始BERT中的position IDs)可以被看成是一种behavior-related side information

如果side information引入进来,那么一个interaction就是:

\[v_u^{(j)} = (I^{(k)}, b_{u,j}^{(1)}, \cdots, b_{u,j}^{(q)}) \\ I^{(k)} = (ID^{(k)}, f_k^{(1)}, \cdots, f_k^{(p)})\]

其中:

  • \(b_{u,j}^{(\cdot)}\):表示一个由user u做出的第j个interaction的behavior-related side information。共有q个该类型的side information
  • \(I^{(\cdot)}\):表示一个item,包含了一个ID和一些item-related side information \(f_k^{(\cdot)}\)。共有p个该类型的side information

Item-related side information是静态的,并存储了每个特定item的内在features。因而,vocabulary可以被重写成:

\[I = \lbrace I^{(1)}, I^{(2)}, \cdots, I^{(m)} \rbrace\]

该目标仍是预估下一个item的ID:

\[I_{pred} = ID^{(\hat{k})} \\ \hat{k} = \underset{k}{argmax} P(v_u^{(n+1)} = (I^{(k)}, b_1, b_2, \cdots, b_q) | S_u)\]

其中:

  • \(b_1, b_2, \cdots, b_q\):是latent behavior-related side information,如果behavior-related side information被考虑的话。注意:该模型仍能预估下一个item,而非 behavior-related side information被假设或忽略。

3.3 BERT和Invasive Self-attention

图片名称

图2 BERT4Rec。Item IDs和positions会被分别编码成vectors,接着添加在一起作为integrated item representations. 在训练期间,item IDs会被随机mask掉(表示成[M]),以便让模型来进行恢复

BERT4Rec(Sun. 2019)是首个利用BERT框架进行sequential推荐并达到SOTA效果的任务。如图2所示,在BERT框架中,items被表示成vectors(embeddings)。在训练期间,一些items会被随机mask,BERT模型会使用multi-head self-attention机制来尝试恢复它们的vector表示以及item IDs:

\[SA(Q,K,V) = \sigma(\frac{QK^T}{\sqrt{d_{k}}}) V\]

其中:

  • \(\sigma\)是softmax function
  • \(d_k\)是一个scale factor
  • Q, K, V分别表示query、key、value的组件

BERT会遵循一个encoder-decoder的设计,来为在input序列中的每个item生成一个contextual representation。BERT会采用一个embedding layer来保存m个vectors,每个对应于在vocabulary中的一个item。

为了利用side information,像conventional方法会使用独立的embedding layers来将side information编码到vectors中,接着使用一个fusion function F将它们融合到ID embeddings中。这种invasive类型的方法会将side information注入到原始embeddings中,来生成一个mixed representation:

\[E_{u,j} = F(\epsilon_{id}(ID), \\ \epsilon_{f1}(f^{(1)}), \cdots, \epsilon_{f_p}(f^{(p)}), \\ \epsilon_{b_1}(b_{u,j}^{(1)}), \cdots, \epsilon_{b_q}(b_{u,j}^{(q)}))\]

其中:

  • \(E_{u,j}\):是user u对第j个interaction的integrated embedding
  • \(\epsilon\):是将objects编码成vectors的embedding layer

该integrated embeddings的序列会被feed到模型中作为user history的input。

BERT框架会通过使用self-attention机制的layer来更新representations layer:

\[R_{i+1} = BERT\_Layer(R_i) \\ R_1 = (E_{u,1}, E_{u,2}, \cdots, E_{u,n})\]

在原始BERT和Transformer中,self-attention操作是一个位置不变函数(positional invariant funciton)。因此,一个position embedding会被添加到每个item embedding中来显式编码position信息。position embeddings也可以被看成是一种behavior-related side information(例如:一个interaction的顺序)。从该视角看,original BERT也可以将positional information看成是唯一的side information,使用加法作为fusion function F。

3.4 Non-invasive Self-attention (NOVA)

如果我们考虑end-to-end的BERT框架,它是一个具有stacked self-attention layers的auto-encoder。该identical embedding map会被用于encoding item IDs和decoding restored vector representations两者之上。因此,我们会讨论:invasive方法存在着对embedding空间混合的缺点,因为item IDs会使用其它side information进行不可逆的混合。将来自IDs的信息与其它side information进行混合,使得对于模型编码item IDs来说带来不必要的困难。

相应的,我们提出了一种新的方法:称为noninvasive self-attention (NOVA),来维持embedding space的一致性,从而利用side information建模sequences会更有效。该思想会修改self-attention机制,并仔细控制着self-attention组件(称为:query Q、key K、value V)的信息源。

图片名称

图3 invasive和non-invasive self-attention方式下的特征融合(feature fusion)。invasive方式会将item related和behavior-related side information使用一个fusion funciton进行直接融合;而NOVA只会在Query&Key中对它们进行融合

在在3.3节中定义的integrated embedding E之外,NOVA也会为pure ID embeddings保留一个分枝:

\[E_{u,j}^{(ID)} = \epsilon_{id}(ID)\]

因而,对于NOVA,用户历史会包含两个representations集合,pure ID embeddings和integrated embeddings:

\[R_u^{(ID)} = (E_{u,1}^{(ID)}, E_{u,2}^{(ID)}, \cdots, E_{u,n}^{(ID)}) \\ R_u = (E_{u,1}, E_{u,2}, \cdots, E_{u,n})\]

NOVA会计算来自 integrated embeddings R的Q、K,以及来自item ID embeddings \(E^{(ID)}\)的V。在实际中,我们会以tensor形式处理整个序列(例如:R和\(R^{(ID)} \in R^{B \times L \times h}\),其中B是batch size,L是sequence length,h是embedding vectors的size)。NOVA可以公式化为:

\[NOVA(R,R^{(ID)}) = \sigma(\frac{QK^T}{\sqrt d_k}) V\]

接着,Q,K,V可以通过线变变换进行计算:

\[Q = RW_Q, K = RW_K, V=R^{(ID)} W_V\]

对于side information fusing,NOVA与invasive方式间的对比如图3所示。layer by layer,在NOVA layers上的prepresentations会被保存到一个一致的vector space中,它完全由item IDs的context构成,\(E^{(ID)}\)。

3.5 Fusion操作

NOVA会利用不同于invasive方法的side information,将它看成是一个auxiliary,并将side information进行fuse到具有fusion function F的Keys和Queries中。在本研究中,我们也研究了不同类型的fusion functions和它们的效果。

如上所示,position information也是一种behavior-related side information,并且original BERT会使用直接的addition操作来利用它:

\[F_{add}(f_1, \cdots, f_m) = \sum\limits_{i=1}^m f_i\]

再者,我们定义了concat fusor来将所有side information进行拼接,后接一个fully connected layer来对维度进行uniform:

\[F_{concat}(f_1, \cdots, f_m) = FC(f_1 \odot \cdots \odot f_m)\]

受(Lei 2019)的启发,我们设计了一个具有可训练参数的gating fusor

\[F_{gating}(f_1, \cdots, f_m) = \sum\limits_{i=1}^m G^{(i)} f_i \\ G = \sigma(FW^F)\]

其中:

  • F是所有features \([f_1, \cdots, f_m] \in R^{m \times h}\)的矩阵形式
  • \(W^F\)是一个可训练参数\(R^{h \times 1}\)
  • h是要融合的feature vectors的维度 \(f_i \in R^h\)

图片名称

表1: 对比效果

3.6 NOVA-BERT

在图4所示,我们实现了我们的NOVA-BERT模型。每个NOVA layer会采用两个inputs,提供的side information以及item representations序列,接着输出相同shape的更新后的representations,它会被feed到下一layer中。对于第一层的input, item representations是纯item ID embeddings。因为我们只会用side information作为辅助来更好学习attention分布,side information不会沿着NOVA layers进行传播(propagate)。对于每个NOVA layer,side information的相同集合被显式提供。

NOVA-BERT会遵循original BERT的结构,除了将self-attention layers替换成NOVA layers。因而,额外的参数和计算开销会被忽略,它们主要由轻量级的fusion funciton引入。

我们相信,有了NOVA-BERT,hidden representations会保持在相同的embedding space中,它会让decoding处理一个同类型的vector search,这有利于prediction。

图片名称

图4 NOVA-BERT。每个NOVA layer会采用两个inputs:item representations和side information

Amazon search在《A Zero Attention Model for Personalized Product Search》中提出了zero attention的方法:

摘要

商品搜索(Product search)是人们在电子商务网站上发现和购买产品的最受欢迎的方法之一。由于个人偏好往往对每个客户的购买决策有重要影响,因此直觉上个性化(personalization)应该对商品搜索引擎非常有益。尽管以前的研究中人工实验显示:购买历史(purchase histories)对于识别每个商品搜索会话(session)的个体意图是有用的,但个性化对于实际产品搜索的影响仍然大多未知。在本文中,我们会将个性化商品搜索问题进行公式化,并从电商搜索引擎的搜索日志中进行了大规模实验。初步分析的结果表明,个性化的潜力取决于query特征(characteristics)、查询之间的交互(interactions)、以及用户购买历史(histories)。基于这些观察,我们提出了一个零注意力模型(Zero Attention Model),用于商品搜索,通过一种新的注意力机制来自动确定何时以及如何对用户-查询对(user-query pair)进行个性化。商品搜索日志上的实证结果表明,所提出的模型不仅显著优于最先进的个性化商品搜索模型,而且提供了有关每个商品搜索会话中个性化潜力的重要信息。

4.ZERO ATTENTION模型

在本节中,我们提出了一种零注意力模型(ZAM)用于个性化商品搜索。 ZAM是在基于embedding的生成(generative)框架下设计的。它通过使用零注意力策略(Zero Attention Strategy)构建user profiles来进行查询相关的个性化,从而使其能够自动决定在不同的搜索场景中何时以及如何进行关注(attend)。理论分析表明,我们提出的注意力策略(attention strategy)可以创建一个动态阈值,它可以根据查询和用户购买历史记录来控制个性化的权重

4.1 基于嵌入的生成框架

隐语义模型(Latent semantic models)已被证明对于商品搜索和推荐非常有效[17, 39]。在不同类型的隐语义模型中,神经嵌入模型(neural embedding models)已经在许多基准商品搜索数据集上实现了最先进的性能[2, 16]。具体而言,Ai等人[2]提出了一种基于embedding的生成框架,可以通过最大化观察到的用户购买的可能性来共同学习query、user和item的embedding表示。

假设:

  • q:为用户u提交的query
  • i:为query q的候选项集$I_q$中的一个item
  • $\alpha$:为embedding向量的大小

在基于embedding的生成框架[22, 26]中,给定query q,用户u是否购买i的概率可以建模为:

\[P(i|u,q) = \frac{exp(i · M_{uq})}{ \sum\limits_{i' \in I_q} exp(i' \cdot M_{uq}) }\]

… (3)

其中:

  • $i \in R^{\alpha} $是i的embedding表示
  • $M_{uq}$ 是user-query pair (u,q)的联合模型(joint model)

商品会根据$P(i \mid u,q)$进行排序,以便最大化每个搜索会话(session)中用户购买的概率。根据$M_{uq}$的定义,我们可以有多种基于embedding的商品搜索检索模型。在这里,我们介绍两个代表性模型:查询嵌入模型( Query Embedding Model)、分层嵌入模型(Hierarchical Embedding Model)。

查询嵌入模型

查询嵌入模型(QEM)是一种基于embedding的生成模型,用于非个性化的产品搜索[2]。它将$M_{uq}$定义为:

\[M_{uq} = q\]

…(4)

其中:

  • $q \in R_{\alpha}$是query q的embedding表示

由于query通常事先不知道,在请求时必须在商品搜索中计算q。以前的研究[2, 39]探索了几种直接从查询词构建query embedding的方法。其中一种最先进的范例是使用非线性投影函数$\phi$对查询词进行编码来计算query embedding,定义为:

\[q = \phi (\lbrace w_q |w_q \in q \rbrace) = tanh(W_ϕ · \frac{\sum\limits_{w_q \in q} w_q}{|q|}+ b_{\phi})\]

… (5)

其中:

  • $w_q \in R_{\alpha}$:是q中单词$w_q$的embedding
  • $\mid q \mid$是查询的长度,
  • $W_{\phi} \in R^{\alpha × \alpha}$和$b_{\phi} \in R^{\alpha}$是在训练过程中学习的两个参数

在QEM中,item embedding是从它们关联的文本数据中学习的。假设:$T_i$是与item i相关联的单词集合(例如标题)。Ai等人[2]提出通过优化观察到i时观察到$T_i$的似然来学习i,其中i的embedding表示为:

\[P(T_i|i) = \prod_{w \in T_i} \frac{exp(w \cdot i)}{ \sum\limits_{w' \in V} exp(w' \cdot i)}\]

… (6)

其中:

  • $w \in R^a$是单词w的embedding
  • V是所有可能单词的词汇表

注意,单独方式学习i,而不是通过平均单词嵌入来表示它是很重要的,因为:用户购买可能会受到除文本之外的其他信息的影响[2]。

分层嵌入模型

与QEM类似,HEM [2]也使用encoding函数$\phi$计算query embedding,并使用相关文本$T_i$计算item embedding。然而,与QEM不同的是,HEM将$M_{uq}$在公式(3)中定义为:

\[M_{uq} = q + u\]

… (7)

其中:

  • u是用户u的embedding表示

这样,HEM在产品搜索的item ranking中考虑了query意图和用户偏好

在HEM中,用户u的embedding表示是通过优化观察到的用户文本$T_u$的似然$P(T_u \mid u)$获得的:

\[P(T_u |u) = \prod_{w \in T_u} \frac{exp(w \cdot u)}{ \sum\limits_{w' \in V} exp(w' \cdot u)}\]

…(8)

其中:

  • $T_u$:可以是任何由用户u编写或输入相关的文本,例如产品评论或用户购买的项目描述。

4.2 Attention-based Personalization

正如Ai等人[2]所讨论的那样,HEM是基于用户偏好与查询意图在搜索中是独立的假设构建的。然而,在实践中,这并不是真实的情况。例如,喜欢Johnson的婴儿产品的客户在搜索“男士洗发水”时可能不想购买Johnson的婴儿洗发水。为了解决这个问题,产品搜索中更好的个性化范例是考虑查询和用户购买历史之间的关系。具体而言,我们在用户购买历史记录上应用一个attention函数来构建用于商品搜索的用户embedding。设$I_u$是用户u在query q之前购买的商品集合,则我们可以计算u的embedding表示为(attention对应的Q: q, K: i, V: i):

\[u = \prod_{i \in I_u} \frac{exp(f(q,i))} { \sum\limits_{i' \in I_u} exp(f(q,i'))} i\]

… (9)

其中:

  • f(q,i)是一个attention函数,用于确定每个item i相对于当前query q的注意力权重。类似于attention模型的先前研究[8, 41],我们将f(q,i)定义为:
\[f(q,i) = i · tanh(W_f · q + b_f) ·W_h\]

…(10)

其中:

  • $W_h \in R_{\beta},W_f \in R_{\alpha \times \beta \times \alpha},b_f \in R_{α \times β} $,β是一个超参数,用于控制注意网络中隐藏单元的数量。

给定基于注意力的用户embedding u,我们可以使用公式(3)和公式(7)中描述的相同方法进一步进行个性化产品搜索。我们将这个模型称为基于注意力的嵌入模型(AEM)。

与HEM不同,AEM通过查询相关的用户个人资料进行个性化。每个用户的embedding表示是根据他们的query构建的,以便模型能够更好地捕捉当前搜索环境中相关的用户偏好。这在用户购买了许多与当前查询无关的产品时尤其有益。Guo等人[15]提出了另一个基于注意力的产品搜索模型,其思想与AEM类似。不幸的是,对于注意力权重的计算,他们的模型假设用户购买历史记录中的每个项目都应与用户提交的至少一个搜索查询相关联,而这在我们的数据集中并不正确。因此,在本文中我们忽略了它。

然而,有一个重要的问题限制了HEM和AEM的能力。如第3节所示,不同的查询具有不同的个性化潜力。尽管在查询相关的用户个人资料方面做出了努力,但在公式(9)中的注意机制要求AEM至少关注用户购买历史记录中的一个item,这意味着它总是进行个性化。Ai等人[2]探索了一种朴素的解决方案,即在公式(7)中添加一个超参数来控制$M_{uq}$中用户嵌入u的权重,但这仅仅是在一些查询上进行个性化的收益与在其他查询上的损失之间进行权衡。为了真正解决这个问题,我们需要一个模型,在产品搜索中可以自动确定何时以及如何进行个性化

4.3 Zero Attention Strategy

个性化的实用性取决于查询和用户的购买历史。例如,钓鱼查询(spear-fishing queries)通常会导致:无论是什么样的客户偏好,都会购买同一件物品。同样,第一次在某个特定类别购物的客户,可能没有相关历史可供个性化基础

为解决这个问题,我们提出了一种零注意策略,通过在注意过程中引入一个零向量(a Zero Vector)来放松现有注意机制的约束。因此,我们提出了一种零注意模型(ZAM),它根据搜索查询和用户的购买历史在产品搜索中进行差异化个性化。图2显示了ZAM的结构。

图片名称

图2 注意力嵌入模型(AEM)和零注意力模型(ZAM)的结构。$I_u$表示用户u的购买历史,i表示query q的候选项,$w_q$和$w_i$分别表示q的单词和与i相关的文本(Ti)。

与AEM类似,ZAM基于相关单词来学习item embeddings,并使用query embeddings和user embeddings进行检索。ZAM和AEM之间的主要区别在于,ZAM允许attention网络关注(attend)一个零向量(Zero Vector),而不仅仅是关注用户以前的购买记录,这被称为零注意力策略。形式上,$0 \in R_α$为零向量,其中每个元素都为0。然后,在ZAM中,用户u的嵌入表示计算为:

\[u = \sum\limits_{i \in I_u} \frac{exp(f(q,i))} {exp(f(q, 0)) + \sum\limits_{i' \in I_u} exp(f(q,i′))} i\]

…(11)

其中:

  • f(q,0):是0相对于查询q的注意分数。

现在我们展示了这个简单的修改是如何在产品搜索中实现差异化个性化的。

  • $x \in R^{\mid I_u \mid}$:是由${f(q,i) \mid i \in I_u}$形成的向量

然后,公式(11)可以重新表述为:

\[u = \frac{exp(x)}{exp(f(q, 0)) + exp^+(x)} \cdot I_u\]

…(12)

其中:

  • $I_u$:是由用户购买历史中所有item embeddings组成的矩阵
  • $exp^+(x)$:是exp(x)的逐元素和

在公式(10)中,$exp(f(q,0))=1$,因此公式(12)中的$I_u$因子实际上是x的sigmoid函数。换句话说,引入零注意策略创建了一个激活函数,控制用户购买历史在当前搜索上下文中的影响。$exp^+(x)$的值是用户先前购买的项目在给定query下接收到的累积注意力,而exp(f(q,0))实质上是个性化的阈值。尽管我们的公式是恒定的,但是可以通过使用更复杂的函数定义f来使这个阈值依赖于查询。在任何情况下,只有当用户在与当前查询相关的产品上表现出一致和显著的兴趣时,用户嵌入u才应在ZAM中具有强烈的影响力。这使得ZAM能够在不同的搜索场景中进行差异化个性化。

4.4 模型优化

与先前的研究[2,39,44]类似,我们通过最大化观察到的用户购买和item信息的对数似然来优化AEM和ZAM。具体而言,我们用它们的标题表示每个item,用它们以前购买的item表示每个用户,用它们的查询词表示每个查询。假设:$T_i$是项目i标题中的单词列表,那么观察到的user-query-item三元组的对数似然可以计算为:

\[L(T_i,u,i,q) = log P(T_i|i) + logP(i|u,q) + log P(u,q) \\ \approx \sum\limits_{w_i \in T_i} log \frac{exp(w_i·i)}{\sum_{w′ \in V} exp(w′ \cdot i)} \\ + log \frac{exp(i \cdot (q + u))}{ \sum_{i′ \in I_q} exp(i′ \cdot (q+u))}\]

…(13)

其中:

  • w和i是学习的参数,q用公式(5)计算,u用公式(9)(对于AEM)或公式(11)(对于ZAM)计算,忽略了$log P(u,q)$,因为训练样例从日志中均匀采样。

然而,由于V中的单词数量和$I_q$中的item数量很大,计算$L(T_i,u,i,q)$通常是不可行的。为了有效训练,我们采用负采样策略[1,22,25]来估计公式(13)。具体来说,对于每个softmax函数,我们采样k个负样本来近似它的分母。AEM和ZAM的最终优化函数可以表示为

\[L′ = \sum\limits_{(u,q,i)} L(T_i, u, i, q) \approx \sum\limits_{(u,q,i)}\sum\limits_{w_i \in T_i} (log σ(w_i \cdot i) + k \cdot E_{w′∼P_w}[log σ(−w′·i)]) \\ + log σ(i \cdot (q + u)) + k \cdot E_{i′ \sim P_{I_q}} [log σ(−i′)\cdot(q + u))]\]

其中:

  • $\sgmoid(x)$是sigmoid函数,
  • $P_w$和$P_{I_q}$分别是单词w和item i的噪声分布

在我们的实验中,我们将$P_w$定义为提高3/4次方的单词分布[25],将$P_{I_q}$定义为均匀分布。此外,如图2所示,query和item标题中的单词以及$I_u$和$I_q$中的item共享一个公共embedding空间。我们尝试了不同类型的正则化技术,如L2正则化,但没有一种技术对模型的效果产生了显著影响。这表明,在我们拥有大规模训练数据的情况下,过度拟合不是我们实验中模型优化的问题。因此,为简单起见,我们忽略公式14中的正则化项。

其它