facebook在2019的《Compositional Embeddings Using Complementary Partitions for Memory-Efficient Recommendation Systems》,提出了一种compositional embedding,并且在dlrm中做了实现,我们来看下具体的概念。

1.介绍

DLRMs的设计是为了处理大量categorical (or sparse) features的情况。对于个性化或CTR预估任务,categorical features的示例可以包括:users、posts、pages、以及成百上千的这些features。在每个categorical feature中,categories的集合可能会有许多多样性的含义。例如,社交媒体主页(socal media pages)可能包含的主题范围是:从sports到movies。

为了利用这些categorical信息,DLRMs利用embeddings将每个category映射到在一个embedded空间中的一个唯一的dense representation;见[2,4,5等]。更精确的,给定一个关于categories的集合S以及它的基数 \(\mid S \mid\),每个categorical实例会被映射到一个在一个embedding table \(W \in R^{\mid S \mid \times D}\)的indexed row vector上,如图1所示。我们不用预先决定embedding的weights,对于生成准确的模型,在neural network的其余部分对embeddings进行jointly training更有效。

每个categorical feature,可有具有数千万可能不同的categories(比如:\(\mid S \mid \approx 10^7\)),采用的embedding vector的维度为\(D \approx 100\)。在DLRM的training和inference期,由于存在大量的categories,每个table可能需要多个GBs进行存储,因此embedding vectors的数目构成了主要的内存瓶颈。

一种减小内存需求的天然方法是,通过定义一个hash函数(通常是余项函数:remainder function)来减小embedding tables的size,它可以将每个category映射到一个embedding index上,其中embedding size会比categories的数目要更小。然而,该方法会将许多不同的categories映射到相同的embedding vector上,从而导致在信息的丢失以及在模型质量上变差。理想情况下,我们应减小embedding tables的size,并且仍为每个category生成唯一的representation,从而尊重数据的天然多样性。

在本paper中,我们提出了一种方法,它通过对caegory set使用complementary partitions来生成compositional embeddings,来为每个categorical feature生成唯一的embedding。这些compositional embeddings可以与多个更小的embeddings交互来生成一个final embedding。这些complementary partitions可以从categorical data的天然特性中获取,或者人工强制来减小模型复杂度。我们提出了具体的方法来人工定义这些complementary partitions,并演示了在一个modified DCN以及Facebook DLRM networks在Kaggle Criteo Ad Display Chaalenge dataset上是有用的。这些方法很容易实现,可以在training和inference上同时压缩模型,无需其它额外的pre-或post-training处理,比hashing trick能更好地保留模型质量。

1.1 主要贡献

主要有:

  • quotient-remainder:。。。
  • complementary partitions:
  • 更好的实验效果:

2.商&余数 trick(QUOTIENT-REMAINDER TRICK)

回顾DLRM setup中,每个category会被映射到embedding table中的一个唯一的embedding vector上。数学上,考虑单个categorical feature,假设:\(\epsilon: S \rightarrow \lbrace 0, \cdots, \mid S \mid -1 \rbrace\)表示S的一个枚举(enumeration)(例如:一个categories集合S包括 S={dog, cat, mouse}, 接着S的一个潜在枚举enumeration:\(\ epsilon (dog)=0, \epsilon (cat)=1, \ epsilon (mouse)=2\)。假设\(W \in R^{\mid S \mid \times D}\)是相应的embedding matrix或table,其中D是embeddings的维度。我们可以使用\(\)e_i \in R^{\mid S \mid}\(\)将每个category(或者说:category \(x\in S\)具有index \(i=e(x)\))编码成一个one-hot vector,接着将它映射到一个dense embedding vector \(x_{emb} \in R^D\)上:

\[x_{emb} = W^T e_i\]

…(1)

另外,该embedding可以被解释成embedding table上的一个单行lookup,例如:\(x_{emb} = W_i,:\)。注意,这会产生一个\(O(\mid S \mid D)\)的内存复杂度来存储embeddings,当\(\mid S \mid\)很大时这会变得非常受限。

减小embedding table的naive方法是,使用一个简单的hash function[17],比如:remainder function,这称为hashing trick。特别的,给定一个size为\(m \in N\)(其中, \(m \ll \mid S \mid\))的embedding table,也就是说,\(\sim{W} \in R^{m \times D}\),你可以定义一个hash matrix \(R \in R^{m \times \mid S \mid}\):

\[\]

…(2)

接着,该embedding通过下面执行:

\[x_{emb} = \sim{W}^T Re_i\]

…(3)

该过程可以通过算法1进行归纳:

算法1

尽管该方法可以极大减小embedding matrix的size,由于\(m \ll \mid S \mid\), 从\(O(\mid S \mid D)\)减小到\(O(mD)\),它可以天然地将多个categories映射到相同的embedding vector,从而产生信息丢失以及模型质量上的下降。一个重要的observation是,该方法不会为每个unique category生成一个unique embedding,从而不会遵循categorical data的天然多样性。

为了克服这一点,我们提出了quotient-remainder trick。出于简洁性,m除以\(\mid S \mid\)。假以”"表示整除或商(quotient)操作。使用两个complementary functions(integer quotient function和remainder function),我们可以生成两个独立的embedding tables,对于每个category,两个embeddings组合起来可以生成unique embedding。如算法2所示。

算法2

更严格的,我们定义了两个embedding矩阵:\(W_1 \in R^{m \times D}\)和\(W_2 \in R^{(\mid S \mid/m) \times D}\)。接着定义一个额外的hash矩阵\(Q \in R^{(\mid S \mid /m) \times \mid S \mid}\):

\[\]

…(4)

接着,我们可以通过以下方式获取我们的embedding:

\[x_{emb} = W_1^T R e_i \odot W_2^T Q e_i\]

…(5)

其中,\(\odot\)表示element-wise乘法。该trick会产生一个\(O(\frac{\mid S \mid}{m} D + mD)\)的内存复杂度,它对比起hashing trick在内存上会有微小的增加,但可以生成unique representation。我们在第5节展示了该方法的好处。

3.COMPLEMENTARY PARTITIONS

quotient-remainder trick只是decomposing embeddings的一个更通用框架下的一个示例。注意,在 quotient-remainder trick中,每个操作(quotient或remainder)会将categories集合划分成多个”buckets”,以便在相同”bucket”中的每个index可以被映射到相同的vector上。然而,通过将来自quotient和remainder的两个embeddings组合到一起,可以为每个index生成一个distinct vector。

相似的,我们希望确保在category set中的每个element可以生成它自己的unique representation,即使跨多个partitions。使用基础的set theory,我们可以将该概念公式化成一个称为“complementary partitions”的概念。假设\([x]_p\)表示通过partition P索引的\(x \in S\)的等价类。

定义1: 。。。

作为一个具体示例,考虑集合 \(S=\lbrace 0,1,2,3,4 \rbrace\)。接着,以下三个set partitions是complementary:

1
{ {0}, {1,3,4}, {2} }, { {0,1,3}, {2,4} }, { {0,3}, {1,2,4} }

特别的,根据这些partitions中至少一个,你可以确认每个element与其它element是不同的。

注意,一个给定partition的每个等价类指定了一个“bucket”,它可以映射到一个embedding vector上。因而,每个partition对应到单个embedding table上。在complementary partitions下,在对来自每个partitions的每个embedding会通过一些操作进行组合之后,每个index会被映射到不同的embedding vector上,如第4节所示。

## 3.1 Complementary Partitions示例

使用complementary partitions的定义,我们可以抽象quotient-remainder trick,并考虑其它更通用的complementary partitions。这些示例会在附录中提供。出于简化概念,对于一个给定的\(n \in N\),我们定义了集合:\(\Epsiion(n) = \lbrace 0, 1, \cdots, n-1 \rbrace\)

(1) Naive Complementary Partition:

\[P = \lbrace \lbrace x \rbrace: x \in S \rbrace\]

如果P满足上式,那么P就是一个Complementary Partition。这对应于一个full embedding table,它的维度是:\(\mid S \mid \times D\)。

(2) Quotient-Remainder Complementary Partitions:

给定\(m \in N\),有:

\[P_1 = \lbrace \lbrace x \in S: \epsilon(x)\m=l \rbrace: l \in \epsilon(\lceil |S| /m \rceil) \rbrace && P_2 = \lbrace \lbrace x \in S: \epsilon(x) mod m = l \rbrace: l \in \epsilon(m) \rbrace\]

这些partitions是complementary的。这对应于第2节中的quotient-remainder trick。

(3) Generalized Quotient-Remainder Complementary Partitions:

对于\(i=1, \cdots, k\),给定\(m_i \in N\),以便\(\mid S \mid \leq \prod\limits_{i=1}^{k} m_i\),我们可以递归定义complementary partitions:

\[P_1 = \lbrace \lbrace x \in S: \epsilon(x) mod m = l \rbrace: l \in \epsilon(m_1) \rbrace && P_j = \lbrace \lbrace x \in S: \epsilon(x)\M_j mod m_j = l \rbrace: l \in \epsilon(m_j) \rbrace\]

其中,对于\(j=2, \cdots, k\), 有\(M_j = \prod\limits_{i=1}^{j-1} m_i\)。这会泛化qutient-remainder trick。

(4) Chinese Remainder Partitions:

考虑一个pairwise 互质因子分解(coprime factorization),它大于或等于\(\mid S \mid\),也就是说,对于所有的\(i=1,\cdots,k\) 以及\(m_i \in N\), 有 \(\mid S \mid \leq \prod_{i=1}^{k} m_i\);以及对于所有的\(i \neq j\),有\(gcd(m_i, m_j)=1\)。接着,对于\(j=1,\cdots,k\),我们可以定义该complementary partitions:

\[P_j = \lbrace \lbrace x\inS: \epsilon(x) mod m_j = l \rbrace: l \in \Epsilon(m_j) \rbrace\]

具体取决于application,我们可以定义更专门的 complementary partitions。回到我们的car示例,你可以基于year、make、type等来定义不同的partitions。假设这些属性的unique specificiation会生成一个unique car,这些partitions确实是complementary的。在以下章节,我们会演示如何来利用这些结构减小内存复杂度。

4.使用complementary partitions的compositional embeddings

在第2节对我们的方法进行泛化,我们可以为每个partitions创建一个embedding table,以便每个等价类可以被映射到一个embedding vector上。这些embeddings可以使用一些operation进行组合来生成一个compositional embedding或直接使用一些独立的sparse features(我们称它为feature generation方法)。feature generation方法尽管有效,但可以极大增加参数数目,需要增加额外features,并没有利用其内在结构,即:complementary partitions可以从相同的initial categorical feature中形成。

更严格的,考虑一个关于category set S的complementary partitions的集合:\(P_1,P_2,\cdots,P_k\)。对于每个partition \(P_j\),我们可以创建一个embedding table \(W_j \in R^{\mid P_j \mid \times D_j}\),其中,由\(i_j\)索引的每个等价类\([x]_{P_j}\)被映射到一个embedding vector中,\(D_j \in N\)是embedding table j的embedding维度。假设:\(p_j: S \rightarrow \lbrace 0, \cdots, \mid P_j\mid -1\)函数可以将每个element \(x \in S\)映射到相应的等价类的embedding index上,比如:\(x \rightarrow i_j\)。

为了泛化我们(operation-based)的compositional embedding,对于给定的category,我们会将来自每个embedding table与对应的所有embeddings交叉,来获得final embedding vector:

\[\]

…(6)

其中,\(w: R^{D_1} \times \cdots \times R^{D_k} \rightarrow R^D\)是一个operation function。operation function的示例包括:

  • 1) Concatenation:
  • 2) Addition:
  • 3) Element-wise Multiplication:

你可以看到,这些方法会为在简单假设下的每个category生成一个unique embedding。我们可以看到,在以下理论中。出于简洁性,下文的讨论仅限concatenation操作。

定理1

该方法会将存取整个embedding table \(O(\mid S \mid D)\)的内存复杂度减小到\(O(\mid P_1 \mid D_1 + \mid P_2 \mid D_2 + \cdots + \mid P_k \mid D_k)\)。假设\(D_1 = D_2 = \cdots = D_k = D\)并且\(\mid P_j \mid\)可以被专门选中,该方法会生成一个最优的内存复杂度\(O(k \mid S \mid ^{1/k} D)\),这对于存储和使用full embedding table是一个明显提升。该方法在图2中可视化。

4.1 Path-Based Compositional Embeddings

生成embeddings的另一个可选方法是,为每个partition定义一个不同的transformations集合(除了第一个embedding table外)。特别的,我们可以使用单个partition来定义一个initial embedding table,接着,将initial embedding通过一个函数组合来传递来获取final embedding vector。

更正式的,给定一个category set S的complementary partitions集合:\(P_1, P_2, \cdots, P_k\),我们可以定义一个embedding table \(W \in R^{\mid P_1 \mid} \times D_1\)来进行第一次划分(partition),接着为每一个其它partition定义函数集合\(M_j = \lbrace M_{j,i}: R^{D_{j-1}} \rightarrow R^{D_j}: i \in \lbrace 1, \cdots, \mid P_j \mid \rbrace \rbrace\)。在这之前,假设:\(p_j: S \rightarrow \lbrace 1, \cdots, \mid P_j \mid \rbrace\)是这样的函数:它将每个category映射到embedding index对应的等价类上。

为了为category \(x \in S\)获得embedding,我们可以执行以下transformation:

\[x_{emb} = (M_{k,p_k(x)} \degree \cdots \degree M_{2,p_2(x)}) (W e_{p_1(x)}\]

…(7)

我们

参考

facebook在2019的《Mixed Dimension Embedding with Application to Memory-Efficient Recommendation Systems》,提出了一种mixed dimension embedding,并且在dlrm中做了实现,我们来看下具体的概念。

2.背景

我们主要关注explicit CF和CTR预估这两块。在explicit CF中,特定items的user ratings会被直接观测到,因此,它可以被看成是一个矩阵补全问题(matrix complition problem)。在解决矩阵补全问题时,embedding-based的方法(比如:MF、NCF)是流行的高效解法。它的核心是,使用一个convex relaxation来发现最小的nuclear norm solution。它需要求解一个半正定的program,时耗是\(O(n^4)\),因而不能扩展到real-world应用中。作为替代,embedding/factorization方法具有明显缺点:显式需要一个embedding dimension,但实际上,这可以使用cross-validation或其它超参数tuning技术求解。在CTR预测任务中,我们会预测一个click的概率,它可以被看成是只有二元rating的context-based CF。最近该领域开发了许多模型。这些state-of-the-art的模型会具有许多相似的特征,他们无一例外都使用内存密集型(memory-intensive) embedding layers来简化模型其余部分。

在现代ML中,embeddings通常会用来表示categorical features。embeddings vectors会从数据中进行挖掘,由vectors表示的categorical概念间的特定语义关系可以通过spatial或geometric关系、以及vectors的属性来编码。因而,large embeddings是推荐系统的天然选择,它需要模型来理解users和items间的关系。

目前开发了许多技术来减小由embedding layers消耗的内存量。他们可以被划分成两类:

  • (i) 压缩算法(compression algorithms)
  • (ii) 压缩结构 (compressed architectures)

在标准训练之前,压缩算法通常会涉及到对模型进行一些额外处理。它们可以离线(只涉及到post-training处理)或在线执行(压缩处理会交太、或者部分变更训练处理)。简单的offline压缩算法包括:post-training quantization、pruning或low-rank SVD。模型蒸馏技术(比如:compositional coding)和neural binarization也是一种复杂的离线压缩方法,其中:autoencoders会被训练成mimic uncompressed、pre-trained embedding layers。在线压缩算法包括:quantization-aware training、gradual pruning、以及periodic regularization。我们注意到,许多这些压缩算法对于embedding layers是不唯一的,在模型压缩文献中被广泛使用。

另一方面,我们也可以压缩结构,它尝试使用更少的参数来构建关于可比静态质量(comparable statistical quality)的embedding representations。压缩结构的优点是,inference时不只可以减小内存需要,在training时也可以。该方法遵循hashing-based和tensor factorization方法,它们可以以多种方式通过re-using参数来减小在一个embedding layer上使用的参数数目。我们的方法与这些技术不同,我们基于embedding popularity来对embedding vectors的维度进行非统一(non-uniform)reduction。原则上,我们提出的技术与大多数其它压缩算法或压缩结构的方法可以混合使用。这是未来的一个方向。

最终,我们注意到,non-uniform和deterministic sampling在矩阵补全文献中有提出【37】,同时也包括:纠正popularity来提升statistical recovery performance,或者在non-uniform sampling下为completion提供理论保证。据我们所知,我们是第一个利用popularity来在大规模embedding layers中实际减小参数数的。

4.Mixed Dimension Embedding Layer

我们开始定义MD embedding layer,并讨论如何将它应用于CF和CTR预测任务上。

假设一个mixed dimension embedding layer $\bar{E}$ 包含了k+1个blocks,它可以通过2k+1个matrices来定义:

\[\bar{E} = (\bar{E}^{(0)},\bar{E}^{(1)}, \cdots, \bar{E}^{(k)}, P^{(1)}, \cdots, P^{(k)})\]

…(4)

其中,

  • $\bar{E}^{(i)} \in R^{n_i \times d_i}$
  • $P^{(i)} \in R^{d_i \times d_0}$,其中$P^{(0)} \in R^{d_0 \times d_0}$是显式定义

假设这些blocks的维度是固定的。接着,对于一个MD embedding layer的forward propagation,会采用一个范围在(1, \(n=\sum_{i=0}^k n_i\))的index x,并产生一个如算法1所定义的embedding vector \(e_x\)。在该算法中涉及到的steps是可微的,因此我们会通过该layer执行backward propagation,并在训练期间更新matrices \(\bar{E}^{(i)}\)和 \(P^{(i)}\)。我们注意到算法1可以被泛化成支持multi-hot lookups,其中对应于一些z query indices的embedding vectors会被取到(fetched),并通过一个可微操作符(比如:add, multiply, concatenation)进行recude。

图片名称

算法一

注意,我们会为除了第一个embedding matrix之外的所有embeddings返回投影embeddings(projected embeddings),所有的embedding vectors \(e_j\)会具有相同的base dimension \(d:= d_0\)。因此,基于一个mixed dimension embedding layer的模型应根据\(\bar{d}\)来确定size。我们在图2中展示了mixed dimension embedding layer的矩阵结构,它具有两个blocks,其中,由uniform或mixed dimension matrices的参数预算(parameter budget(总区域))是相同的,但内存分配不同。

图片名称

图2 Uniform和Mixed Dimension Embedding layers的matrics结构

接着,我们看下如何来在mixed dimension结构中寻找block结构。这包括了:在mixed dimension embedding layer中分配给每个block的行数(row count)\(n_i\)、以及维度(dimension)\(d_i\)。我们使用流行度信息(popularity information)来界定(sizing)mixed dimension embedding layer的大小(例如:访问一个特定feature的频率f;假设这里在training和test样本间大部分一致)。我们注意到,你可以使用一个与importance相关但不同的概念:它指的是一个特定的feature通常是如何统计信息给target variable的inference的。Importance可以通过domain experts或在训练时通过data-driven的方式来决定。

4.1 Mixed Dimensions的Blocking Scheme

从一个uniform dimension embedding layer转成一个mixed dimension layer,存在一些延续性。通过使用合理的re-indexing,多个embedding matrics可以被stack成单个block matrix,或者单个embedding matrix可以通过row-wise的形式划分(partitioned)成多个block matrices。partitioned blocking scheme的关键是,将n个total embedding rows映射成blocks,其中,block-level row counts通过\((n_0, \cdots, n_k)\)和offset vector \(t \in N^{k+1}\)给出,有:

\[t_i := \sum_{j=0}^{i-1} n_j\]

Blocking for CF

在CF任务中,我们只有两类features——分别对应于users和items,对应的embedding matrices分别为:

  • \[W \in R^{n \times d}\]
  • \[V \in R^{m \times d}\]

为了对mixed dimension embedding layer定大小,我们会使用mixed dimensions,它使用单独的embedding matrices来对它们进行划分。

  • 首先,我们基于row-wise frequency来对rows进行排序(sort)和re-index:满足\(i < i' \rightarrow f_i \geq f_{i'}\)(即:索引i越小,频率越大)。
  • 接着,我们将每个embedding matrix划分成k+1个blocks,以便每个block内的total popularity(AUC)是常数,如算法2所示。

对于一个给定的frequency f,k等分(k-equipartition)是唯一的,并且很容易计算。在我们的实验中可以看到,对于观察到由mixed dimensions带来的效果,以及这之外的递减效应(diminishing effect),在(8,16)范围内的任意地方设置k是足够的。

图片名称

算法2

Blocking for CTR prediction

在CTR预测任务中,我们有一些categorical features,以及k+1个相对应的embedding matrics: \(E^{(i)} \in R^{n_i \times d}\)。对于ctr prediction应用,为了界定MD embedding layer的size大小,我们会跨不同的embedding matrices上使用mixed dimensions来对它们进行stacking。因此,该问题结构定义了blocks数;在每个original embedding中的vectors数目定义了在md embedding layer中相应block的行数(row counts)\(n_i\)。

4.2 popularity-based mixed dimensions

假设在md embedding layer \(\bar{E}\)的每个block中的vectors数目\(n_i\)是已经固定的。因此,它只分配了维度\(d:=(d_0, \cdots, d_k)\)来完全指定它。

我们提出了一个popularity-based scheme来在block-level上操作,它基于这样一个heuristic:每个embedding应分配一个与它的popularity的一些分数幂(fractional power)成比例的维度

注意,这里我们会将block-level probability p与row-wise frequency f进行区别。给定f,我们将\(a_i = \sum\limits_{j=t_i}^{t_{i+1}} f_j\)定义成:在区间\([t_i, t_{i+1}]\)间的frequency curve的面积,其中总的\(\tau = \sum\limits_{j=0}^n f_j\)。

接着,我们假设:block-level probability vector \(p \in R^{k+1}\)通过它的elements \(p_i=a_i/\tau\)来定义。我们将算法3中的popularity-based scheme进行公式化,使用一个额外的超参数temperature \(a > 0\)。

图片名称

算法3

提出的技术需要知道probability vector p,它管理着feature popularity。当这样的分布是未知的,我们会很容易使用来自数据样本的经验分布来替代它。

可选的,我们可以将\(\lambda \leftarrow B(\sum_i p_i^{a-1})^{-1}\)设置成:将 embedding layer sizeing的大小限制到一个total budget B上。更进一步,为了获得crisp sizing,可以使用round d,可能是2的最近幂,在应用算法3后。

注意,我们最终会具有所有的tools来对MD embedding layers进行size,同时使用算法1-3对它们进行forward和backward propagation。

参考

yahoo在2019年《Soft Frequency Capping for Improved Ad Click Prediction in Yahoo Gemini Native》提出了Soft Frequency Capping的技术。我们来看下:

1.介绍

yahoo的本地广告市场(native ad marketplace)(称为“Gemini native”)会提供给用户相应的广告:通过周围的本地内容进行重组后进行渲染(如图1所示)。对比搜索广告市场,用户意图通常是未知的。5年前启动,现在操控着每天数十亿美金的运行率,Gemini native是Yahoo的主要业务之一。每天超过20亿次曝光,数十万的active ads的库存,该市场会执行实时GSP(generalized second price)竞拍,会考虑:广告定向(ad targeting),预算考虑,频控规则(frequency)和近因原则(recency rule),以及服务等级协议SLA(或latency)小于80ms的超过99%。

为了对在CPC价格类型特定context下的一个用户对本地广告进行排序,会为每个广告计算一个score(或expected revenue):通过将广告主竞价 乘以 pCTR来得到。尽管Gemini native会处理其它价格类型,比如:oCPC,本文主要关注CPC价格类型。

pCTR会通过使用周期更新的模型“OFFSET”来计算:它是一个A feature enhanced collaborative-filtering (CF) based event-prediction algorithm。OFFSET是一个one-pass算法,它会为每个新的mini-batch的logged data使用SGD-based的学习方法来更新它的latent factor model。OFFSET的实现使用map-reduce架构,其中每个新的mini-batch的logged data会被预处理,通过许多mappers进行并行解析,模型实例的持续训练会通过多个reducers并行完成。

OFFSET通过他们的特征(age、gender、geo等)来表示它的用户,其中每个feature value(对于性别有:female、male或者unknown)通过一个latent factor vector(LFV)进行表示。一个用户的LFV通通应用一个non-linear function,它允许pairwise feature的依赖。由于OFFSET是一个user-less模型,一个特定用户观看一个特定广告(或frequency feature)的次数不能仅仅通过记录下来的曝光进行捕获。另外,frequency即不是一个user feature,也不是一个ad feature。因此,为了阻止用户重复观看同一个广告,基于硬频率捕获(HFC:hard frequency capping)的规则会在ad ranking过程被用于serving系统中。总之,用户在预定义的周期内观看一个ads超过预定义次数,会从ranked list中移除,不允许参与竞价。

从观测看,展示CTR会随着重复ad观看次数下降(15、17),在本工作中,我们会考虑一种新方法:通过模型将它看成是一种user-ad feature来处理频次。根据该方法,称为(SFC:soft frequency capping),对于每种曝光,frequency feature会通过user-ad pair进行计算,并用于训练一个frequency weight vector作为OFFSET SGD的一部分。在serving时,会根据incoming impression的frequency feature挑选合适的weight,并叠加到OFFSET score上。正如我们所见,frequency weight vector,产生的pCTR会随着frequency递减,表示用户对于重复观察相同的ads会厌倦。提出的方法在离线和在线评估上,对比SFC和HFC,表现出一个令人吃惊的效果提升。特别的,我们在在线实验服务真实用户时,获得一个7.3%的收益提升。SFC会增强OFFSET model,传到真实生产中,它会服务所有的Gemini native流量。我们也提供了关于frequency feature的统计,展示了不同人群在点击趋势。总之,在许多setting中会观察到“user fatigue(用户厌倦)”,因为CTR会随着频率特征的增加而递减。在许多特定的observation reveal中,男性和妇性用户体验相似的ad fatigue patterns,在观察5次广告后,在age group 50-60的群体上比group 20-30的群体的fatigue的两倍。

。。。 略

2.背景

2.1 Gemini Native

Gemini native是Yahoo主业务之一,。。。。

2.2 OFFSET Click-Prediction算法

Gemini native模型的算法是OFFSET:a feature enhanced collaborative-filtering (CF)-based ad click-prediction algorithm[2]。对于一个给定用户u的pCTR和一个ad a,会有:

\[pCTR(u, a) = \sigma(s_{u,a}) \in [0, 1]\]

…(1)

其中:\(\sigma(x) = (1+e^{(-x)})^{-1}\)是sigmoid function,

4.FREQUENCY FEATURE

Yahoo users的日志活动会包括native ad impressions,从中我们可以抽取和计算frequency,例如:一个指定用户在一个预定义周期内看到一个特定ad的次数。我们可以计算每个ad featrure的frequency(例如:创意广告、campaign、或advertiser)。因此,在设置后,ad feature \(A_f\)、时间周期\(T_f\),我们可以提供每个user u以及每个ad a相应的frequency featrue \(f_{u,a}(A_f, T_f)\)(或者简单些:\(f_{u,a}\))。注意,通过定义,frequency feature是一个非负整数\(f_{u,a} \in N^{+}\)。

示例:假设user u看了三个广告\(a_1, a_2, a_3\),每个ad \(a_i\)具有ad features:advertiser \(Ad_i\)、campaign \(C_{a_i}\),creative \(Cr_i\),另外,假设这是在星期六晚上,刚好在午夜后,user u的Gemini native在最近一周的天活动日期如表1所示(从左到右)。下面给出了不同settings下的frequency feature的一些值:

\[f_{u,a_1} (camp., last day) = 2; f_{u, a_1} (adver., last day) = 3 \\ f_{u,a_2} (camp., last week) = 5; f_{u, a_2} (adver., last day) = 5 \\ f_{u,a_3} (camp., last 4 days) = 2; f_{u, a_3} (adver., last week) = 5\]

5.统计与观察

在该节,我们提出一些关于frequencey的统计和观察。最重要的,我们展示了,frequency feature是很重要的,它对CTR具有重要影响。我们聚合了30天内的统计。它包括数十亿impression和clicks。我们注意到,当SFC方法包含在OFFSET中时,这里所使用的data会被收集,用于服务所有流量。

Global view(全局视角)

在图3中,平均归一化CTR,曝光数 CDF(cumulative density function),一个特定用户关于一个特定广告的观看数v(或frequency)会绘制成关于曲线。注意:v=0意味着,在这些曝光中,用户从未观看过在这之前的广告。 对于v次views的测算,normalized CTR可以通过除以average CTR来计算;对于v=0 (之前无views),可以通过平均CTR进行测算:

\[CTR_n(v) = \frac{CTR(v)}{CTR(0)}; v=0,1, \cdots, 50\]

注意,在两个曲线上,最后一点包括了对于v>=50以上所有聚合的measurements。

从图上检查,可以做出许多observations。我们抛开异常点v=25,CTR会随着观看次数(频次)进行单调递减。特别的,在只有单一past view之后,平均CTR会以20%下跌,在7次views之后几乎有50%。这是个很清晰的证据表明:用户被展示相同广告多次后的快速厌倦。然而,CTR下降率会随着views次数递减,并且曝光数会随着frequency递减(忽略最后一个点,它包含了v>=50以上的所有曝光)。特别的,47%的曝光是之前从未看过的广告(v=0),对于见过一次的广告(v=1)只有10%,见过两次的广告(v=2)只有6%。

性别视角(Gender view)

在图4中,normalized CTR和曝光CDF会为男性、女生、未知性别的frequency函数进行给制。Gemini native流量对于表2中的每种性别都是共享的。令人吃惊的是,男性用户要比妇性用户多。性别不确定是因为注册用户未标注性别。曝光CDF曲线会提供后续支持,70%的未知用户曝光是之前从未见过的广告(v=0),而男性、女性只有40%这样的曝光。

如图所示,我们注意到frequency在男性、女性用户上具有相同的效应,具有几乎相同的厌倦模式。然而,未知用户行为却很不同,对于广告重复次数具有更高的容忍度。对于这些用户的这样行为的一个合理解释是,这些用户很可能是未注册用户,到达Yahoo时,来自外部搜索或社交媒体网站,比起注册用户来说具有一个相当不同的体验。

图4

年龄组视角(Age group view)

类似。

Yahoo vertical view

6.我们的目标

采用一种soft frequency capping方法,通过将frequency fearure包含到OFFSET模型中。提出的解决方案,对比起HFD可以被优化来提供最佳的offline和online效果。

7.SOFT FREQUENCY CAPPING

总览, frequency feature可以是一个特定用户在某个预定义时间周期\(T_f\)(例如:last day、last week、last month)内对某个特定ad feature \(A_f\)(创意creative、广告campaign、广告主advertiser)的。

总之,我们将frequency feature看成是一个user-ad feature,其中我们会学习一个frequency weight vector(s),对应于一个预定义的weights category参数\(W_c\),它决定了我们是否具有单个全局的vector 或对于每个campaign or 每个advertiser具有一个独立的vector。

特别的,对于每个incoming train事件 {(u, a, y, t)},feature value \(f_{a,u}(A_f, T_f)\)会进行分箱操作(binned),乘以合适的frequency weight vector的对应entry,并加上OFFSET score。frequency weight vectors会通过SGD使用user和ad features进行学习,label 为y(click或skip)。在serving time中,frequency weight vectors被用作OFFSET model的一部分来计算pCTR,并用于竞价。

公式描述

SFC方法如算法1描述。

为什么要binning?作为binning based方法的另一种选择,我们会使用一个线性回归来进行additive frequency weight:

\[s_{u,a}^' = s_{um,a} + c_a \cdot g(f_{u,a})\]

其中,\(c_a\)是一个weight,它可以被全局学到,每个campaign、或每个advertiser均有,\(g(\cdot)\)是一个arbitrary function。使用一个weight vector(每个bin具有一个weight entry)的优点是,我们不必假设:一个特定依赖(例如:\(g(\cdot)\))会提供最好的效果,我们让模型来决定最好的拟合(fit)。在我们的case中,不存在缺点,因为frequency fearture可以具有非负整数值,可以避免量化错误( quantizatio errors)。

期望的影响(Expected impac)

直觉上,这种方法的影响可以限制分数:对于相同用户对同一个ad出现重复观看。然而,理论上的考虑表明,这样的影响实际会强加给一个广告的首次views。

当我们使用HFC时,predictive model的得分会忽略:frequency会趋向于首次曝光和重复曝光的一个平均CTR。由于重复曝光会具有更低的CTR,这些得分会比首次view具有更低的CTR。添加SFC可以使得pCTR在首次view时具有更高的CTR,之后的views会随着SFC weights进行递减。因此,会接收许多次views的广告(ads)得分不再随这些views减小,从而它们的首次views的点击预测会更准确,之后的views也更准确。

8.效果评估

本节我们会进行在线、离线评估。

注意,由于记录的数据会被用于评估模型,很明显地,通过其它方式来产生结果是不可能的。该 警告在papers中很常见。

8.1 离线评估

为了评估离线效果,我们训练了两个offset models,一个使用SFC,如第7节所描述,其它没有frequency capping,作为baseline。我们会从头运行这些模型,其中,所有模型参数会被随机初始化,它会在一个月的Gemini native 数据上进行训练,包括了数十亿次曝光。

由于技术限制,我们使和以下的binning vector,它具有26个bins:

\[B_{26} = [0:1), [1:2), \cdots, [25, \infity)\]

另外,我们会测试SFC算法参数的多个组合,并找到最好的setup来使用campaign作为ad feature(\(A_f = campaign\)),并在last week(\(T_f=week\)上聚合views),并使用一个global weight vector(\(W_c=global\)),它会消除一些稀疏性。我们使用sAUC和LogLoss metrics来评估离线效果,在应用效果metrics之前,每次曝光会被用来训练系统。OFFSET hyper parameters,比如SGD step size和正则系数,会通过adaptive online tuning机制进行自动决定。

效果指标

Area-under ROC curve(AUC):AUC指定了概率,给出两个随机事件(一正一负,点击或跳过),以及预测的pairwise ranking是正确的。

Stratified AUC (sAUC):每个Yahoo section的AUC的平均加权(通过postive event,例如:点击数),该metric的使用是因为:不同Yahoo sections会具有不同的prior click bias,因此,单独使用section feature对于达到更高AUC values来说被证明是充分的。

LogLoss

\[\sum\limits_{(u,a,y,t) \in T} -y log pCTR(u,a) - (1-y) log(1 - pCTR(u,a))\]

其中,\(T\)是一个training set,\(y \in \lbrace 0, 1\rbrace\)是postive event indicator(例如:click或skip)。我们注意到,LogLoss metric会用于优化OFFSET model参数以及它的算法超参数。

结果:LogLoss和sAUC的提升会随时间进行绘制,在图7上,对于一个使用binning vector \(B_{26}\)训练的OFFSET model,最好的SFC算法参数是:\(A_f=campaign, T_f=week, W_c=global\),其中每个点表示了数据3小时价值。从图中看出,SFC model的优点是,所有提升都是正向。特别的,在last week训练上我们在LogLoss上有平均1.02%的提升,在sAUC上有0.83的提升。我们注意到,对于一个成熟算法来说,要达到这样的高accuracy提升,需要持续优化数年,这相当令人印象深刻。

为了达到这部分,我们将产生的全局campaign frequency weight vector如图8所示。weights 会随着frequency单调递减,其中,最后一点会包含所有大于v=25的frequency,它在曲线最下会掉落。后者会造成pCTR在该区域不准确,例如:\(f_{u,a}=25\)的under-prediction以及对\(f_{u,a} >> 25\)的over-prediction。由于我们具有较少的events,并具有更高的frequencies(如图3所示),这表明整体平均效果是under-prediction的。

统计异常解释

异常包含了在nCTR的小“jump”,它会“破坏”nCTR随frequency的单调递减性,这会发生在v=24和v=25间。如上所述,当SFC集成到offset中时,会使用binning vector \(B_{26}\)中的\([25, \infity)\)作为最后一个bin,进行收集统计信息。在之前的paragraph中,这会造成一个整体under-prediction effect在该区域的下降。由于statistics会被收集来进行auction wining events,我们会获得in-spite。

参考

摘要

MAB framework(Multi-Armed Bandit)已经被成功应用到许多web应用中。然而,许多会涉及到内容推荐的复杂real-world应用不能满足传统的MAB setting。为了解决该问题,我们考虑一个ordered combinatorial semi-bandit问题,其中,learner会从一个包含K actions的base set中推荐S个actions,并在S(超过M)个不同的位置展示这些结果。目标是:在事后根据最可能子集和位置来最大化累积回报(cumulative reward)。通过采用minimum-cost maximum-flow network(最小费用最大流网络),基于thompson sampling的算法常用于(contextual)组合问题中,以解决这个组合难题。它可以潜在与whole-page推荐以及任意概率模型一起工作,来说明我们方法的高效性,我们主要关注Gaussian process optimization以及一个contextual setting,其中ctr使用lr进行预测。我们演示了该算法在synthetic Gaussian process问题上的效果,以及在Yahoo!首页的Today Module的大规模新闻推荐数据集进行了验证。

1.介绍

我们使用新闻推荐作为示例。图1是一个portal website的snapshot。在该view中,存在6个slots来展示新闻推荐。这些slots在positions、container sizes以及visual appearance上都不同。一些研究表明:用户不会顺序扫描webpages[Liu 2015, Lagun 2014]。如何作出whole-page推荐,也就是说,从一个更大池子中选择6篇文章,并将它们放置在webpage上,这是一个在ranking之外的组合问题(combinatorial problem)。我们的目标是,寻找一个最优的布局配置(layout configuration)来最大化期望的总CTR。这个主题也有相关工作(Wang 2016),然而搜索引擎以real-time方式工作,它们的模型在batch data上训练(而非online learning的方式),因而忽略了exploration/exploitation tradeoff。

一些已经存在的工作使用multi-plays来解决bandits,例如:

  • subset regret problem(Kale 2010..)
  • batch mode bandit optimization with delayed feedbackes(Desautels 2014)
  • ranked bandits(Radlinski 2008)

这类learning问题也被看成是一个combinatorial bandit/semi-bandit (Gai 2013)。然而,我们示例中的复杂combinatorial setting难度超出了这些方法。

为了建模这种场景,我们考虑如下的rodered combinatorial bandit问题。给定最优的context信息,而非选择一个arm,learner会选择一个关于S个actions的subset,并从M个可能位置上在S个不同位置对它们进行展示。我们的新颖性有:

  • 1.我们的方法不会求助于其它方法来提供近似解。相反,我们会将该问题通过mcmf network进行公式化,并有效提供精确解(exact solutions)
  • 2.据我们所知,我们的模型会处理通用的layout信息,其中positions的数目可以大于选中arms的subset数,例如:S < M.
  • 3.我们会使用Thompson sampling作为bandit实例。Thompson sampling的一个优点是,不管随机reward function有多复杂,它在计算上很容易从先验分布进行抽样,并在所抽样参数下选择具有最高reward的action。因此,它可以潜在与任意probabilisitic user click模型一起工作,例如:Cascade Model和Examination Hypothesis。

图1

2.问题设定

由于position和layout bias,很合理假设:对于每篇文章和每个position,存在与(content, position) pair相关联的一个ctr,它指定了用户对于在一个特定position上展示的内容的点击概率。在一个序列rounds(\(t=1,2,\cdots, T\))上,learner需要从关于K个actions的一个base set A中选中S actions来在S(小于M)个不同positions上展示,并接受到一个reward:它是在选中subset中关于(action,position) pair的rewards的总和。对于每个展示的(content, position) pair,所有回报(payoff)会被展示。该feedback model被称为“semi-bandits”(Audiber, 2013)。我们可以根据该方法来展示建模关于selected arms中subset的positions,我们称该setting为“ordered combinatorial semi-bandits”。

Ordered(Contextual) Combinatorial Bandits

在每个round t,learner会使用一个(optional)context vector \(x_t\)展示。为了考虑layout信息,会为每个(action, position) pair (k, m)构建一个feature vector \(a_{k,m}\)。该learner会从A中选择S个actions来在S(小于M)个不同positions进行展示。因此,一个合法的combinatorial subset是一个从S个不同actions到S个不同positions的映射;或者更简单地,它是一个one-to-one映射 \(\pi_t : \lbrace 1,2,\cdots, S\rbrace \rightarrow (A, \lbrace 1,2,\cdots, M \rbrace)\)。我们接着将每个\(\pi_t\)看成是一个super arm。该learner接着为每个选中的(action, position) pair接收 reward \(r_{\pi_t(s)} (t)\)。round t的总reward是每个position \(\sum\limits_{s=1}^{S} r_{\pi_t(s)}(t)\)的rewards总和。目标是:随时间最大化expected cumulative rewards \(E[\sum_{t=1}^T \sum_{s=1}^S r_{\pi_t(s)}(t)]\)。

contextual conbinatorial bandits的一个重要特例是,context-free setting:它对于所有t来说,context \(x_t\)是个常量。通过将S, K设置成特殊值,许多已经存在的方法可以被看成是我们的combinatorial bandits setting的特例。例如:S=1等价成传统的contextual K-armed bandits。如果我们将K=1设置成dummy variable,并将N个positions看成是actions,我们的combinatorial bandit问题会退化成为unordered subset regrets问题(Kale 2010)。bandit ordered slate问题以及ranked bandits可以看成是S=M的特例。我们的setting不局限于l2r,足够通用可以对whole-page presentation进行optimize。

3.Thompson Sampling

在(contextual) K-armed bandit问题中,在每个round会提供一个最优的context信息x。learner接着会选择一个action \(a \ in A\)并观察一个reward r。对于contextual bandit问题,Thompson Sampling在Bayesian setting中是最容易的。每个过往observation包含了一个三元组\((x_i, a_i, r_i)\),以及reward的likelihood function,通过参数形式\(Pr(r \mid a, x, \theta)\)在参数集\(\Theta\)上进行建模。给定一些已知的在\(\Theta\)上的先验分布,这些参数的后验分布基于过往observations通过Bayes rule给出。在每个time step t上,learner会从后验中抽取\(\hat{\theta}^t\),并基于抽取的\(\hat{\theta}^t\)选择具有最大expected reward的action,如算法1所示。

4.Orderd Combinatorial Semi-Bandits算法

由于Thompson sampling对于复杂reward functions的灵活性,我们的主要算法思想使用它来进行ordered semi-bandits。

在每个round t,ordered combinatorial semi-bandit问题涉及到:从一个K actions的集合A中选中S个actions,并在S个不同positions上进行展示,并收到一个reward(所选subset的reward和)

一个naive方法是,将每个复杂的组合看成是一个super arm,并使用一个传统的bandit算法,它会在所有super arms上枚举values。由于super arms的数目会快速膨胀,该方法具有实际和计算限制。

假设每个context x以及(action, position) pair \(a_{k,m}\)的reward的likelihood function以\(Pr(r \mid x,a,\theta)\)的参数形式建模。下面三部分会开发thompson sampling的特殊变种,它们可以有效找到最优mapping \(\pi_t^*: \lbrace 1,2, \cdots, S \rbrace \rightarrow (A, \lbrace 1,2,\cdots, M \rbrace)\),使得:

\[\pi_t^* \in argmax_{\pi_t} \sum_{s=1}^S E[r \mid a_{\pi_t(s), x_t, \hat{\theta}^t]\]

…(1)

将action selection看成是一个约束优化(constrained optimization)

为了找到最佳的super arm \(\pi_t^*\),等式(1)中没有enumeration,我们首先定义:每个(action, position) pair的的expected reward为 \(E[r \mid a_{k,m}, x_t, \hat{\theta}^t]\) 。其中:对于在position \(p_m\)上展示action \(a_k\),给定context \(x_t\)以及采样参数\(\hat{\theta}^t\)。。。。我们也定义了指示变量\(f_{k,m}\)来表示action \(a_k\)是否会在position \(p_m\)上被展示,\(f_{k,m} \in \lbrace 0, 1 \rbrace\)。我们接着将一个合法的super arm转成数学约束。首先,由于每个action会至多被展示一次,它对应于constraint \(\sum_m f_{k,m} \leq 1, \forall k\)。第二,在同一个position上不能放置两个action,因而我们有\(\sum_k f_{k,m} \leq 1, \forall m=1, \cdots, M\)。最终,会选中S个actions,它等价于\(\sum_k \sum_m f_{k,m} = S\)。在等式(1)中对super arms进行最大化,可以被表示成如下的integer programming:

\[\overset{f}{max} \sum\limits_{k=1}^K \sum\limits_{m=1}^M f_{k,m} e_{k,m}\]

服从:

\[...\]

…(2)

总之,integer programming问题不能被高效求解。然而,在下一节所示,给定的公式可以被解释成一个network flow,它遵循多项式时间解。

Network flow

integer optimization问题(2)可以被看成是一个minimum-cost maximum-flow公式,它的edge costs为\(-e_{k,m}\),如图2所述。决策变量\(f_{k,m}\)表示flow的量,沿着一个bipartite graph的edges进行转移,具有expected rewards \(e_{k,m}\)。另外,S表示network flow的total size。另外,与biparite graph相连的edges的flow capacity为1,它表示这些edges可以适应一个flow,至多1个unit。另外,我们可以将constraints的最后集合使用连续等价\(f_{k,m} \in [0,1]\)进行relaxing,将(2)的integer programming公式变更成一个linear programming。

定理1:一个有向网络(directed network)的node-arc incidence matrix是完全unimodular。

这里,我知道问题(2)在linear programming relaxation中constraints的集合可以被表示成标准形式:\(Ax = b, x \geq 0\),它具有一个完全unimodular的constraint matrix A。由于一个graph的incidence matrix具有线性独立行(linearly independent rows),S是一个integer,我们知道linear programming relaation(2)的 super arm selection问题会导致一个integer optimal solution \(f^* \in \lbrace 0,1 \rbrace^{K \times M}\)。另外,linear programming问题可以使用interior-point方法在多项式时间求解,因此我们可以有效求解super arm selection问题。请注意,对于min-cost network flow问题的专有算法可以比linear programming方法具有更好的运行时间。然而,这样的专有方法通常不会允许引入额外的constrainints。对于这些原因,我们在实验中使用一个linear programming solver。

Thompson sampling进行combinatorial semi-bandits

参考

ali在2018年前提的一个《An End-to-end Model of Predicting Diverse Ranking On Heterogeneous Feeds》,我们来看下它的实现。

介绍

图片名称

图1 Item Search Engine和Content Search Engine间的关系

2.基本概念

2.1 商业背景

alibaba自己拥有CSE(Content Search Engine)和ISE(Item Search engine),它会相互交互来为用户创建在线购物环境。在ISE中的所有items与CSE中的一群feed相关。用户可以自由地travel和search在两个搜索引擎。

阿里巴巴ISE和CSE的混合使用,对用户在线购物有收益。总之,用户会在阿里巴巴上日志化,他们与搜索引擎的交互总是有意图的。然而,当面对大量items时,如果他们只搜索在ISE中的items,他们可能会迷茫。例如,阿里的官网,像服装这样的热门品类可能包含上万的items。每个items会使用数十个keywords进行打标记(比如:风格、slim cut、韩版等)。如果没有任意指导,用户们从一个item候选的大集合中区分合适的items是面临挑战的。

因此,为了帮助用户避免疑惑,并提供它们可靠的购物建议,CSE会成为用户的购物指导。给定来自用户的queries,CSE会组织一个合适的feed ranking list作为一个返回结果,替代item ranking list。feeds可以被表示成post(article)、list(item list)以及video的形式。他们由电商领域(clothing、travelling、化妆品)专家的”淘宝达人(Daren)”生产。在它们的feeds流量,“达人”会介绍特定items的优点和缺点,并对特定subjects基于它们的领域知识提出个人建议。

  • 一个post feed是一篇文章,它会介绍特定items的属性;
  • 一个list feed是一个推荐items的集合;
  • 一个video feed是一个用来演示建议items的short video。

通过达人的建议,用户可以做出更好的购物选择。

每天在生产环境中的数据会经验性地展示在两个搜索引擎间的user travel rate是否频繁。在用户跳到CSE中前,他们通常已经在ISE中搜索过记录。这表明用户实际上希望购买来自“达人”的建议。提供更好的CSE搜索结果可以帮助用户更方便的定向到合适的items,从而做出之后的购买,这是电商的主要目标。然而,仍然有挑战。首先,feed types是异构的,不同类型的feeds的匹配度(fitness)与一个给定的query是不可比的。例如,一个list feed是否比一个post feed更好依赖于用户体验。第二,大量用户进入阿里CSE会携带着来自ISE的用户行为。如何处理跨域信息并构建user profiles来形成一个在CSE上的个性化feed ranking需要进一步探索。

2.2 数据准备

在我们的方法中,我们的目标是:给定一个user u发起的一个query q,返回一个异构feed ranking list \(R_1(feed) \mid u, q\)

在Top K个ranked feed中的每个item都会被安置(locate),并在CSE中从上到下分别在一个”slot”中展示。为了学习independent Multi-armed Bandit(iMAB)模型以及personalized Markov DNN(pMDNN)模型,需要获取slot相关的统计数据(全局信息)以及用户点击流数据(个性化信息)这两者。

2.2.1 slot相关的统计数据

用户偏好的一个假设是:在每个slot中的feed type相互独立

对于每个slot,三个候选feed types的概率(post、list、video)会遵循它们自己的Beta分布。因此,给定在一个slot s上的候选类型T,为了估计一个feed type \(\theta\)的先验分布\(p(\theta \mid \alpha, \beta, T, s)\),必须知道每个slot的所有slot相关统计信息,以便估计\(\alpha\)和\(\beta\)。slot相关的统计数据包含了两部分:在线实时数据和离线历史数据。在线实时数据指的是流数据:每天由用户生成的对于一个特定slot type的点击数(click)、曝光数(display)。离线历史数据指的是:过去n天page view(pv)、以及item page view(ipv)的总数。在线天数据是streaming data,只能在实时中观察到。而离线历史数据可以被追踪、并能从仓库中获取。我们会在表1中计算和展示top 5 slots的统计数据。

图片名称

表1 在CSE的top 5 slots上的feed历史数据

从表1中看到,在每个相关slots的pv和ipv的总数会有不同,video feeds在CSE中的top 5 slots很难出现。这表示:从全局上看,用户在不同feed types会偏向不同的feed types。

2.2.2 用户点击流数据

来自ISE和CSE的用户行为序列数据对于训练一个个性化feed ranking结果来说是有用的。为了构建user profile,我们会设置一个window size w,它只考虑用户在ISE上的最新w个行为。该行为可以表示为两种类型的triplet:<user, issue, query>和<user, click, item>。

  • 用户在items上的点击次数表明users和items间的关系,
  • 而用户(users)发起(issue)相同query的次数表明:users和queries间的关系强度。

基于此,可以在相同的latent space上从每个user/query中学习得到一个给定维度的embedding。另外,在每个slot中的feed type通过one-hot encoder进行编码。最后,所有users、queries、feed types可以被表示成vectors。示例如表2所示。前两列指的是每个user \(f_u\)学到的表示,以及一个issued query \(f_q\)。第三列指的是在每个slot中feed type \(f_t\)的one-hot表示。

图片名称

表2 对于每个slot的用户个性化数据的示例

3.方法

对于用户体验,我们希望观察到更好的异构feeds ranking。整个过程包含了Heterogeneous Type Sorting step以及Homogeneous Feed Ranking step。

  • 对于第一个step,对于slot independent场景,会设计一个independent Multi-Armed Bandit(iMAB)模型;
  • 对于slot denpendent场景,会设计一个改进版的personlized Markov DNN(pMDNN)模型。

第3.1节和3.2节会分别引入两个模型。对于第二个step,会使用一个DSSM模型来在每个slot上分配合适类型的feeds。第3.3节会详细介绍,pMDNN可以与DSSM一起训练来构成一个end-to-end模型。

3.1 independent Multi-Armed Bandit

在iMAB模型中,异构feed ranking的评估指标是:在ipv和pv间的ratio \(\theta\)。更高的\(\theta\)意味着:当一个用户浏览在CSE中的一个feed时,用户更可能会点击该feed。因此,\(\theta\)可以根据用户的实际需要来用于评估heterogeneous feed ranking的匹配度(fitness)。因此,对于每个independent slot,我们会为每个feed type估计一个先验ratio \(\theta\)分布,并倾向于选择能够生成最高\(\theta\)值的feed type

理论上,由于Beta分布可以天然地表示成:由两个参数\(\alpha\)和\(\beta\)控制的任意类型的分布,它会假设每个type的ratio \(\theta\)具有一个先验分布遵循:\(\theta_i \sim B(\alpha_i^0, \beta_i^0)\),

其中:

  • \(i \in \mu = \lbrace post, list, video \rbrace\)。
  • \(\alpha_i^0\)是type i的历史ipv数,
  • \(\beta_i^0\)是type i历史pv数和ipv数间的差。

由于\(B(\alpha_i^0, \beta_i^0)\)的期望是:\(\frac{\alpha_i^0}{\alpha_i^0 + \beta_i^0}\),它是ipv和pv间的历史ratio。因此,后验ratio分布可以通过在线实时流数据进行每天更新,表示成:

\[\theta_i \mid D_i \sim B(\alpha_i^0 + \lambda D^{ipv}, \beta_i^0 + \lambda (D^{pv} - D^{ipv}))\]

其中:

  • \(D_i\)指的是每天到来的feed type i
  • \(\lambda\)是时间影响因子,因为新数据会对更新ratio分布有影响。

最终,我们会使用一个two step sampling策略来选择每个slot的type。首先,对于每个feed type i,会被随机生成一个value \(\theta_i\),因为在pv和ipv间的ratio的估计遵循以下的概率分布:

\[p(\theta_i | D_i) = \frac{(\theta_i)^{\alpha_i,-1}(1-\theta_i)^{\beta_i,-1}}{B(\alpha_i, \beta_i,)}\]

…(1)

其中,给定\(\alpha_i\)和\(\beta_i,\),

  • \(B(\alpha_i, \beta_i,)\)是一个常数
  • \[\alpha_i,=\alpha_0+\lambda D_i^{ipv}\]
  • \[\beta_i,=\beta_0 + \lambda(D_i^{pv} - D_i^{ipv})\]

第二,对于每个feed type,会应用一个softmax函数到所有feed types上来生成一个归一化的selection概率:

\[p(i) = \frac{exp(\theta_i)}{\sum_{i \in \mu} exp(\theta_j)}\]

…(2)

其中:

  • i指的是三种feed types的其中之一
  • \(\theta_i\)是公式1展示了根据后验概率分布\(D(\theta)\)生成的随机值

这种方式中,在所有slots中的feed types会独立选中。整个过程的伪代码如算法1所示。

图片名称

算法1

3.2 peronalized Markov DNN

Dependent heterogneous feed type selection会由三个因素决定:user、query、以及在相同page页上之前的slot feed types。

  • 第一,不同users会在相同queries下对于items具有不同的偏好。例如,当一个用户搜索”dress”时,她可能会愿意看到关于dress描述的文章post。而对于其它user,他们可能更喜欢lists,因为他们想看到更多item选项而非单个item介绍。
  • 第二,在当前slot上的feed types的用户偏好可能会受之前feed types的潜在影响,它可以被看成是一个Markov process。例如,没有用户愿意看到在所有slots上看到相同类型,他们或多或少希望看到不同types的feeds。
  • 第三,不同queries在所有slots上应产生不同的feed type allocation。为了将用户偏好、query、以及推荐的previous feed types一起集成,对于第i个slot,我们提出了一个pMDNN模型来生成推荐的feed type \(t_i \mid (user, query, t_1, \cdots, t_{i-1})\)。整个模型可以解耦成两个子任务(sub tasks):包括一个user&query表示学习任务、以及一个personlized slot type的预测任务,如图2所示。

图片名称

图2 使用pMDNN的end-to-end模型,从cross-domain knowledge和user preference中进行学习

3.2.1 User和Query的表示

基于统计数据,在CSE中有80%的用户来自于ISE。因此,通过使用它们的用户行为序列数据,我们可以构建一个graph来描述users、queries、items间的关系。之后,node2vec会在最后使用一个skip gram模型来学习users和queries的embeddings。详细的pipeline如图2所示,目标函数如下:

\[O(\overset{\rightarrow}{f_v}) = log \sigma(\overset{\rightarrow}{f_t} \cdot \overset{\rightarrow}{f_v}) + k E_{u \in P_{noise}} [-log \sigma(\overset{\rightarrow}{f_u} \cdot \overset{\rightarrow}{f_v})]\]

…(3)

其中:

  • \(\overset{\rightarrow}{f_v}\)是当前node v的embedding。
  • t是node v的一个positive neighbour node;
  • u是v的一个negative sampled node。

这意味着:给定一个node v,我们需要学习一个node embedding表示,它可以最大化概率来生成它的positive neighbor node u,并最小化概率来生成它的negative node node sets\(P_{noise}\)。

图2的中间部分表明,如何训练node embedding表示。input layer是node的one-hot encoding。weight matrix W是所有nodes的embedding,它可以帮助将input one-hot encoding node投影到一个\(\mid D \mid\)维的latent space上。接着,最大化概率来生成node u的neighour nodes。

在最后,所有users和queries可以使用一个给定长度维度的embedding representations。并且匀们使用user & query embeddings作为输入来进行slot feed type预测。

3.2.2 Type prediction

对于给定users、queries、以及previous slot feed types信息,我们希望预测每个slot的feed types。因此,目标函数为:

\[\underset{\phi}{argmax} \prod_{i=1}^K p(\phi(X_i) = c | u_i, q_i, f_i)\]

…(4)

其中:

  • \(X_i\)是对于第i个slot的input feature vectors,它与user \(u_i\)、queries \(q_i\)以及previous slot feed types \(f_i\)相关。
  • \(\Phi\)是input feature vectors到output feed type的转换函数。
  • c是当前slot的true feed type。

我们的目标是最大化成功预测slot feed types的joint probability。

为了简化我们的pMDNN模型,并加速运行速度,只有slot feed type的一阶Markov过程会被应用到该模型上。它意味着预测第i个slot feed type,只有第(i-1)个slot feed type会对它有latent影响。而这对于一个user u的第一个slot feed type来说会带来一个问题。因为它没有previous slot feed type信息。对于一个user u,为了给第一个slot生成一个伪信息,user u喜欢的item i会在ISE中根据观看次数和停留时长被检测到。接着,我们会在ISE中将item i映射到在CSE中与它相关的feed f中,并使用f的type作为一个替代。

我们使用给定的user、query的embedding以及previous slot types来构建pMDNN模型来推荐feed type。input layer是user embedding(U)、query embedding(Q)和之前slot types(T)的concatenation。User和query embedding会通过在constructed graph上进行node2vec学到。整个input layer的构建可以看成是:

\[X = U \oplus Q \oplus T\]

…(5)

最后,会在input layer上附加三个fully connected hidden layers。每个layer会使用线性分类器和cross entropy作为loss function。在每个hidden layer中的Activation function被设置为ReLu,output layer会使用Softmax作为activation function。通过gradient descent和BP,我们会训练模型直至收敛。outpu layer是一个vector,它包含了:,在通过一个softmax activation function之后,在每个指定slot上关于三种feed types的一个概率分布。

\[L_1 = ReLu(w_0 \cdot X) \\ L_2 = ReLu(w_1 \cdot L1) \\ L_3 = ReLu(w_2 \cdot L2) \\ L = Softmax(w_3 \cdot L_3)\]

…(6)

L表示当前slot feed type的true label。pMDNN模型会在离线阶段被训练,我们可以管理trained model来预测实时用户请求。\(L_1, L_2, L_3\)分别表示三个hidden layers。图2的第一部分展示了这个工作流。

3.3 异构feed ranking

下一step是对homogeneous feeds进行排序,并填充相关的slots。例如,如果\(slot_i, slot_j, slot_k\)被选中具有”post” feed type,我们需要rank所有post feeds并选择在当前query下具有最高relevance score的top 3 feeds。由于所有types的feeds与文本信息相关(比如:title),会使用一个已经存在的DSSM来对所有post feeds进行rank来在三个slots上进行填充。

在DSSM中,我们不会为每个word会使用一个one-hot表示进行编码,而是使用word hashing方法来利用n-gram模型来分解每个word。这会减小word表示的维度。

最后,一个DNN模型可以使用query和feeds作为input layer,给定跨训练信的queries,并通过最大化点击文档的likelihood进行模型参数训练。相等的,该模型需要最小化以下的loss function:

\[L(\wedge) = -log \prod_{Q, D^+} p(D^ | Q)\]

…(7)

其中,\(\wedge\)表示NN的参数集。\(D^+\)表示具有true label的feed,Q是user-issued query。该模型会使用gradient-based数值优化算法进行训练。

最后,给定一个query,所有candidate feeds可以通过由该模型计算的generative probability进行排序。它可以使用pMDNN进行训练来公式化成一个end-to-end模型,如图2所示。而它仍需要从iMAB模型进行训练得到。

4.实验

我们会在ISE和CSE上进行实验,数据集划分:80%训练集,20%测试集。用户行为序列会收集N=90天的数据,来构建一个behaviors graph,它可以将users和queries表示成dimensional embeddings。

4.1 模型setup

对于iMAB模型,在online部分,我们实现了一个real-time Flink job,它会解析用户行为日志,并抽取一系列status表示:用户在不同slots上是否点击或浏览展示的feeds。接着用户行为被同步到online reward到iMAB模型中。由于阿里的用户行为日志非常大,为了确保Flink job时延低,我们分配了256个workers做parsing和joining,接着使用64个workers做aggregating。正如我们所预期的,online rewards会在3s内被传给iMAB模型,这使得它可以基于最新的用户行为来选择arm来表示一个概率分布。而在离线部分,超过1亿的ipv和pv记录会被聚合来估计Beta分布。基于经验表明,我们会在iMAB模型中设置\(\lambda=10\)来作为一个time impact factor。

另外,pMDNN模型需要一个训练过程,相应的设置如下:

  • User和Query表示:128维的graph embedding
  • Feed type表示:one-hot vector
  • Activation function:ReLu和softmax
  • Loss function:cross entropy
  • optimizer:GD opitmizer
  • learning rate: 0.0001
  • epochs: 100000

我们会训练pMDNN模型,并导出saved_model格式来在CSE中进行serving,它会接收实时在线请求,包含:user、query、以及preceding feed type,接着使用转化后的embedding vectors按顺序预测下一个slot type。在原始DSSM中的缺省设置会应用到我们的模型中。

4.2 A/B test

我们在三个分桶上部署提出的模型。每个分桶会通过一个hash partition function来等价处理用户请求。我们会选择5个major indices来对比在iMAB和pMDNN间的效果。pv表示展示items的数目,而pv click表示有多少displayed items被点击;相似的,uv是不同用户进入到CSE的总数,uv点击表示用户点击feeds的数目;至于uv CTR,它是用户点或不点的ratio。

表3展示了实验结果。对比原始的离线ranking方法,pMDNN总体上要胜过iMAB。特别是uv click和uv ctr,他们对于我们的场景是必要的,因为uv click的增加表明:更多用户超向于CSE,以便它能改进它的购物体验,同时,uv ctr的增强表明:用户进入CSE实验上在模型的ranking结果中更感兴趣。至于pv click,它也表明我们的模型工作良好,因为更多用户在发起queries后愿意点击feeds。

基于pv click和uv CTR,我们可以下结论:pMDNN要优于iMAB,它通过应用cross-domain知识并优化在whole page上的ranking results。另外,结合上用户体验信息可以增加用户点击的概率(uv click指标)。

参考