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中的正则化项。

其它

xiaohongshu在《Sliding Spectrum Decomposition for Diversified Recommendation》中提出了SSD的多样性方法:

摘要

内容feeds流,作为一种向用户推荐一系列浏览和消费(engage)的item的产品,在社交媒体平台上非常流行。在本文中,我们提出从item序列的角度,使用时间序列分析技术来研究这种场景下的多样性问题。我们推导出一种称为滑动频谱分解(SSD)的方法,它捕捉用户在浏览长item序列时对多样性的感知。我们还分享了我们在设计和实现一种合适的item embedding方法方面的经验,以便在长尾效应下进行准确的相似性测量。综合起来,这些方法现在已经完全实现并部署在小红书App的生产推荐系统中,为每天数千万用户提供主要的探索feeds产品。我们通过理论分析、离线实验和在线A/B测试展示了该方法的有效性和效率。

1 引言

内容feeds流,或在本文中简称为feeds,是一种非常流行的社交媒体产品,它为用户推荐了一系列浏览和参与的item序列。Instagram的探索feeds和TikTok的为你feeds是这类产品的典型例子。在本文中,我们报告了我们在小红书探索feeds产品中的工作。小红书1(中文意思是小红书)是一个拥有超过1亿月活跃用户的社交媒体平台。用户在平台上分享他们关于时尚、美食、旅行、阅读、健身等日常生活体验,以获得乐趣和灵感。每篇帖子都包含文本和视觉内容。在推荐系统(RecSys)的术语中,每篇帖子都是一个item。平台通过其探索feeds产品向用户推荐这些item,如图1所示

图片名称

图1 小红书探索供给产品的截图。左侧:用户可以滑动选择的两列推荐item列表。右侧:用户点击某个item后进入的item详情页面。

我们确定了这些feeds产品的两个常见特征,这些特征与推荐中的多样性问题密切相关。首先,它们允许用户通过手机当前的视窗持续下滑item列表。尽管当前视窗中的item pair对用户对多样性的感知有最直接的影响,但我们认为,由于用户的记忆,用户已经查看过的视窗外的item仍然对用户的感知有持久的影响。通过类比,我们发现许多现有的多样性方法[8, 9, 37]使用基于滑动窗口的实现忽略了视窗外的item,因此没有完全捕捉到用户的多样性感知。尽管扩大滑动窗口可能可以解决这个问题,但它增加了计算时间,并且在实践中阻碍了其在具有非常严格的延迟要求的生产系统中的部署。在feeds场景中,这个问题更加严重,因为用户倾向于在feeds应用程序上查看许多item。图2(左)显示,在过去1.5年中,小红书探索feeds的用户查看item序列的平均长度增加了约50%。具有滑动窗口实现的现有多样化推荐算法将在这个长item序列场景中忽略许多item。为了解决这个问题,我们提出从item序列的角度使用时间序列分析技术来研究多样化推荐问题。

图片名称

图2 关于小红书探索供给的统计数据。左侧:过去1.5年中用户平均项目序列长度的增长。右侧:项目数量相对于用户点击次数的分布,这清楚地展示了长尾效应。

我们推导出了一个称为滑动频谱分解(SSD)的方法。它将多个滑动窗口堆叠到轨迹张量中。分解张量可以得到一个考虑了视窗外item和整个item序列的多样性的广义定义。设计了一个贪婪推理过程来计算多样性项,并且被证明比现有最先进方法[9]更有效率。

第二,正如许多推荐系统中所出现的,长尾效应在这些feeds产品中也显现出来。少数item获得了大多数用户参与,而大量item几乎没有或很少有用户互动。图2(右)显示了小红书探索feeds中的效果。多样性算法中的一个关键组成部分是item相似性的测量。长尾效应使得基于协同过滤(CF)[20, 22, 27]的相似性测量由于许多item上用户参与的稀疏性而变得不够有效。一种替代方案是依赖基于内容的方法(CB)。然而,纯粹基于内容的相似性测量也有一些缺点。为基于内容的相似性模型收集大量训练数据非常耗时,而且训练数据往往会偏向于注释者对item相似性的看法,而不是最终用户的看法[11]。受到CB2CF工作[5]的启发,我们设计了一种类似的策略,迫使模型从item内容中泛化,学习用户在其item参与中隐含表达的对item相似性的看法。我们也称这种策略为CB2CF,尽管实际方法与[5]不同。遵循这一策略,我们设计并训练了一个并联网络[6]来学习item embedding。然后将这些嵌入适应并用于SSD方法中的相似性计算。

我们的贡献如下:

  • 与许多先前的方法[8, 9, 37]不同,我们从item序列的角度使用时间序列分析技术研究推荐多样性问题。我们认为这种视角更符合feeds场景,即向用户推荐一系列item。
  • 沿着这个方向,我们推导出了一种称为滑动频谱分解(SSD)的方法。它将视窗外的item和整个item序列纳入对多样性的考虑。此外,与现有最先进方法[9]相比,它在计算上更有效率。
  • 我们分享了使用CB2CF策略获得能在长尾效应下准确测量item相似性的item embedding的经验。我们描述了如何适配嵌入向量以与SSD方法一起工作,以及嵌入向量在我们的生产数据中的表现。
  • 我们通过理论分析、离线实验和在线A/B测试展示了所提方法的有效性和效率。

2 相关工作

2.1 多样化推荐

在推荐系统中,多样性主要有两个视角:聚合(aggregation)和个体(individual)。聚合考虑所有用户之间的多样性,其目标通常是提高推荐系统的覆盖率[14, 15]。另一方面,个体,也是我们在这项工作中研究的视角,侧重于给定用户的多样性,通常我们希望在质量和多样性之间实现最佳权衡[1, 2, 8, 37]。

在个体视角下,多样化推荐通常通过一个优化问题来表述,目标是同时考虑质量和多样性。一些研究讨论了如何构建和解决这个优化问题。

  • 在[8]中的工作提供了一种基于边际的贪婪算法,也称为最大边际相关性(MMR),其中一项的分数是检索质量项减去表示其与先前选定item相似性的惩罚项。
  • [26]提出最大化相关性加上一个类似熵的多样性项。
  • 最近,许多工作将行列式点过程(DPP)应用于多样化推荐。DPP是一个概率框架,最初用于描述热平衡中的分布,特征是某些函数的行列式[24]。在推荐上的应用通常使用L-集合DPP,其中函数是一个对称矩阵,也称为核矩阵,代表质量和成对相似性。在本文中,DPP总是指L-集合DPP。
    • 在[9]中,作者提供了一个快速贪婪算法来解决DPP的计算复杂性问题。
    • 在[37]中的工作提出了一种实用的方法,从过去的交互中学习核矩阵,并与近似贪婪推理相结合

为了在实践中提高效率,滑动窗口是这些方法中的一个关键组件[17, 37]。 在使用滑动窗口的贪婪推理过程中,所有这些工作完全忽略了视窗外的item。然而,保持这些item的信息更符合用户的感知。这项工作将推荐序列建模为用户观察到的时间序列。通过利用时间序列分析技术,我们的方法能够考虑多个窗口来模拟整个序列的多样性。

2.2 item相似性

在推荐系统中,item到item的推荐是一个关键组件,其中展示了用户喜欢item的最相似item。旨在为此计算item相似性的技术通常被归类为协同过滤(CF)或基于内容(CB)

  • 基于协同过滤(CF)的算法,它根据用户的隐式反馈构建相似item表,在各种个性化任务中常用[22, 30]。
  • 基于内容(CB)的方法,忽略了用户的历史行为,基于内容信息(如item描述、图像等)计算item相似性。

在多样化推荐方面的现有工作中,已经探索了CB和CF技术来测量item相似性。例如:

  • 在[37]中的工作建议使用item标记之间的jaccard距离作为距离函数。
  • 在[9]中,作者从用户反馈中使用矩阵分解(MF)技术创建item表示。
  • 一般来说,CF方法比CB方法提供更准确的相似性测量[29]。然而,当对item没有或很少有反馈时,即长尾或新item时,CF算法受到限制,这构成了社交媒体平台item的主要部分。因此,许多人尝试使用基于内容的功能来解决这个问题。
  • 在[5]中,作者提出了一种CB2CF方法,从内容特征学习映射到协同过滤嵌入,以解决冷启动item推荐。
  • 在[4]中,作者通过使用多视图神经注意力机制改进了模型。然而,注意力模型不适合用于多样化推荐任务中的item相似性测量,因为它是成对模型,并且在需要评估大量配对item时计算上非常昂贵。

在本文中,受到[5]中工作的启发,我们提出了一种适合与SSD配合使用的CB2CFitem embedding。我们的方法与之前的方法不同,我们没有将item内容映射到CF向量。相反,我们迫使模型从item内容中学习,推断出由ItemCF方法[22]产生的加强相似性信号。

3 问题设置

图3展示了工业推荐系统的典型结构[36, 37]。系统首先从item数据库中检索候选item,然后通过排序(ranking)模块来衡量点质量,即预测特定item将为用户提供的效用有多少,对每个item进行预测。最后,高质量的item将被发送到策略模块进行进一步选择和重新排序,以构建最终的推荐。

图片名称

图3 工业推荐系统的典型结构

在本文中,我们考虑多样化feeds推荐问题,其中:策略模块需要从排序模块生成的候选item集合 $ Z =\lbrace 1, 2, …, N \rbrace $ 中选择一个item序列 $\lbrace i_1, …, i_T \rbrace $。选择过程应考虑item之间的多样性以及它们的质量。在我们的设置中,对于每个item $ i $,排序模块提供了对其质量的估计 $ r_i $,策略模块可以访问其 $ d $ 维嵌入 $ \mathbf{v}_i \in \mathbb{R}^d $。我们要求两个item embedding的内积代表它们的相似性。此外,如今,检索和排序模块通常使用复杂的深度神经网络,对我们策略模块的解决方案提出了严格的延迟要求。

4 SSD

在这一部分,我们首先为我们提出的多样化feeds推荐方法——滑动频谱分解(SSD:Sliding Spectrum Decomposition)——进行公式化。然后我们为SSD引入了一种高效的贪婪推理方法,以满足生产系统中策略模块的低延迟要求。最后,我们对SSD进行了深入分析,并展示了它与DPP方法[9]的深刻联系。

4.1 公式化

在feeds推荐中,用户浏览一长串item并与它们互动。我们的目标是在这种情况下,在RecSys的策略模块中构建一个高质量和多样化的item序列。我们通过回答两个问题来解决问题:

  • 1)如何在这样长的序列中测量多样性;
  • 2)如何构建一个考虑整体质量和多样性的目标。

图片名称

图4 从用户观察到轨迹张量的过程

对于第一个问题,为了与用户的感知保持一致,让我们从用户的角度分析item序列。由于feeds推荐器通常提供一长串item,用户的当前视窗只能占据整个序列的一部分。随着用户连续浏览item,很自然地将feeds视为用户观察到的时间序列。在时间序列分析中,通常涉及一个滑动窗口来表示时间分辨率。同样,在推荐系统中,用户的滑动窗口出现在手机的当前屏幕上或用户心中的一个缓存区域。假设这个窗口有一个固定的大小,标记为$w$,我们可以通过图4中的三个步骤处理用户的观察:

  • 首先,一个窗口在整个原始item序列上滑动(slide)
  • 然后,多个窗口的item以item矩阵的形式堆叠(stack)在一起。
  • 最后,我们将每个item映射到其d维item embedding,获得以下轨迹张量 $ X \in \mathbb{R}^{L \times w \times d} $:
\[X = \begin{bmatrix} \mathbf{v}_{i_1} & \mathbf{v}_{i_2} & \cdots & \mathbf{v}_{i_w} \\ \mathbf{v}_{i_2} & \mathbf{v}_{i_3} & \cdots & \mathbf{v}_{i_{w+1}} \\ \vdots & \vdots & \ddots & \vdots \\ \mathbf{v}_{i_L} & \mathbf{v}_{i_{L+1}} & \cdots & \mathbf{v}_{i_T} \end{bmatrix}, \quad (1)\]

其中:

  • $ L = \max(1, T - w + 1) $。

当 $ d = 1 $ 时,X 刚好是单变量时间序列的奇异谱分析(SSA)中的轨迹矩阵[7]。在时间序列分析中,SSA是一种强大的技术,已经广泛应用于各个领域,例如,多变量统计、非线性动力学系统和信号处理[35]

在传统时间序列分析中,一个复杂的时间序列通常由几个规律性组成部分构成。例如,随着农业的持续发展,粮食生产呈现上升趋势,但也受到季节的影响,即粮食生产的时间序列是趋势和季节性的总和。SSA就是这样一种技术,它可以将时间序列分解为各种正交分量,其中这些分量的权重通过轨迹矩阵的奇异值分解来表示

在推荐场景中,通过将d维item embedding视为多变量观测(multivariate observations),我们将轨迹矩阵(trajectory matrix)推广到三阶情况。按照SSA,我们对X执行奇异值分解[19, 34]:

\[X = \sum_{\sigma_{ijk} > 0} \sigma_{ij}^k \mathbf{u}^{(1)}_i \otimes \mathbf{u}^{(2)}_j \otimes \mathbf{u}^{(3)}_k, \quad (2)\]

其中:

  • $ \mathbf{u}^{(1)}_i \in \mathbb{R}^L $,$ \mathbf{u}^{(2)}_j \in \mathbb{R}^w $,$ \mathbf{u}^{(3)}_k \in \mathbb{R}^d $ 是X的正交分解矩阵的列,
  • $ \otimes $ 表示外积。

在RecSys中,用户观察到的正交分量可以被视为item内容呈现的正交方向,而奇异值因此指这些方向在用户对多样性感知中的权重

经过上述处理后,剩下的问题是如何从这种分解中定义多样性。让我们首先考虑一个简单的情况,即没有任何一对窗口之间有重叠,也就是说,在计算多样性时,窗口彼此独立。因此,我们可以只关注X的单行,将轨迹张量退化为矩阵。假设item embedding在内积空间中,即一对item之间的内积可以代表它们的相似性。很自然地,我们可以通过这些item所跨越的超平行六面体的体积来定义多样性(diversity),其中多样化的item跨越更大的体积,因为它们的嵌入更正交。注意,计算矩阵体积的一种方法是使用奇异值的累积乘积[33]。因此,我们推广这种方法来定义三阶张量X的体积如下:

\[\prod_{\sigma_{ijk} > 0} \sigma_{ijk} \quad (3)\]

注意,在三阶张量X中,SSD从用户浏览整个序列的感知中组合了多个窗口。X的体积因此代表了基于整个序列以及滑动窗口的多样性。因此,我们通过公式(3)定义了整个序列的多样性。

一个剩下的问题是如何在优化中组织多样性和质量,我们提议直接将它们相加:

\[\max_{\{i_1,...,i_T \rbrace \subset Z} \left( \sum_{t=1}^{T} r_{i_t} + \gamma \prod_{\sigma_{ijk} > 0} \sigma_{ijk} \right), \quad (4)\]

其中:

  • $ \gamma $ 是一个超参数,用于调整质量和多样性之间的权衡。

我们将从推荐器的角度展示公式(4)的合理性和洞察力。

  • 一方面,工业推荐器通常计算质量分数以代表用户的预期效用,如视频观看时间或参与度
  • 另一方面,多样性有时被视为探索,以更多地了解用户[28, 32]。

因此,质量和多样性之间的权衡对于推荐器来说是一种利用-探索(EE)权衡。特别是,考虑将item序列视为具有以下高斯参数化的多臂老虎机:

\[N \left( \sum_{i=1}^{T} r_i, \prod_{\sigma_{ijk} > 0} \sigma_{ijk}^2 \right), \quad (5)\]

其中:更好的多样性提供了item序列中更高的方差[13, 18]。这也与多样性体积定义一致,更大的体积直观上代表更大的方差。注意,高斯变量的上置信界与其标准差成正比。本着面对不确定性时的乐观原则,公式(4)是一种UCB类型的臂选择策略[3, 21]。

SSD将整个item序列视为用户观察到的时间序列,并通过频谱分析分解其滑动表示。因此,我们称我们提出的方法为滑动频谱分解。

4.2 贪婪推理

我们已经将多样化feeds推荐问题表述为公式(4)中的最大优化问题。优化多样性项是一个组合张量分解问题,被证明是NP-hard[16]。在这一部分,我们提供了一个快速的贪婪推理算法来解决实践中的高效推理问题。

在贪婪推理的第t步中:

  • 前t-1个item已经被选中,我们需要从候选集 $ Z \setminus I_{1:t} $ 中选择一个item,
  • 其中 $ I_{p:q} $ 指的是 $\lbrace i_p, i_{p+1}, …, i_{q-1} \rbrace $。

让我们从时间步骤 $ t \leq w $ 开始。

当 $ t = 1 $ 时,选择质量最高的item是直接的。在其他情况下,我们不需要知道每个奇异值的实际值,即我们只关心累积乘积。回想一下,累积乘积在几何上等于体积。

当 $ t = 2 $ 并且我们考虑候选item j 时,体积是由 $ i_1 $ 和 j 跨越的平行四边形的面积

\[\| \mathbf{v}_{i_1} \| \| \mathbf{v}_j \sin(\mathbf{v}_{i_1}, \mathbf{v}_j) \|\]
  • 其中 $ | \cdot | $ 表示 L2-范数。

注意 $ v_j \sin(v_{i_1}, v_j) $ 实际上是正交化的 $v_j $,标记为 $ v_j^{\perp} $,相对于 $v_{i_1} $:

\[\mathbf{v}_j^{\perp } = \mathbf{v}_j - \frac{\langle \mathbf{v}_j, \mathbf{v}_{i_1} \rangle}{\langle \mathbf{v}_{i_1}, \mathbf{v}_{i_1} \rangle} \mathbf{v}_{i_1}, \quad (6)\]

其中:

  • $ j $ 在 $ i_1 $ 上的投影已从 $ \mathbf{v}_j $ 中移除。

当 $ t = 3 $ 时,相应的平行六面体的体积也可以通过对 $v_{i_1} $ 和 $v_{\perp i2} $ 的正交化候选项来计算。一般来说,这种正交化是格拉姆-施密特过程[33],公式化为:

\[\mathbf{v}_{ik}^{\perp} = \begin{cases} \mathbf{v}_{ik}, & \text{if } k = 1 \\ T_{I_{1:k}}(\mathbf{v}_{ik}), & \text{otherwise} \end{cases}, \quad (7)\]

其中:

\[T_{I_{1:k}}(\mathbf{v}_{i_k}) = \mathbf{v}_{i_k} - \sum_{i \in I_{1:k}} \frac{\langle \mathbf{v}_{i_k}, \mathbf{v}_{i}^{\perp} \rangle}{\langle \mathbf{v}_{i}^{\perp}, \mathbf{v}_{i}^{\perp} \rangle} \mathbf{v}_{i}^{\perp}. \quad (8)\]

特别是,当没有滑动窗口时,我们可以重用候选item的正交化结果,这相当于one-step修改版的格拉姆-施密特(MGS)正交化[33]。有了这个技巧,我们的贪婪推理算法只有 $ O(NdT) $ 的时间复杂度,外加 $ O(1) $ 的空间复杂度。$ t \leq w $ 也相当于没有滑动窗口的情况。算法总结在算法1中。

图片名称

算法1

让我们继续考虑 $ t > w $ 的时间步骤,我们需要考虑多个窗口。为了简化,让我们首先考虑 $ t = w + 1 $。遵循之前策略的一个可能方法是从 $ i_2 $ 开始正交化 $ I_{2:w+1} $。然而,这种方法完全忽略了item $ i_1 $ 以及第一个窗口,这与通过组合多个窗口来测量整体多样性的SSD相悖。因此,我们在当前窗口执行MGS,同时保留所有选定item的正交化结果,允许当前窗口继承有关先前窗口的信息。因此,在时间步骤 $ t $ 中,贪婪推理考虑以下目标:

\[\max_{j \in Z\setminus I_{1:t}} r_j + \gamma \| T_{I_{l:t}} (\mathbf{v}_j) \| \prod_{i \in I_{1:t}} \|\mathbf{v}_{i}^{\perp} \|, \quad (9)\]

其中:

  • $ l = \max(1, t - w + 1) $。

注意上述目标保持了X的一阶正交化。由于X在前两阶上是对称的,公式(9)确保了正交化之后,在相同的列中任意一组连续的 $ w $ 个元素在第一阶和第二阶上是正交的。

与没有滑动窗口的情况相比,我们需要额外的还原操作。例如,在时间步骤 $ w + 1 $ 中,我们需要对 $ Z \setminus I_{1:w+1} $ 中所有剩余的候选项在 $ i_1 $ 上的投影进行还原。这些还原操作需要 $ O(NdT) $ 的时间复杂度,外加 $ O(wN) $ 的空间来存储这些投影。因此,总的时间复杂度仍然是 $ O(NdT) $。为了进一步加速实际实现,我们进一步提出应用循环队列技巧来减少内存复制[10]。算法总结在算法2中。

图片名称

算法2

4.3 分析

之前我们已经介绍了用于多样化feeds推荐的SSD(滑动频谱分解)和相应的贪婪推理算法。SSD将item序列视为用户观察到的时间序列,通过在整个序列中组合多个滑动窗口来与用户浏览feeds时的感知对齐。这种观点是我们与其他多样化推荐工作的主要区别之一。 SSD使用由多个窗口组成的三阶张量的体积来定义多样性。与之最相关的想法是DPP(行列式点过程)[9]。在本节中,我们首先证明在没有滑动窗口的情况下,SSD中的多样性项与DPP中的相同。然后我们分析这两种方法之间的区别。最后,我们比较了SSD和DPP在有无滑动窗口情况下贪婪推理的复杂性。

当多样性仅在单个窗口内需要时,考虑对 $P_t = U \sigma V^T \in R^{t \times d} $ 进行奇异值分解,其中 $\mathbf{P}t$ 的第i行是 $ \mathbf{v}{i_t} $。然后我们可以得到:

\[\det(\mathbf{P}_t \mathbf{P}_t^T) = \det(\mathbf{U} \Sigma \mathbf{V}^T \mathbf{V} \Sigma^T \mathbf{U}^T) = (\det(\Sigma))^2. \quad (10)\]

注意:

  • $ \mathbf{P}_t \mathbf{P}_t^T $ 是DPP中的核心矩阵,当忽略质量时,右侧是SSD目标中的平方多样性项。矩阵的行列式表示几何中的体积,即DPP也使用由 $ I_1:t+1 $ 跨越的 $ t $ 维超平行六面体的体积来表示多样性。因此,没有滑动窗口的情况下,SSD和DPP对多样性的定义是相同的。在滑动窗口的情况下,SSD将这种体积推广到三阶张量,以组合多个窗口,我们认为这更符合用户在feeds推荐中的感知。

DPP和SSD之间的主要区别有两个方面。

  • 1.DPP是来自物理学的强大概率技术,用于测量多样性,其中一组item的选择概率与核矩阵相对于的行列式成正比。DPP的假设中没有顺序概念。换句话说,是贪婪推理过程为DPP的推荐提供了序列。对于长序列,必须考虑滑动窗口以满足用户的感知。然而,DPP没有提供组合多个窗口的方法,完全忽略视窗外的信息过于严格。SSD反而将feeds视为时间序列,将顺序和滑动窗口都包含在轨迹张量中。
  • 2.在DPP的框架中,选择概率与体积成正比,其中质量作为相应item embedding的乘数。这种组合在几何上是可解释的,体积随质量的增加而单调增加。换句话说,在DPP中,质量是自然嵌入的一种增强器。对于feeds推荐,推荐器大多数时间利用用户的过去互动,同时探索他们的兴趣。受到这种行为的启发,SSD反而认为多样性在质量下扮演着探索者的角色,采用利用-探索策略。

回想一下,[9]为DPP提出了一个快速的贪婪推理算法,其中需要一个核矩阵 $ \mathbf{K} $。对于大规模推荐器,预先计算具有密集item embedding的 $ \mathbf{K} $ 在离线时是不切实际的。在在线服务期间,$ \mathbf{K} $ 需要 $ O(N^2d) $ 的时间复杂度和额外的 $ O(N^2) $ 空间。回想一下,没有滑动窗口的情况下,SSD与DPP返回相同的结果,但在我们的提议的贪婪推理算法中,不需要 $ \mathbf{K} $。此外,在滑动窗口情况下,我们只与最后选择的item进行正交化,使时间复杂度与窗口大小 $ w $ 无关。复杂性比较总结在表1中。在贪婪推理下,SSD比DPP更高效。

图片名称

表1

5 item embedding

在上一节中介绍的SSD方法要求item embedding在内积空间中。任何item $ i $ 由embedding向量 $ \mathbf{v}_i $ 表示,它与任何其他item $ j $ 的相似度计算为 $ \langle \mathbf{v}_i, \mathbf{v}_j \rangle $。这里,我们描述了如何在长尾效应下计算准确的item相似度的embedding向量。尽管与[5]有所不同,我们称我们的策略为CB2CF。

5.1 模型架构

嵌入模型的网络结构如图5所示。我们采用了并联网络(siamese)架构[6],在视觉和自然语言应用[25]中广泛用于相似度计算。并联网络能够自然地从item pair对中学习item embedding,无需在训练期间决定item的顺序,或在推理时选择模型的分支。给定一个item,我们以item描述和封面图像为输入,并在预训练模型的帮助下分别为它们创建文本表示和图像表示。对于文本描述,我们采用BERT[12]作为基础模型,并遵循标准流程,将对应第一个标记的隐藏状态作为嵌入。对于封面图像,使用Inception-V3[31]模型获得图像表示。然后,我们通过连接它们相应的表示,然后通过一个全连接输出层到目标嵌入 $ \mathbf{v} $。最后,我们计算成对item embedding之间的余弦距离。我们将在5.3节中解释采用余弦距离的原因。我们将这个问题视为二元分类任务,并使用交叉熵损失作为目标。

图片名称

图5

5.2 训练数据

接下来,我们讨论如何为嵌入模型收集训练样本。

首先,只有item内容,如文本描述、封面图像和视频封面图像被用作嵌入模型中的特征。用户参与度不作为特征使用。这样做,模型被迫纯粹从item内容中推断相似度。这防止了模型至少在特征级别上受到长尾效应的影响,因为:即使用户参与度很少(或没有)的item,也可以通过模型以足够的内容特征可靠地计算其embedding向量

其次,对于任何有用户参与的item $i$,如果item $j$ 通过ItemCF方法[22]以item $i$ 作为种子item被检索出来,并且item $j$ 在最终推荐结果中获得了足够的曝光,我们有很高的信心认为从用户的角度来看,item i和j是非常相似的。ItemCF基于用户参与度确保了i和j之间基本的用户感知相似度。如果j多次在推荐系统中存活下来,为许多用户获得曝光,那么j对许多用户来说很可能与i相似。我们将这些item pair对 $ < i, j > $ 视为正样本

这个样本集受长尾效应的影响不大,因为即使用户参与度很少的item也可以作为种子item i。然而,item j更可能是头部item,因为我们的策略要求它有一些最小的曝光。这也是我们不对j需要任何用户参与度的原因,因为这将进一步增加j成为头部item的概率。

设计的一个优点是:它使得长尾item和头部item之间建立相似关系成为可能。这可以帮助嵌入模型从item内容中泛化,推断出相似度,即使是长尾item。

最后,对于任何有用户参与的item $ i $,我们随机采样一个通过ItemCF方法检索的item $ j’ $,并使用这些item pair对 $ < i, j’ > $ 作为负样本。如果我们允许 $ j’ $ 是任何随机item,我们发现在实践中负样本对嵌入模型来说太容易了,它停止过早地学习。所有上述训练样本都可以从现有的推荐系统中轻松自动收集。我们的方法与原始的CB2CF工作[5]不同,因为我们不将item内容映射到CF向量[27]。相反,我们迫使模型从item内容中学习,推断出由ItemCF方法产生的加强相似性信号。

5.3 归一化

如前所述,SSD将选定item embedding跨越的平行四边形体积推广到滑动窗口情况,以匹配用户在feeds推荐中的感知。在使用CB2CF训练中的内积作为距离时,item的L2范数是无界的。这种无界性可能导致item之间严重的不公平,因为它为体积提供了不可控的贡献。因此,我们特别指定余弦相似度作为CB2CF训练中的距离,使所有嵌入具有相同的L2范数,即位于高维单位球表面。

另一个问题是余弦距离和体积之间的不匹配。体积通常在内积空间中定义,如果两个向量的内积为0,则它们完全不同。使用余弦距离时,完全不同的对的值变为-1。我们通过在归一化后添加一个额外的维度元素1来解决这个问题:

\[\mathbf{v} = \left[ \frac{\mathbf{v}^{\prime}}{\|\mathbf{v}^{\prime}\|}, 1 \right], \quad (11)\]

其中:

  • $ \mathbf{v}^{\prime} $ 是CB2CF的输出。

这种转换保持了由余弦描述的相似度,并在SSD中实现了公平性和几何属性。

实验

kuaishou在《POSO: Personalized Cold Start Modules for Large-scale Recommender Systems》中提出了POSO的方法:

1.介绍

大规模推荐系统每天面临着大量新用户。一个重要挑战是:如何为这些未见过的用户做出精准推荐。一方面,这些用户很难具有历史描述或初始数据。另一方面,他们要比常规用户更加敏感、不耐烦。对他们来说,不够精准的推荐可能会失去吸引力,从而不会再返回平台。从而,我们可能会失掉这些新用户的潜在价值

该问题被称为“user cold-start问题”。不同于item cold start问题(我们可以利用内容features),user cold start很难提供可选描述,需要系统去快速捕获用户兴趣。基于【10,12】的meta-learning可以通过产生良好泛化的initialization来缓解该问题。另外,其它工作【14,26】尝试其余features来生成ID embedding,从而提供缺失线索(missing cues)。

然而,我们会讨论:存在另一个被忽略的问题:个性化淹没(submergence of personalization)。该问题描述了一个现象:尽管个性化features被用来对不同的user groups(它们的分布非常不同)进行balance,但由于存在非常严重的不均衡样本(imbalanced samples),这些features会被淹没

图片名称

图1 a) 新用户后验行为的可视化(基于来自常规用户的动作 数/率的相对差异)。它展示了新用户会与常规用户具有非常不同的差异。 b) imbalanced和well-balanced features的敏感度,通过两个size=128的向量进行可视化。在每个vector中的Bins表示了当对imbalanced/balanced features进行mask时的activation差异。颜色越深表示差异越大

如图1(a)所示,我们会以常规用户的后验行为(观看时长/VV数/点赞率/完播率)作为原始点,来展示新用户的分布差异。该图展示了新用户会遵循非常不同的分布。理论上,我们期望:个性化features是为了区分user groups。但在实际中,这样的features真的能帮助模型对不同分布进行平衡吗?该回答是NO。我们发现:个性化input是被淹没的,如图1(b)所示。在两种case中,我们使用相同的well-trained模型,当一些features会mask为0,并将activation差异进行可视化(近网络end,跨多个batches进行平均)。前者我们会将新用户indicator进行mask(0表示常规则用户、1表示新用户)。令人吃惊的是,activation几乎是保持不变。原因是:这样的features会非常不均衡:在所有样本中,新用户样本量少于5%。在训练过程中,该indicator在大多数时候几乎不会变更,因此该feature变得可有可无。作为对比,我们会对一个well-balanced feature(user country)进行mask。不同于前者,activation会有大变化。以上的观察建议:一个普通模型结构对于维持个性化来说是不充分的。

图片名称

图2 Kwai中的大规模推荐系统。有三个stages:embedding generation,序列型特征建模(MHA)、多任务优化(MMoE)

在本paper中,我们提出了一个有效的模型来解决上述问题:Personalized COld Start MOdules (POSO)。

  • 首先,POSO会通过分配独立的modules组合来让不均衡样本相等,每个module只会关注于它分配的user groups。
  • 接着,POSO会生成个性化gates,区别于原始个性化features。
  • 最后,gate和module outputs会组合来形成综合表示

它的有效性有两部分:

  • 1) 不管样本是占大多数还是占少数,样本实际上都会被分配给特定的子模块(sub-modules),
  • 2) Gating network被选中的个性化features完全决定(称为:”个性化码:Personalization Code”),它会避免它的“淹没”。POSO会强制个性化,对不同分布进行balance,并缓和冷启问题。POSO不会为作一个单独方法进行服务。它会集成到许多已经存在的modules中,比如:MLP、Multi-head Attention(MHA)、MMoE。通过进行合理近似和详细分析,我们会派生出它的个性化版本,它会带来引人注目的增长,同时计算开销很小。

POSO的一个优点是:它对大规模系统很有利:

  • 1)它遵循标准的训练过程,不同于meta-learning-based方法(它会将训练数据split成support/query set,并可能减慢训练速度)
  • 2)计算开销是可忽略的
  • 3)它可以被用到其它数据不均衡问题,它可以广泛存在于users/items/countries/regions。

我们在大规模推荐系统Kwai上开展实验。在真实场景中,POSO(MLP)/POSO(MHA)/POSO(MMoE) 一致性提升该效果,并效果好于已存在方法。当部署到我们的在线系统,它对于新用户带来+7.75% Watch Time和+1.52% Retention Rate。除了user cold-start场景,提出的架构提升了item cold start(对于新视频带来+3.8% Watch Time),效果好于在MovieLens 20M dataset上的已存在方法。

该paper的贡献总结如下:

  • 1) 展示了个性化淹没问题
  • 2) 提出了一个称为POSO的新方法
  • 3) 提出详细推导并展示了POSO可以被集成到许多modules中

4.个性化冷启模块(POSO)

众所周知,推荐系统缺乏新用户的初始数据。然而,我们认为一个问题被忽视了:个性化的“淹没”,这意味着由于数据不平衡,,尽管提供了个性化特征,推荐系统未能做到对各种分布的平衡。

首先,我们展示了新用户的行为分布与常规用户非常不同。在图1(a)中,我们会对新/常规用户的后验行为进行可视化。我们展示了新用户指标的相对差异。我们观察到:

  • 1)新用户会生成更低的VV(Video View)
  • 2)新用户具有更高的Finish-View Rate,但具有更低的单次观看时间(per-play Watch Time)。他们会喜欢短视频,但在长视频上具有更少的耐性
  • 3)新用户趋向于使用更高频的“like”,看起来对广泛的视频感兴趣。

所有观察暗示着:新用户的行为会与常规用户具有非常不同的分布。

有人可能认为,现有模型通过使用个性化特征来隐式地平衡各种分布,例如使用一个indicator来区分新/常规用户。然而,由于数据不平衡,这些特征被淹没了。在图1(b)中,我们利用一个经过良好训练的模型,屏蔽个性化特征并可视化激活(activation)差异。令人惊讶的是,屏蔽严重不平衡的新用户指标几乎没有影响激活。相反,当屏蔽平衡良好的用户国家特征时,激活(activation)显著改变。由于新用户仅占5%的样本,大多数情况下,该indicator保持不变。模型很容易关注其他特征来寻找解决方案,并“忘记”新用户指标,这对于冷启动问题至关重要。我们将这种问题称为个性化的“淹没”。

在本文中,我们从模型结构的角度来增强个性化特征。我们会通过分配单独的模型组合来对不平衡的个性化特征进行平衡,以解决“淹没”问题。理想情况下,你可以为一个指定用户构建一个独立模型(exclusive model):

\[y^u = f^u (x^u)\]

…(4)

其中:

  • x, y, f分别表示inputs、outputs、以及模型
  • 上标u表示一个指定用户

在这样的scheme中,个性化在相应的模型中完全保留。不幸的是,由于用户数量庞大,上述提议是不可行的。一个可能的解决方案是:为每种类型的用户群组(比如:新用户、回流用户)建立相应的独立模型。一个具体的用户可以被视为各种用户群组的组合(例如,一个用户可以是一半不活跃用户和一半常规用户)。随后,我们可以将特定用户的预测分解为用户组预测的组合:

\[y^u = \sum\limits_{i=1}^N w_i f^{(i)}(x)\]

…(5)

其中:

  • i表示模型index
  • 我们有N个模型

实验上,很难生成\(w_i\)。作为替代,我们使用门控网络(gating networks)来从个性化特征中生成\(w_i\):

\[w_i = [g(x^{pc})]_i\]

其中:

  • pc表示个性化编码(Personalization Code),例如:标识用户群组的关键特征。

因此,我们仍然需要准备𝑁个独立模型来捕捉用户群组的兴趣,它是计算密集型的。我们方法的一个关键点是:我们会在中间模块(intermediate modules)上进行分解,并保持其余模块不变:

\[\widehat{x} = C \sum\limits_{i}^N [g(x^{pc})]_i f^{(i)}(x)\]

…(6)

其中:

  • f表示当前modules
  • $\widehat{x}$和 $x$是两相邻接layers的activations

注意,在g(x)的求和上没有限制,为了避免整体尺度漂移,我们使用了一个修正因子C

等式6展示了提出方法的原型。由于它将个性化引入了中间模块中,我们将它命名为““个性化冷启动模块(POSO)”。

POSO的设计会以下原则标记:Personalization。POSO会从两方面来解决淹没问题:

  • 1)通过分配多个模块(modules)和门控(gates)来均衡特征。尽管常规用户数据占主导地位,由于POSO会利用另一个集合的modules和gates来做出预估,因而新用户不会被忽略。
  • 2)当应用任何一层layer时,POSO都会通过原始特征来进行个性化(而非second-hand activations),这是很难通过self-learning(比如:MoE)技术达到的。

灵活性(Flexibilit)

请注意,POSO不是一个独立的模块,而是个性化现有模块的一种通用方法。POSO可以集成到许多现有方法中,并为它们提供个性化。接下来,我们将推导MLP、MHA和MMoE的个性化版本。我们也相信,当应用于其他未开发的模块时,它具有良好的前景。

无后效性(Non-aftereffect)

POSO的子模块共享相同的输入,它们的输出会被最终融合成单一的综合结果。这确保了结构上的独立性。上游模块和下游模块之间没有引入依赖关系。

4.1 线性变换的POSO

我们从最基础的module开始:线性转换;它被公式化成:\(f(x) = Wx\),其中:\(x \in R^{d^{in}}\)和\(\widehat{x} \in R^{d^{output}}\)。将公式替换成等式(6)给出:

\[\widehat{x} = C \sum\limits_{i=1}^N [g(x^{pc})]_i W^{(x)} x\]

…(7)

特别的,\(\widehat{x}\)的第p个entry为:

\[\widehat{x}_p = C \sum\limits_{i=1}^N \sum\limits_{q=1}^{d^{in}} [g(x^{pc})]_i W_{p,q}^{(i)} x_q\]

…(8)

其中:\(W_{p,q}^{(i)}\)指的是\(W^{(i)}\)在位置(p,q)的元素。尽管等式(8)引入了N倍的复杂度,足够自由的参数允许我们在灵活方法下进行简化。这里我们展示了一种简单但有效的方法。假设:\(N = d^{output}, W_{p,q}^{(i)} = W_{p,q} \forall p, q\)。。。我们有:

\[\widehat{x}_p = C \cdot [g(x^{pc})]_p \sum\limits_{q=1}^{d^{in}} W_{p,q} x_q\]

…(9)

或等价的:

\[\widehat{x} = C \cdot g(x^{pc}) \odot Wx\]

…(10)

其中:

\(\odot\)表示element-wise乘法。这种简单导致一个计算效率操作:通过个性化gates只在原始output上应用element-wise乘法。

4.2 MLP的POSO版

根据第4.1节中的相似派生,带activation funciton的个性化版本的FC设计如下:

\[\widehat{x} = C \cdot g(x^{pc}) \odot \sigma(Wx)\]

…(11)

其中,\(\gisma\)表示activation function。它表示了与LHUC的一个相似形式,它的hidden unit贡献被通过个性化gates(personalized gates)替代。

天然的,MLPs的个性化版本,称为:POSO(MLP),通过将personlized FCs进行stack来得到。它的框架如图3(a)所示。在表1中,我们描述了每个module的参数和FLOPs,并指出提出的modules是计算上高效的。

图片名称

图3 使用POSO的个性化模块:(a) POSO(MLP),会分别mask在每个layer中的每个activation (b) 在POSO(MHA)中,Q不是个性化的,K是轻量级个性化,V是完全个性化 (c) 在POSO(MMoE),个性化首先会被采纳,接着该output会feed特定的任务。POSO的所有modules通过黄色表示。

4.3 MHA的POSO版

在本部分,我们会生成Multi-Head Attention(MHA) module的POSO版本。我们首先考虑single head的公式:

\[\widehat{x} = softmax(\frac{QK^T}{\sqrt{d^h}})V\]

…(12)

通过将等式(12)代入等式(6)作为\(f^{(i)}\),我们有:

\[\widehat{x} = C \sum\limits_{i=1}^N [g(x^{pc})]_i (softmax(\frac{QK^T}{\sqrt{d^h}}) V^{(i)})\]

…(13)

该naive实现引入了multi-fold Q, K, V。尽管提升了该效果,它的计算开销很大。为了减少开销,我们会重新考虑Q, K, V的角色。

首先,Q包含了除历史行为的所有user features,因此它已经是高度个性化的。因此,我们只设置:\(Q^{(i)} = Q, \forall i.\)。另一方面,\(V^{i}\)涉及很少用户信息。考虑到V直接决定了output,我们会在multi-fold \(V^{(i)}\)上不作任何简化。我们注意到,使用multi-fold K会引入冗余的自由参数,因为由K和Q生成的attention weight要比K本身具有更低维。可选的,对于element-wise乘法的一个个性化gate \(G^k\)对于调整attention weight来说是足够的,例如:\(K^{(i)} = G^k (x^{pc}) \odot K\)。

至今,Q、K同时变得与i不相关,因而可以从求和中移除。等式(13)接着被简化为:

\[\widehat{x} = C \cdot softmax( )\]

…(14)

总之,我们会分别在三个levels上个性化components:对Q没有个性化,对K做轻量级个性化,对V做完全个性化。在三个tensors上的个性化也会遵循在 MHA中的角色。最终,对于multi-head的cases,每个head的outputs会concatenated一起来形成该representations。

提出的module被称为“POSO(MHA)”,它的framework如图3(b)所示。在我们的场景中,对比起原始版本的MHA,POSO(MHA)具有相当的复杂度(见表1),但有极好的效果。

4.4 MMoE的POSO版本

在本部分,我们描述了MMoE的POSO版本。将等式2代入等式6到:

\[\widehat{x}^t = C \sum\limits_{i=1}^N [g(x^{pc})]_i (\sum\limits_{j}^{N^e}[g^t(x)]_j e^{(j)}(x))\]

…(15)

其中:

  • i,j,t 分别索引了personalized gates、experts和tasks。

在等式15中,存在两个隐式约束:每个group的experts会共享个性化gate \(g^{(i)}\),每个group的\(g^t\)会通过softmax进行归一化。我们将该约束进行放松来简化该实现。首先,我们允许每个expert具有它自己的personalized gate。接着,我们实现了在所有task gates上的normalization。我们有:

\[\widehat{x}^t = C \sum\limits_{i=1}^N \sum\limits_{j=1}^{N^e} [g(x^{pc})]_{ij} [g^t(x)]_{ij} e^{(ij)}(x)\]

…(16)

其中:

  • \(g^t\)会通过(i, j)的所有pair进行归一化。

注意在等式(16)中,索引i和索引j会联合索引 experts。假设:\(\widehat{N} = N N^e\),我们可以对modules进行re-index,并重写上述的等式:

\[\widehat{x}^t = C \sum_{i=1}^{\widehat{N}} [g(x^{pc})]_i [g^t(x)]_i e^{(i)}(x) \\ g^t(x) = softmax(W^t x)\]

…(17)(18)

整体unit count \(\widehat{N}\)实际上是一个超参数,它可以被人工调节。在我们的实验中,我们设置成\(\widehat{N} = N\)来节约计算复杂度。

在等式(17)中,我们获得最终版本的personalized MMoE,称为:POSO(MMoE)。该实现相当轻量级(见表1):你可以保持MMoE的所有结构,并只要通过它的personlized gate来将每个expert进行mask,如图3(c)所示。

POSO(MMoE)如何提升experts的效果呢?在MMoE中,experts是task-aware的,但在样本上具有模糊知识。在POSO(MMoE)中,experts是个性化激活的(personlized activated):如果属于新用户的样本在\(g[\cdot]_i\)中生成更高的weight,相应的第i个expert会获得更高的学习权重,并变得对新用户更敏感,反之亦然。在这样的方式下,experts会变得specialized。我们可以说:experts不仅是task-aware,在user groups上也是field-aware的。在第5.6节中,我们会在MHA中对value矩阵的gating network outputs进行可视化。他们会被相似地进行larly speci

4.5 POSO对Cold start作用

现在,我们展示了如何POSO的知识,来缓解cold start问题。

User Cold Start

新用户被定义成:首个launch会发生在\(T_{du}\)个小时内的用户。对于user cold start,我们会利用一个细粒度feature来展示:对该用户有多少items会被曝光,例如: bucketized Accumulated View Count。该feature被feed到gating network g中作为PC。在每个module中,我们会为gating network保持相同的input,并增强个性化。

Item Cold Start

新item(video)的定义有两方面:

  • 1) 在\(T_{dv}\)天内上传的
  • 2)整体曝光数小于\(T_s\)

相似的,我们可以利用(exploit)video age来区分常规/新 视频。它仍能生成个性化,但从videos的视角。

在本paper中, gating network会由two-layer MLP组成,它的outputs会由sigmoid functions激活。

实验