Yixuan Su等人在《A Contrastive Framework for Neural Text Generation》中提出了Contrastive Search的方法:

摘要

文本生成(Text generation)对许多自然语言处理应用非常重要。然而,自然语言模型中基于maximization-based decoding 方法(例如:Beam Search)经常导致退化的解决方案——生成的文本不自然并且包含不良重复。现有的一些方法通过抽样引入随机性、或修改训练目标以减少某些tokens的概率(例如,不可能性训练)。但是,它们经常导致相应的解决方案缺乏连贯性。在这项工作中,我们展示了模型退化的一个潜在原因是:token representations的非各向同性分布。我们提出了一个对比解决方案:

  • (i)SimCTG:一种对比训练目标,用于校准模型的表示空间;
  • (ii)一种解码方法——对比搜索(contrastive search):以便在生成的文本中鼓励多样性同时保持连贯性。

对两种语言的三个基准测试进行的广泛实验和分析表明,我们提出的方法在人工和自动指标评估下显着优于SOTA的文本生成方法。

1.介绍

使用Transformer进行开放式神经网络文本生成(Open-ended neural text generation)[52]是各种自然语言应用中不可或缺的组成部分,例如故事生成[11,43]、上下文文本补全[36]和对话系统[48]。然而,使用极大似然估计(MLE)训练语言模型并解码最可能的序列的传统方法往往不够的[14,54]。具体而言,这种建模方法通常会导致退化问题,即从语言模型生成的文本往往会在不同级别(例如token级别、短语级别和句子级别)上变得乏味并包含不良重复[8]。为了缓解这个问题,先前的解决方案通过从低可能性的词汇表中进行抽样来修改解码策略[11,14]。虽然减少了生成的重复,但这些抽样方法引入了另一个关键问题(语义不一致)——抽样文本往往会偏离或甚至与人类编写的前缀定义的原始语义相矛盾[3]。另一种方法通过使用unlikelihood training来修改模型的输出词汇表分布来解决退化问题[54]。

图片名称

图1 (a) GPT的token余弦相似度矩阵 (b)SimCTG的余弦相似度矩阵(详见颜色)

在本工作中,我们认为神经语言模型的退化源于token representations的非各向同性分布(anisotropic distribution),即它们的representations存在于整个空间的一个狭窄子集中[10,9,44]。在图1(a)中,我们展示了GPT-2生成的token表示(来自Transformer的输出层)的余弦相似度矩阵。我们看到,句子内token之间的余弦相似度超过0.95,这意味着这些表示彼此接近。这种高相似性是不可取的,因为它可能会自然地导致模型在不同步骤生成重复token。在理想情况下,token representations应该遵循各向同性分布:即token相似性矩阵应该是稀疏的,并且不同token的representations应该具有区分性,如图1(b)所示。此外,在解码过程中,生成的文本的标记相似性矩阵的稀疏性应该被保留以避免模型退化。

基于上述动机,我们提出了SimCTG(神经文本生成的简单对比框架),以鼓励模型学习具有区分性和各向同性的token表示。我们还提出了一种新的解码策略,以补充SimCTG,即对比搜索(contrastive search)。对比搜索(contrastive search)的核心意图是:

  • (i)在每个解码步骤中,应该从模型预测的最可能候选集合中选择output,以更好地保持生成文本与人类编写的前缀之间的语义连贯性
  • (ii)应该保留生成文本的token相似性矩阵的稀疏性以避免退化。

我们在三个广泛使用的基准测试上进行了全面的实验。我们展示了我们的方法适用于不同的任务和不同的语言(§4和§5),以及不同的模型大小(§4.3和附录D)。具体而言,实验结果验证了SimCTG通过困惑度(perplexity)和token预测准确性的评估来提高语言模型的内在质量(§4.2和附录D)。此外,我们证明了所提出的对比搜索(contrastive search)在人工和自动评估中都要优于SOTA的解码方法(§4和§5)。此外,我们提供了深入的分析,以更好地了解我们提出的方法的内部运作机制(§6)。

2.背景

语言建模的目标是:学习一个变长文本序列 $ x = \lbrace x1,…,x_{\mid x \mid} \rbrace$ 上的概率分布$p_{\theta}(x)$,其中$\theta$表示模型参数。通常,使用极大似然估计(MLE)目标来训练语言模型,该目标定义为:

\[L_{MLE} = − \frac{1}{|x|} \sum\limits_{i=1}^{|x|} log p_{\theta}(x_i | x_{<i})\]

…(1)

然而,正如许多最近的研究所观察到的[10,9,44],使用极大似然估计目标进行训练,往往会产生模型表示(representations)的非各向同性分布(特别是对于基于Transformer的模型),这会削弱模型的能力。

2.2 开放式文本生成(Open-ended Text Generation)

在本工作中,我们专注于研究开放式文本生成任务,因为它在各种应用中具有广泛的适用性,例如故事生成[11,43]、上下文文本补全[36]、诗歌生成[23]和对话系统[48]。形式上,给定人类编写的前缀(即context)x,该任务是从语言模型中解码出一个连续的$\hat{x}$,生成的文本为:

\[{x1,..,x_{|x|},\hat{x}_{|x|+1},\cdots,\hat{x}_{|x|+|\hat{x}|}}\]

通常,有两类方法用于解码,即(1)确定性方法(Deteriminstic methods)和(2)随机方法(Stochastic methods)。

  • Deteriminstic方法。两种广泛使用的Deteriminstic方法是贪心搜索(greedy search)和束搜索(beam search),旨在基于模型的概率分布$p_θ$选择具有最高概率的文本延续(text continuation)。然而,仅仅最大化输出概率往往会导致生成的文本变得乏味[22]并且出现退化问题[11,14]
  • Stochastic方法:为了解决Deteriminstic解码的问题,已经提出了几种从$p_θ$中进行采样的方法。为了避免从分布的不可靠尾部进行采样,Fan等人[11]提出了top-k采样,该方法从最大化$\sum_{v \in V^{(k)}} p_θ(v\mid x)$的词汇子集V(k)中抽取样本。这里,$\mid V(k) \mid=k$,x是前缀上下文。与之不同的是,当前SOTA的核心采样(nucleus sampling)[14]从具有总概率大于阈值$p \in [0,1]$的最小词汇子集U中抽取样本;即,U是最小的词汇子集,使得$\sum_{v \in U} p_θ(v \mid x)≥p$。虽然采样方法有助于缓解模型退化,但这些方法中的内在随机性可能会导致采样文本的语义含义与人类编写的前缀发生分歧甚至矛盾[3]。

3.方法

在本节中,我们首先介绍如何将对比学习应用于校准语言模型的表示空间。然后,我们介绍我们提出的对比搜索(contrastive search decoding)解码算法。

3.1 Contrastive Training

我们的目标是:鼓励语言模型学习具有区分性(discriminative)和各向同性(isotropic)的token representations。为此,我们在语言模型的训练中引入了对比目标$L_{CL}$。具体而言,给定一个变长序列$ x = \lbrace x1,\cdots,x_{\mid x \mid} \rbrace $,$L_{CL}$定义为:

\[L_{CL} = \frac{1}{|x| \times (|x|−1)} \sum\limits_{i=1} \sum\limits_{j=1,j \neq i}^{|x|} max \lbrace 0, \rho − s(h_{x_i} , h_{x_i}) + s(h_{x_i} , h_{x_j}) \rbrace\]

…(2)

其中:

  • $\rho \in [−1,1]$ 是预定义的边界
  • $h_{x_i}$:是模型生成的token $x_i$的表示
  • 相似性函数s:计算标记表示之间的余弦相似度,如下所示:
\[s(h_{x_i}, h_{x_j}) = \frac{h_{x_i}^T h_{x_j}} { \| h_{x_i} \| \cdot \| h_{x_j} \|}\]

…(3)

直观地说,通过使用$L_{CL}$进行训练,模型学习将不同token的表示之间的距离拉开。因此,可以获得具有区分性和各向同性的模型表示空间。总体训练目标$L_{SimCTG}$定义为:

\[L_{SimCTG} = L_{MLE} + L_{CL}\]

…(4)

其中:

  • 最大似然估计(MLE)目标$L_{MLE}$的定义如公式(1)所示。

请注意,当$L_{CL}$中的边界ρ等于0时,$L_{SimCTG}$会退化为普通的MLE目标$L_{MLE}$。

我们提出了一种新的解码(decoding)方法,对比搜索(contrastive search)。在每个解码步骤中,对比搜索(contrastive search)的关键思想是:

  • (i)生成的输出(generated output)应该从模型预测的最可能的候选集合中选择;
  • (ii)生成的输出(generated output)应该足够具有区分性,以便与前文(previous context)相关。通过这种方式,生成的文本可以更好地保持与前缀的语义连贯性,同时避免模型退化(model degeneration)。

形式上,给定在timestep t时的上文 $x_{<t}$,输出$x_t$的选择遵循以下过程:

\[x_t = \underset{v \in V^{(k)}}{argmax} \lbrace (1-\alpha) \times \underbrace{p_{\theta}(v | x_{<t})}_{model \ confidence} - \alpha \times \underbrace{(max \lbrace s(h_v, h_{x_j}): 1 \leq j \leq t-1 \rbrace)}_{degeneration \ penalty} \rbrace\]

…(5)

其中:

  • $V(k)$是模型的概率分布$p_\theta(\cdot \mid x_{<t})$中top-k个预测的集合,k通常设置为3∼10。

在公式(5)中,

  • 第一项“模型置信度(model confidence)”是模型预测的候选项v的概率
  • 第二项“退化惩罚(degeneration penalty)”衡量候选项v相对于前文$x_{<t}$的区分性,s在公式(3)中定义。具体而言,它被定义为候选项v的表示与$x_{<t}$中所有token的表示之间的最大余弦相似度。在这里,候选项的表示$h_v$是由模型给出的,给定x<t和v的连接。

直观地说,较大的退化惩罚意味着候选项与上下文更相似,因此更有可能导致模型退化。超参数$\alpha \in [0,1]$调节了这两个组成部分的重要性。当α=0时,对比搜索退化为贪心搜索方法。

其它

#

摘要

工作界推荐系统通常会存在高度倾斜的长尾item分布,一小部分的items会接受到大量的用户反馈。这种倾斜会伤害推荐系统质量,特别是:那些具有较少用户反馈的item。学术界的许多研究,很难部署到真实生产环境中,并且提升很小。这些方法的一个挑战是:通常伤害整体效果;另外,训练和服务通常是复杂和昂贵的。

在本工作中,我们的目标是:提升长尾item推荐,并维持整体效果具有更少的训练和服务开销。我们首先发现:用户偏好的预估在长尾分布下会是有偏的。这种bias来自于training和serving数据间的两个差异:

  • 1)item分布
  • 2)用户对于某一给定item的偏好

大多数已经存在的方法,主要尝试减少来自item分布角度上的bias,忽略了对于给定某一item的用户偏好差异。这会导致一个严重的遗忘问题(forgetting issues),并导致次优的效果。

为了解决该问题,我们设计了一个新的CDN(Cross Decoupling Network)来减少这两个不同点。特别的,CDN会:

  • (i) 通过一个MoE结构(mixture-of-expert)来解耦记忆(memorization)和泛化(generalization)的学习过程
  • (ii)通过一个正则双边分支网络(regularized bilateral branch network)来解耦来自不同分布的用户样本

最终,一个新的adapter会被引入进来对decoupled vectors进行聚合,并且将training attention柔和地转移到长尾items上。大量实验结果表明:CDN要好于SOTA方法。我们也展示了在google大规模推荐系统中的有效性。

1.介绍

。。。

2.在推荐中的长尾与动机

。。。

3.CDN(Cross Decoupling Network)

基于上述分析,我们提出了一个可扩展的cross decoupling network(CDN)来解决在item和user侧的两个差异。主要结构如图2所示。

图片名称

图2 Cross Decoupling Network (CDN)

  • 在item侧,我们提出:对头部item和长尾item的represation learning的memorization和generalization进行解耦。为了这么做,我们会使用一个gated MoE结构。在我们的MoE版本中,我们会将memorization相关的features输入到expert子网络中来关注memorization。相似的,我们会将content相关的features输入到expert子网络中来关注generalization。一个gate(通常:是一个learnable function)会被引入进来描述:该模型需要放置多少weight到一个item representation的memorization和generalization上。增强的item representation learning可以将item分布差异进行融合。

  • 在user侧,我们可以通过一个regularized bilateral branch network来将user sampling策略进行解耦,来减少用户偏好差异。该网络包含了:一个主分支用于通用的用户偏好学习,一个正则分支来补偿在长尾items上的用户反馈的稀疏性。在两个branch间的一个共享塔会用来扩展到生产环境中。

最终,我们会将user和item learning进行交叉组合,使用一个\(\gamma\)-adapter来学习用户在长尾分布中的头部和尾部items上的多样偏好。

3.1 Item Memorization 和 Generalization Decoupling

我们引入memorization features 和generalization features的概念,接着,描述了通过一个gated MoE结构来解耦它们的方法。

3.1.1 用于memorization和generalization的features

工业界推荐系统通常会考虑成百上千个features作为model inputs。除了使用相同方式编码这些features之外,我们考虑将这些features进行划分成两组:memorization features和generalization features。

Memorization features

这些features(比如:item ID)会帮助记住在训练数据中user和item间的交叉(协同信号)。正式的,这些features通常是categorical features,满足:

  • 唯一性(Uniqueness):对于它的feature space V,存在 \(\exists f_{in}\)满足 \(f_{in}\)是一个injective function,并且有:\(f_{in}: I \rightarrow V\)
  • 独立性(Independence):对于\(\forall v_1, v_2 \in V\),\(v_1\)的变化不会影响到\(v_2\)

在生产环境推荐系统中,这些features通常由embeddings表示。这些embedding参数可能只会通过对应的item来被更新(唯一性),并且不会与其它items的任何信息共享(独立性)。因而,它们只会记住对于一个特定item的信息,不会泛化到其它已经存在或未见过的items上。同时,由于唯一性,这些features也展示了一个长尾分布。因此:

  • 对于那些对应于头部items的features来说,它们的embedding更新通常会生成一个显著的记忆效果
  • 对于那些尾部items的features,它们的embeddings可能会有噪音,因为缺少梯度更新

Generalization features

泛化features可以学到在user偏好与item features间的相关性,并且可以泛化到其它items上。这些features即可以跨多个不同items共享(例如:item类别、标签等),或者是continuous features。因而,可以泛化到其它已存在或未见过的items上,对于提升尾部item的representation learning来说很重要。

3.1.2 Item representation learning

我们采用带有一个frequency-based gating的MoE结构来解耦memorization features和generation features。该结图如图2的左侧所示。

也就是说,对于一个训练样本(u, i),item embedding可以表示成:

\[y = \sum\limits_{k=1}^{n_1} G(i)_k E_k^{mm} (i_{mm}) + \sum\limits_{k=n_1 + 1}^{n_1 + n_2} G(i)_k E_k^{gen}(i_{gen})\]

…(3)

其中:

  • \(E_k^{mm}(\cdot)\):表示memorization-focused expert,它会将所有memorization features \(i_{mm}\)(例如:item ID)的embeddings进行concat作为input;
  • \(E_k^{gen}(\cdot)\):表示generalization-focused expert,它会将所有generalization features \(i_{gen}\)(例如:item类别)的embeddings进行concat作为input
  • \(G(\cdot)\):是gating function,其中:\(G(i)_k\)表示第k个element,\(\sum\limits_{k=1}^{n_1+n_2} G(i)=1\)

这里的gating很重要,可以对头部items和尾部items的memorization和generalization进行动态平衡。直觉上,gate可以将item frequency作为input,并且通过一个non-linear layer对它进行transform:\(g(i) = softmax(W_{i}_{freq})\),其中,W是一个可学习的weight matrix。它也可以将来自其它features作为input,我们发现:item popularity作为输入效果很好

这种机制可以以一个简单、优雅的方式来发现长尾分布的items间的差异,用来增强item representation learning。通过将memorization和generalization进行解耦,头部items可以达到更好的memorization能力、尾部items也可以同时得到更多的泛化。如【12】所示,增强的item representation可以补偿在\(P(u \mid i)\)和\(\hat{p}(u \mid i)\)间的条件分布的一致性。另外,通过使用 frequency-based gates的experts对memorization和generazation进行解耦,当learning attention偏向于尾部items时,我们可以缓和遗忘问题(forgetting issue)。也就是说,有了decoupling,当training attention偏向于尾部items,来自尾部items的gradients(知识)会主要更新在generalization-focused expert中的模型参数,从而保持着来自 head items的well-learned memorization expert。

3.2 User Sample Decoupling

如图2的右侧user所示,受【13,20,29】的启发,我们提出了一个regularized bilateral branch network ,它包含了两个分支:

  • “main” branch:它会在原始的高度倾斜的长尾分布\(\Omiga_m\)上进行训练;
  • “regularizer” branch:它会在一个相对平衡的数据分布\(\Omiga_r\)上进行训练

\(\Omega_m\)包含了来自头部items和尾部items的所有user feedback,\(\Omega_r\)则包含了对于尾部items的所有user feedback

其中,对头部items的user feedback进行down-sampling,以使得它与最流行的尾部items一样的频次。在两个branch间会使用一个共享的tower来增加扩展性(scalability)。该方法可以温和地对尾部items的用户偏好的学习进行上加权(up-weight)。因此,这会纠正对尾部items的用户偏好的欠估计(under-estimation),并能缓和用户偏好估计的popularity bias。

在每个step中,一个训练样本:\((u_m, i_m) \in \Omega_m\)、以及\((u_r, i_r) \in \Omega_r\)会分别feed到main branch、以及 regularizer branch中。接着 user representation vectors会通过如下进行计算:

\[x_m = h_m(f(u_m)), x_r = h_r(f(u_r))\]

…(4)

其中:

  • \(f(\cdot)\)是一个由两个branch共享的sub-network
  • \(h_m(\cdot)\)和\(h_r(\cdot)\)是 branch-specific sub-networks

共享的network会帮助对来自两个分布的学到知识进行交流,并且能大大减少计算复杂度。branch-specific subnetwork可以为每个数据分布(头部和尾部items)学习唯一的知识。因此,\(\Omega_m\)和\(\Omega_r\)可以被联合学习用来逼近\(\hat{p}(i)\)到\(p(i)\),并减少先验视角的一致性。

main branch的目标是,学习高质量的user representations,并维持着原始分布的特性,是支持进一步学习regularizer branch的基石。如【13】所示,在原始分布上的训练可以学习最好、最泛化的representations。regularizer branch被设计是用来:

  • (1) 添加尾部信息到模型中,并缓和在尾部items上的高IF影响;
  • (2) 通过一个regularized adapter来阻止尾部items的过拟合(over-fitting)

在应用到生产环境时,两个branches可以同时训练。因此,不需要额外的训练开销。注意,在inference时,只会使用main branch,因此没有额外的serving开销。

3.3 Cross Learning

为了桥接在head items和tail items上的gap,我们会通过一个\(\gamma\)-adapter将来自user侧和item侧的信息进行解耦学习。

\(\gamma\)-adapter的设计是用来将学到的representations进行融合,并能柔和地朝着尾部items的学习进行偏移。特别的,

  • 对于\(x_m\)和\(x_r\),它们是从main branch和regularizer branch中学习到的user representations
  • 对于\(y_m\)和\(Y_R\),它对应于学到的item representations

predicted logit可以被公式化为:

\[s(i_m, i_r) = \alpha_t y_m^T x_m + (1 - \alpha_t) y_r^T x_r\]

…(5)

其中:

  • \(\alpha_t\)是\(\gamma\)-adapter,它是一个关于training epoch t的函数:
\[\alpha_t = 1 - (\frac{t}{ \gamma \times T})^2, \gamma > 1\]

…(6)

这里,T是epochs的总数目,\(\gamma\)是regularizer rate。我们看到:\(\alpha_t\)会随着训练过程衰减(随着t递增),这会让模型学习从原始分布朝着平衡后的数据分布偏移。在这种方式下,我们会首先学习通用模式,接着渐近地朝着tail items进行偏移来提升它们的效果。这种顺序对于获得一个高质量representation learning来说很重要,它可以进一步促进regularizier branch的学习,如【32】所示。约束条件\(\gamma > 1\)在推荐setting中也很重要,可以缓和forgetting issue:它可以确保通过训练主要关注点仍在main branch。这对于具有不同imbalanced factor IF的长尾分布来说是一个希望的feature,当IF很高时,更偏好于一个更大的\(\gamma\)。事实上,我们会经验性的发现:𝛾-adapter可以极大有益于在高度倾斜的长尾分布上的学习。

有了logit \(s(i_m, i_r)\),我们可以通过一个softmax来计算:user u对于不同items的偏好概率:

\[p(i | u ) = \frac{e^{s(i_m, i_r)}}{\sum_{j \in I} e^{s(j_m, j_r)}}\]

…(7)

在工作界应用中,出于可扩展性,常使用batch softmax。接着loss function可以被公式化为:

\[L = - \sum\limits_{u \in U, i \in I} \alpha_t \hat{d}(u_m, i_m) log p(i|u) + (1 - \alpha_t) \hat{d}(u_r, i_r) log p(i|u)\]

…(8)

其中:

  • \(\hat{d}(u_m, i_m)\)以及\(\hat{d}(u_r, i_r)\)分别是来自main branch和regularizer branch的user feedback。他们可以帮助学习用到对于items的高偏好得分。

对于inference,为了预估一个user对于一个item的偏好,我们只会使用main branch,并计算preference score:

\[s(u, i) = y_m^T x_m\]

…(9)

以便获得在softmax中的logits。

regularizer branch functions则作为一个regularizer用于训练。在prediction时,test data是长尾的,添加regularizer branch会引入在分布中的其它层的不匹配。

Training和serving开销:对比起标准的双塔模型,CDN对于训练来说具有很小的额外开销。在serving时,在双塔setting中,user side只会使用main branch,item side则具有相同数目的参数/FLOPS。在training时,在user侧的额外开销只有在regularizer branch的head上,它是可忽略的。

讨论:一个直接问题是:为什么我们要从不同角度去解耦user和item side呢?在本工作中,我们考虑来自item side的长尾分布(例如:长尾item分布),它会将users看成是在长尾分布中的样本。如果我们希望考虑来自user side的长尾分布,那么一个直接的方法是:在users和items间切换decoupling方法,如【29】。然而,我们会讨论long-tail用户分布是否也可以不同建模,因为user侧的IF通常要小于item side。另外,两个sides的长尾分布高度相关,可以在每个side上影响IF。这是个nontrivial问题,我们保留该问题,等后续进一步探索。

#

google在《Improving Training Stability for Multitask Ranking Models in Recommender Systems》提出了Clippy Adagrad方法。

摘要

推荐系统在许多内容平台上扮演着重要角色。虽然大多数推荐研究都致力于设计更好的模型以提升用户体验,我们发现对于这些模型训练稳定性方面的研究严重不足。随着推荐模型变得更加庞大和复杂,它们更容易遇到训练不稳定问题,即loss发散,这可能使模型无法使用,浪费大量资源并阻碍模型发展。在本文中,我们分享了我们在提高YouTube推荐多任务排序模型训练稳定性方面的发现和我们学到的最佳实践。我们展示了导致训练不稳定的模型的一些属性,并对其原因进行了推测。此外,基于我们在训练不稳定点附近的训练动态观察,我们假设现有解决方案为何会失败,并提出了一种新算法来减轻现有解决方案的局限性。我们在YouTube生产数据集上的实验表明,与几种常用的基线方法相比,所提出的算法可以显著提高训练稳定性,同时不损害收敛性。我们在 https://github.com/tensorflow/recommenders/ tree/main/tensorflow_recommenders/experimental/optimizers/clippy_adagrad.py 上开源了我们的实现。

1 引言

一个优秀的推荐系统对用户体验起着关键作用。它已成为许多网络应用的核心技术,甚至主要用户界面,包括YouTube,世界上最大的在线视频平台之一。因此,可以将许多组件整合到推荐模型中,以捕捉不同模态的上下文并提高推荐质量,包括音频信号[30]、视频信号[21]、用户历史序列[5, 28]等。此外,推荐模型的规模定律(scaling law)[3]表明,通过在数据丰富的应用中增加模型容量,可以显著提高质量。

随着推荐模型变得更大更复杂,它们更容易遇到训练不稳定问题[14],即loss发散(而不是收敛),导致模型“损坏(broken)”并完全无用。在工业界,提供这样一个“损坏”的模型会导致灾难性的用户体验(见第2.2节)。此外,如果我们不能确保推荐模型的可靠训练,就可能浪费大量资源并阻碍模型发展。因此,我们再怎么强调训练稳定性的重要性也不为过。然而,关于推荐模型的训练稳定性的研究非常少。

一方面,对于推荐模型为何容易出现训练不稳定问题缺乏基本理解。特别是,我们观察到,与具有单一目标的检索模型(例如,在大输出空间上的Softmax交叉熵)相比,具有多个目标的排序模型更有可能遇到问题。除了增加模型复杂性,我们发现简单地添加新的输入特征或输出任务也可能导致训练不稳定。为了解决这个问题,人们大多依赖经验解决方案,有时也依赖运气(当问题随机发生时)。发展对问题原因的基本理解将使人们能够更自信地导航这个过程。

另一方面,我们发现缺乏有效的方法来大幅减轻训练不稳定问题。有一些广泛使用的方法,如激活裁剪[20]、梯度裁剪[7, 24]、学习率预热[12, 14]和层归一化[4]。但在实践中,我们发现这些方法都是权宜之计,不能完全防止我们模型中的训练不稳定。开发一种能有效提高模型训练稳定性的有效方法,通过解决训练问题的担忧,加速模型改进。

本文的重点是要分享从解决YouTube推荐使用的多任务排序模型所经历的训练不稳定问题中学到的经验。

  • 在第2节中,我们将展示现实世界推荐系统中不稳定模型训练的影响和后果,强调显著提高模型训练稳定性的重要性和困难。
  • 在第3节中介绍了我们模型的一些初步基础知识后,我们将介绍一些导致更多训练不稳定问题的案例研究,并提供我们对问题根源的理解。然而,在实践中,我们发现知道根源和拥有有效解决方案之间存在很大差距。一些理应有效的方法在实证上并不奏效。
  • 接下来,在第4节中,我们将仔细检查我们模型的训练动态,这启发我们提出一种更有效的方法来克服现有方法的局限性。第5节中的YouTube数据集的实证证据揭示了所提出方法在提高模型训练稳定性方面的有效性,特别是当增加模型容量和使用大的学习率以更快地收敛时。我们希望这些发现可以帮助社区更好地理解训练不稳定问题并有效解决它。

2 背景和相关工作

2.1 症状

训练不稳定性是衡量模型训练不稳定性的一个属性。它有一个常见的症状,即loss发散(也称为loss爆炸)。根据我们的观察,我们进一步将loss发散分为两种类型:微发散(micro-divergence)和完全发散(full divergence)。当一个模型的loss微发散(见图1中的模型a作为例子),我们可以观察到训练loss突然跳跃和训练指标突然下降,尽管loss可能在训练继续时恢复正常(如例子所示)。通常,我们不需要太担心这种情况,因为恢复的模型可以与没有遭受loss发散的模型具有同等的质量。然而,如果一个模型的loss完全发散(见图1中的模型b作为例子),我们可以看到训练loss在几次训练步骤后变得非常高,所有训练指标变得极其糟糕。例如,二元分类AUC(我们整篇论文中主要关注的指标)在图1中下降到0.5,表明模型变得完全无用,实际上给出了随机结果。更糟糕的是,完全发散的loss无法在训练继续时恢复到发散前的值

图片名称

图1 在我们模型中的loss发散示例及其对训练loss(顶部)和AUC(底部)的影响。在这个例子中,模型a的loss发生了微发散然后恢复了,而模型b的loss完全发散了。

2.2 动机和挑战

我们从几个方面强调了训练稳定性研究的重要性,特别是工业界推荐系统的研究。首先,一旦发生loss发散问题,它可能影响几乎所有类型的模型开发。这包括但不限于:

  • (1) 增加模型复杂性:随着更多的建模技术被应用和更多的组件被添加到推荐模型中(以提高其质量),模型遭受loss发散问题的可能性就更大。即使仅仅增加模型容量也可能使模型处于危险状态,尽管当前的规模定律[3]建议在数据丰富的环境下有巨大的好处。
  • (2) 添加更多输入特征或任务:通常,推荐系统中的排序模型使用许多输入特征进行多项任务[36]。对所有任务的预测组合用来决定候选item的排序。我们发现,添加新的输入特征和添加新任务都可能导致训练不稳定,尽管它们是提高模型质量的常用方法。
  • (3) 提高收敛速度:我们发现,有助于模型收敛的超参数调整(如增加学习率)可以显著增加loss发散的可能性。这迫使模型设计者使用较小的学习率,这导致收敛速度变慢。

第二,由于训练复杂模型需要大量的资源,loss发散问题阻碍了模型完成训练,浪费了训练资源。此外,无意中部署一个“损坏(broken)”的模型提供服务也会导致灾难性的用户体验。

因此,我们看到了许多从工程角度缓解这个问题的努力,例如在提供服务之前确保模型质量。然而,鉴于工程努力无法防止训练不稳定性的发生,很明显,从长远来看,大幅提高模型训练稳定性是正确的追求路径

在处理模型不稳定性问题时,我们遇到了以下挑战。

  • 可复制性(Reproducibility):模型在训练期间的任何时候都可能遭受loss发散,然而,只有其中一些可以容易地复现(第3节中有更多讨论)。无法复现坏的情况使得理解模型在loss发散之前发生了什么变得困难。
  • 检测(Detection):在实践中,频繁地在训练期间评估模型并报告结果成本很高,否则训练可能会显著放缓。由于有时微发散可能发生,然后非常快地恢复,即使没有牺牲训练速度,也很难检测模型训练期间是否发生了任何微发散
  • 测量(Measurement):很少有研究对模型训练稳定性的定量测量先于训练。要知道(1)建模变更是否会增加loss发散的风险,或者(2)缓解措施是否有助于减少loss发散的风险,人们必须依赖经验评估(即,训练模型的多个副本,并检查其中有多少有问​​题),这是耗时且资源密集的。

2.3 相关工作

模型训练稳定性一直是一个研究不足的领域,不仅在推荐模型中如此,在通用机器学习中也是如此。幸运的是,随着大型模型的日益增加趋势[8, 11, 29],稳定模型训练已成为一个新兴的研究领域,并在近年来吸引了更多的关注。

从优化理论的角度来看,Wu等人[32]首次从学习率和loss曲率的“锐度”(通过lossHessian的最大特征值来衡量)理论上预测了二次模型的训练不稳定性。对于深度神经网络,Cohen等人[12],Gilmer等人[14]证实了这一预测仍然足够准确。

在技术方面,有一些方法在语言和视觉模型中得到了广泛应用,如激活裁剪[20]、梯度裁剪[24]、学习率预热[16]以及各种归一化技术[4, 18]。此外,You等人[34]提出了一种新的优化器,为大批量训练在收敛性和稳定性之间实现了更好的权衡。Brock等人[7]开发了自适应梯度裁剪,以提高没有批量归一化[18]的ResNet模型[17]的稳定性。

然而,从经验上,我们发现这些方法对于完全防止我们的模型训练不稳定性还不够有效(见第5节)。这可能是由于推荐模型的一些独特属性。正如下一节将讨论的,这些属性可能使多任务排序模型更容易出现训练不稳定性问题。

3 理解问题的原因

在本节中,我们首先描述本文要研究的模型及其特性。然后,我们分享了我们对发生在我们模型中的训练不稳定问题根本原因的理解。

3.1 模型定义

YouTube的视频推荐系统,首先使用多个候选生成算法检索几百个候选项。接着是一个排序系统,它从这些候选项中生成一个排序列表。本文主要关注YouTube推荐系统中的排序模型。与候选生成模型(即检索模型)不同,后者负责过滤掉大部分不相关item,排序模型旨在提供排序列表,以便对用户最有用的物品显示在顶部。因此,排序模型使用更先进的机器学习技术,使用更昂贵的特征,以获得足够的模型表达能力,学习特征及其与效用的关联。

图2展示了我们希望在整篇论文中研究的排序模型的一般架构。以下是我们排序模型的一些重要特性以及它的训练方式;详情可参考[36]。

图片名称

图2 推荐系统中使用的排序模型的一般示意图。该模型具有一个或多个层,这些层由多个任务(软共享或硬共享)共同使用。

  • 多任务(multitask):如图2所示,排序模型有多个任务,预测多个标签。这些预测被组合以形成最终的物品排序列表。不管不同的建模选择[9, 22],模型中间有一些隐藏层由这些任务共享(要么完全共享,要么软共享)。
  • 顺序训练(Sequential training):模型是顺序训练的,即,训练是按数据集合的顺序从旧到新完成的。不同于纯在线学习[6, 25](它会严格按顺序访问训练数据),我们定义了一个基于时间的移动窗口,并从这个窗口中的训练数据中随机采样数据batch进行并行训练。这种训练方案已被广泛使用,并且已知对许多推荐质量方面都有益[2, 23, 36]。
  • 优化(Optimization):众所周知,大批量训练(Large batch-size training)在梯度上噪声较小,因此optimization更多地受曲率驱动[2, 34]。我们采用大batch-size和高学习率以实现更快的收敛。我们发现Adagrad[13]在我们的情况下非常有效,尽管优化器有许多进步(例如,Adam[19],Adafactor[26])。

3.2 根本原因和案例研究

不管loss发散的类型如何,我们认为内在原因可以总结为“当loss曲率陡峭时,step-size太大”。一旦模型在给定状态下满足这两个条件,就容易发生发散。直观地说,步长应该在陡峭的loss表面上保守(通过lossHessian的最大特征值来测量),以确保loss减少而不是增加。

对于二次模型(quadratic models),Wu等人[32]从理论上证明了上述论点,并建议 \(\frac{2}{\eta} > \alpha_*\)

以使训练稳定,其中:

  • $\eta$:是学习率
  • $𝛼_*$:是lossHessian的最大特征值

Cohen等人[12]为证明提供了一个很好的直接例子(见图3)。对于神经网络,这一论点仍然大体成立[12, 14]。

图片名称

图3 来自[12, 图2]。在具有特征值$𝛼_1 = 20$和$𝛼_2 = 1$的二次模型上进行梯度下降。我们可以清楚地观察到,当学习率 $\eta > 2/𝛼_* = 2/𝛼_1 = 0.1$时,开始出现训练不稳定问题。

了解训练不稳定问题的根本原因,使我们能够回答以下研究问题:

  • RQ1:为什么一般的推荐模型比其他领域的模型有更差的训练稳定性?
  • RQ2:在推荐模型中,为什么排序模型通常比检索模型有更差的训练稳定性?

我们将这些问题的答案与我们模型的独特属性联系起来。请参阅补充材料第A.1节中的一些实证证据。

  • 数据分布变化(RQ1):与其他领域的模型相比,推荐模型使用的数量级更多的输入特征(数百到数千个)。更糟糕的是,随着顺序训练的进行,这些输入特征(和标签)的分布不断变化。我们认为,当数据分布发生突变时,可能会产生更陡峭的loss曲率,这在推荐系统中是常见的。此外,顺序训练的模型永远无法收敛,因为它必须适应新到来的数据点,这些数据点的分布已经改变。因此,需要较大的学习率来使适应足够高效。总结来说,与在固定数据集上训练的其他领域模型相比,训练数据分布的变化对稳定推荐模型的训练提出了更大的挑战。
  • 更大的模型大小和复杂性(RQ2):与用于候选生成的检索模型相比,排序模型通常具有更大的容量,以准确衡量候选item的作用。随着ML硬件(例如,TPU)的最近发展,我们能够显著增加模型大小以提高质量[3]。Gilmer等人[14]的实证研究表明,增加的模型容量和复杂性是导致loss曲率更陡峭的一个因素
  • 多目标与单目标(RQ2):与通常只有一个目标的检索模型(例如Softmax交叉熵)[33]相比,排序模型通常需要同时优化多个目标[36]。这导致排序模型更容易遭受loss发散。因为如果由于特定任务的不良预测导致出现虚假梯度,这些梯度可以在整个模型中反向传播,导致被多个任务共享的层表现得(略微)异常。但是,由于这些层被不同任务共享,其他任务往往会在之后预测出不规则的值,加强不稳定状态至不可恢复。换句话说,共享层(以及嵌入)可能是一把双刃剑——它们允许从不同任务中转移学习,但也可能加剧训练不稳定问题,使排序模型比检索模型更脆弱

尽管在理解发散问题的根本原因方面最近取得了进展,我们发现我们对问题原因的当前理解与拥有有效解决方案之间仍存在很大差距。我们尝试了许多临时解决方案。一些例子包括:

  • (1) 使用更慢的学习率的热启计划(warmup schedule)来通过初始模型状态( initial model state),此时loss曲率陡峭[14]。
  • (2) 扩大顺序训练移动窗口,使训练数据分布变化更平滑。

这些解决方案确实在一段时间内缓解了训练不稳定问题,但当我们的模型变得更复杂时,loss发散又发生了。在尝试了多种权宜之计后,我们相信开发一种可以显著提高模型稳定性的更有原则的方法是长期解决方案。

4 提高训练稳定性的有效方法

在本节中,我们首先介绍控制有效步长(当loss曲率陡峭时)的一般方向(梯度裁剪),通过介绍这个方向上的一些经典方法,及其符号和表示。尽管这些经典方法在其他领域应用时取得了成功,但我们发现这些经典方法在我们的模型中应用时效果不够好。基于对我们模型训练动态的一些观察,我们提出了一种新方法,并解释了为什么它在提高训练稳定性方面可能更有效。

Adagrad

我们首先描述Adagrad[13],这是我们模型中使用的优化器。在Adagrad中,模型参数$𝒘_𝑡$通过以下规则更新:

\[G_{t} = G_{t-1} + g_{t}^{2} \\ r_{t} = g_{t}{G_{t}^{-1/2}} \\ w_{t+1} = w_{t} - \eta_{t} \cdot r_{t}\]

…(1)

其中:

  • $\eta_𝑡$:表示第𝑡步的学习率
  • $𝒈_𝑡$:是模型参数的经验loss的标准化随机梯度,
  • $𝑮_𝑡$:被称为“累加器(accumulator)”,是一个向量,初始化为一个小常数值,通常为0.1。此外,所有幂运算都是逐元素计算的。

如第3节所述,我们希望采用更有原则的方法来控制loss曲率陡峭时的步长。然而,通过lossHessian的特征值测量的loss曲率在训练期间计算成本非常高。幸运的是,一阶梯度$𝒈_𝑡$可以用作Hessian的替代品(参见[35])。因此,基于梯度裁剪的算法变得非常流行,用于提高训练稳定性,并在许多大型模型中使用[8, 11, 29]。

梯度裁剪(Gradient Clipping)

由Pascanu等人[24]提出,梯度裁剪(GC)在将其应用于模型之前限制梯度的大小(通过其范数测量)。换句话说,当梯度大小变化(loss曲率变得更陡)时,梯度裁剪通过控制“有效步长”来稳定模型训练

正式地说,梯度裁剪算法在应用模型更新之前将梯度$𝒈_𝑡$裁剪为:

\[g \rightarrow \begin{cases} \lambda \frac{g}{\|g\|} & \text{if } \|g\| \geq \lambda, \\ g & \text{else.} \end{cases}\]

或者

\[g \rightarrow \sigma \cdot g\]

其中:

\[\sigma = \min\{\frac{\lambda }{\|g\|}, 1.0\}\]

…(2)

裁剪阈值𝜆是一个超参数,控制最大允许的梯度范数$∥𝒈∥$。换句话说,如果在第𝑡步模型梯度$𝒈_𝑡$的大小很大,GC将通过标量裁剪因子$𝜎 \in R^+$重新调整梯度,将其范数限制为𝜆。在实践中,Frobenius范数(或𝐿2范数)$∥.∥_2$是向量范数的常见选择,裁剪通常独立应用于每一层。

自适应梯度裁剪(Adaptive Gradient Clipping)

从经验上,尽管GC可以提高模型的训练稳定性,但训练稳定性对裁剪阈值𝜆的选择极其敏感,需要为不同层进行细粒度调整。更糟糕的是,当模型结构、批量大小或学习率发生变化时,阈值𝜆需要重新调整。

为了克服这个负担,Brock等人[7]提出了自适应梯度裁剪(AGC)。AGC的动机是观察到梯度的范数$∥𝒈_𝑡∥$与模型参数的范数$∥𝒘_𝑡∥$的比率不应该很大,否则训练预计会不稳定

具体来说,梯度𝒈通过以下方式裁剪:

\[g \rightarrow \begin{cases} \lambda \frac{\|w\|}{\|g\|} g & \text{if } \frac{\|g\|}{\|w\|} \geq \lambda, \\ g & \text{else.} \end{cases}\]

或者

\[g \rightarrow \sigma \cdot g,\]

其中:

\[\sigma = \min\{\lambda \frac{\|w\|}{\|g\|}, 1.0\} \quad(3)\]

直观地说,如果在第𝑡步梯度范数 $| 𝒈_𝑡 |$大于参数范数 $𝜆·| 𝒘_𝑡 |$的一个分数,AGC将通过标量裁剪因子$\sigma \in R^+$重新调整梯度,将其范数限制为$𝜆 | 𝒘_t |$。AGC可以被视为GC的一个特例,其中裁剪阈值𝜆GC是模型参数的函数$𝜆GC=𝜆 \cdot AGC | 𝒘 |$。所以当使用AGC时,我们不需要为不同的层微调𝜆,这就是“自适应性”的来源。

4.1 训练动态的观察

尽管GC和AGC在各个领域都取得了成功,我们发现当它们应用在我们的模型中时,并不足以防止loss发散。为了更好地理解GC/AGC的局限性并提出更好的解决方案,我们检查了不使用任何基于梯度裁剪技术的模型训练。

图片名称

图4 (a) 我们深入研究了模型训练中的三个典型时刻:在步骤a之前,模型健康地训练着。然后在步骤b,模型的损失引起波动,AUC下降。最后在步骤c,损失完全发散,AUC下降到了0.5。 (b) 当检查模型顶层隐藏层的一些统计数据时,我们发现GC和AGC未能提供足够小的裁剪因子。而Clippy的裁剪因子可以比GC和AGC小两个数量级。补充材料的B节有其他层的统计数据。

  • 图4a显示了一个特定二元分类任务的训练loss和AUC。为了简化说明,让我们主要看3个最重要的训练步骤:步骤a、步骤b和步骤c。如我们所见,此模型在步骤a之前健康地训练:loss被最小化,AUC迅速提高。然而,在步骤b,模型的训练loss开始发散,AUC开始下降,尽管相对不明显。最后,在步骤c,这个模型完全发散,loss变大,AUC下降到0.5。
  • 图4b(左),我们仔细查看了一些顶级共享层的统计数据,以了解loss发散时发生了什么。在模型健康的步骤a之前,梯度范数$∥𝒈∥_2$相当一致。然后在步骤b增长到一个很大的值,表明那一刻loss曲率非常陡。由于我们没有应用任何模型稳定性处理,模型在步骤c完全发散,梯度范数$∥𝒈∥_2$变成了一个小值。这意味着这一层的所有预激活(应用非线性激活之前的值)已经达到了梯度非常小的状态3,导致loss发散变得不可恢复

知道发生了什么,我们构想了GC/AGC在这种情况下将如何反应。

  • 图4b(左)绘制了用于确定GC和AGC中裁剪因子的$∥𝒈∥_2$(蓝色)和$\frac{∥𝒈∥_2}{∥𝒘∥_2}$(橙色)的测量值。不出所料,这两种测量在步骤b变得更大。然而,这些测量的变化相对规模是不同的。$\frac{∥𝒈∥_2}{∥𝒘∥_2}$(橙色)比$∥𝒈∥_2$(蓝色)对loss曲率变化更敏感。这些测量的敏感度差异可能导致不同的裁剪因子𝜎,这是不同方法中梯度的重新调整乘数
  • 图4b(右)给出了使用$\lambda^{GC}=10^{−1}$和$\lambda^{AGC}=10^{−3}$作为裁剪阈值时GC和AGC的裁剪因子𝜎。通过检查裁剪因子,我们假设:GC/AGC无效的原因是它们未能在梯度范数突然增加时(即loss曲率变陡),提供足够的梯度约束(即未能提供足够的“有效步长”控制),因为缺乏敏感性。更具体地说,这两种方法都依赖于𝐿2范数,这对于只有少数几个坐标中剧烈的梯度变化不敏感,特别是当层宽度很大时

4.2 提出解决方案:Clippy

为了缓解这一局限性,我们提出了一种名为Clippy的新算法。Clippy对GC/AGC有两个主要变化:首先,它使用$𝐿_∞$范数而不是$𝐿_2$范数,以增加对各个坐标变化的敏感性。其次,它基于更新$𝒓_𝑡=𝒈_𝑡·𝑮_t^{−1/2}$而不是梯度$𝒈_𝑡$进行裁剪,因为更新是模型参数的实际变化,在使用Adagrad优化器时,更新可能与梯度大不相同。

具体来说,Clippy控制

\[\|r_{t}\|_{\infty} = \|g_{t} \odot G_{t}^{-1/2}\|_{\infty} < \lambda, \quad(4)\]

当不等式被违反时重新调整更新。从图4b中,我们可以看到当loss发散时,这个测量在步骤b有更剧烈的变化。假设我们使用$𝜆^{Clippy}=10^−1$作为裁剪阈值,由于测量的更好敏感性,Clippy产生的裁剪因子𝜎比GC/AGC小两个数量级。换句话说,我们希望Clippy即使在少数几个坐标陡峭的loss曲率时,也能对实际更新施加更大的约束。

正式地,我们在算法1中展示了Clippy。如所见,与我们在等式4中描述的相比,算法的第8行有一些微小但重要的变化。

  • (1) 引入绝对阈值。在Clippy中,我们使用两个超参数:与GC/AGC相似的相对阈值$𝜆_{rel}$,以及另一个绝对阈值$𝜆_{abs}$。引入绝对阈值$𝜆_{abs}$后,我们可以避免在模型参数为零(例如,初始化为零的偏差)或具有非常小的值时进行激进的裁剪。如4.3.1节所讨论的,这允许Clippy在训练过程中从GC风格切换到AGC风格。
  • (2) 考虑学习率。在计算裁剪因子时,我们在分母上有学习率$𝜂_𝑡$,以适应不同的学习率计划。如果学习率缓慢增加,这将在初始训练时放宽裁剪阈值,避免在训练的初始阶段收敛速度过慢。

4.3 额外讨论

4.3.1 与其他方法的关系

Clippy与其他方法有有趣的联系。在基于梯度裁剪的算法中,如果我们用原始梯度(而不是裁剪后的梯度)累积累加器。然后,我们可以有一个通用的Adagrad更新形式,包含上述所有算法

\[r_{t} = g_{t} \odot G_{t}^{-1/2}, \\ w_{t+1} = w_{t} - (\mu_{t} \sigma_{t}) r_{t}. \quad(5)\]

也就是说,不同算法用不同的裁剪因子𝜎𝑡来降低学习率𝜂𝑡。不同算法选择裁剪因子的方式总结在下面的表格中。

Clippy是GC/AGC/LAMB的结合体

首先,Clippy在训练过程中从GC风格切换到AGC风格。在模型训练初期,当 𝒘 ≈ 0时,$𝜆_{abs}$主导裁剪阈值$𝜆_{rel} \mid 𝒘_𝑡 \mid +𝜆_{abs}$,使得Clippy接近GC。在后续训练中,当$𝜆_{rel} \mid 𝒘 \mid ≫ 𝜆_{abs}$时,Clippy表现得更像AGC。然而,与GC/AGC相比,Clippy依赖于更新而不是梯度。此外,尽管Clippy和LAMB都使用更新,Clippy并没有像LAMB那样完全忽略更新的幅度。最后,Clippy使用𝐿∞范数而不是𝐿2范数,以对少数坐标中的剧烈更新变化更敏感。

4.3.2 局部裁剪还是全局裁剪

使用Clippy时,我们对每一层的更新进行裁剪(即局部裁剪),而不是对所有模型参数作为一个整体进行裁剪(即全局裁剪),这与其他方法(如GC/AGC/LAMB)类似。这提供了更细粒度控制的灵活性,但会导致有偏的梯度更新。然而,在大批量设置中,可以证明这种偏差很小[34]。

4.3.3 适应其他优化器

通过使用优化器依赖的更新𝒓𝑡,人们可以轻松地将Clippy适应于Adagrad之外的其他优化器。从经验上,我们还观察到,在Adam[19]上应用Clippy时,在不损害收敛性的情况下,训练稳定性有明显好处。但我们将Clippy的理论收敛性分析留给未来的工作。

5 实证研究

在本节中进行的实验是基于YouTube生产数据集进行的,实验分为两部分。首先,我们将Clippy与其他基线进行比较,以验证其在提高模型稳定性方面的优势。然后,我们将展示对Clippy的一些进一步分析,以更好地理解它的优势。

5.1 实验设置

5.1.1 模型细节。除了在第3.1节中已经介绍的所有模型属性外,值得一提的是,我们通过以下方式简化了我们的排序模型:(1) 仅保留最重要的任务子集和输入特征;(2) 使用具有几个共享隐藏层的简单共享底部结构。尽管比生产模型简单得多,我们发现它是一个足够好的测试平台,用于研究训练稳定性问题,因为它允许我们更快地训练模型,更专注于研究视角而不是不相关的建模细节。该模型是使用TensorFlow2 [1]构建的,并在TPU上使用65k的大批量大小进行训练。

5.1.2 评估协议。不幸的是,没有可靠的度量标准来量化模型的训练稳定性。为了准确衡量更好的训练稳定性带来的好处,我们改变模型复杂性以及学习率,然后检查模型的离线质量,对于二元分类任务用AUC衡量,对于回归任务用RMSE衡量。可以合理假设,更复杂的模型提供更好的离线质量,但更有可能遭受loss发散问题。因此,如果一种算法能显著提高模型的训练稳定性,我们应该在使用它时观察到更好的离线指标。更具体地说,我们使用数据的前(𝑁−1)天来顺序训练模型,并持续评估模型在最后一天(第𝑁天)数据上的性能(AUC或RMSE)。如果模型在训练期间没有遭受任何loss发散问题,我们应该观察到评估指标不断变好,因为模型正在适应更接近第𝑁天数据的数据分布。而如果模型在训练期间loss发散,无论是完全发散还是持续微发散,评估指标将受到显著影响。

为了探索模型复杂性的影响,我们考虑了表1中总结的各种模型设置。Small和Large都使用简单的前馈网络作为共享底部,分别有两层512和四层4096。Large+DCN是在Large的基础上构建的,通过在输入上添加DCN-v2层[31],然后是标准的层归一化[4],进一步增加了复杂性。

图片名称

表1

5.1.3 基线

我们在非嵌入式模型参数上应用Clippy和其他基线,并比较它们的有效性。以下是这些基线和Clippy的更多细节。

  • 梯度裁剪(GC)[24]:我们使用了逐层(局部)梯度裁剪,裁剪阈值从𝜆GC∈{10−1, 10−2, 10−3}中搜索得出。
  • 自适应梯度裁剪(AGC)[7]:我们使用了论文中提供的官方实现,并从𝜆AGC∈{10−2, 10−3, 10−4}中搜索裁剪阈值。
  • LAMB(适应Adagrad)[34]:LAMB最初是基于Adam[19]提出的,而作者还提供了我们在4.3.1节中介绍的通用裁剪形式。我们选择𝜙(𝑥)=𝑥,如官方实现。由于LAMB使用参数𝐿2范数∥𝒘∥2作为更新幅度,与其他方法不同,我们必须通过𝜇缩放学习率,并搜索𝜇∈{10−1, 10−2, 10−3}。
  • Clippy:Clippy有两个超参数𝜆abs和𝜆rel,所以调整可能更不平凡,但我们发现简单地设置𝜆rel=0.5和𝜆abs=10−2在我们的实验中就能给出不错的性能。

5.2 整体性能

表2展示了Clippy与其他基线在不同模型设置上的总体比较。尽管模型是在六项任务上训练的,但由于空间限制,我们只展示了两个最具代表性任务的指标——一个用AUC(百分比)评估的二元分类任务和另一个用RMSE评估的回归任务。我们不仅使用原始学习率,还尝试加倍学习率,看看是否有任何方法能从中受益。在确定了最佳学习率后,我们在不同的随机种子下重复相同的设置3次,并报告了平均值和标准差。

图片名称

表2

**查看表2,我们可以看到没有任何训练稳定性处理的简单方法总是会遭受loss发散,即使是在小型模型上也是如此。如果我们大幅降低学习率,它有机会存活下来(见补充材料的A.1节),但我们在这里省略了它的结果,因为它们很差。GC可以在2倍学习率下存活并为小型和大型模型提供良好的结果。但在具有DCN的更复杂模型中,GC只能使用1倍学习率,否则它将遭受loss发散问题(见图5a右侧的蓝线)。AGC在1倍学习率下对小型和大型做了合理的工作,但在2倍学习率下表现变差。在Large+DCN上,AGC使用1倍或2倍学习率都显示出非常高的方差(见图5a中的橙色线),表明AGC在保持训练稳定性方面已经达到了它的极限。LAMB使用1倍学习率成功地训练了模型,没有遭受训练不稳定问题,但收敛性受到了负面影响。在图5a中,我们发现LAMB的结果总是比其他方法差。我们认为这是由于LAMB完全忽略了更新幅度,导致在参数𝐿2范数很小时,初始训练的收敛非常慢。令人惊讶的是,在所有设置中,GC在所有基线中表现最佳,这可能是因为模型相对简单,因此调整GC的裁剪阈值仍然很容易。

图片名称

图5

在表2的最后一列,我们可以看到Clippy在所有模型设置中使用2倍学习率。更重要的是,Clippy没有妥协收敛性,它在小型和大型模型上与GC(即最佳基线)具有可比的结果(见图5b),并且在Large+DCN模型上与GC相比有显著更好的AUC(请注意,在我们模型中0.1%的AUC改进被认为是非常显著的,并且可以导致实时度量增益)和RMSE。

我们想要强调的一个重要发现是,当模型更复杂并且使用更大的学习率训练时,Clippy提供了更大的增益。在图5b中,我们可以看到当使用更复杂的模型和2倍学习率时,Clippy和GC之间的差距正在扩大。所以我们不惊讶Clippy可以在比Large+DCN复杂得多的生产模型中提供帮助。

5.3 仔细看看Clippy的裁剪因子

图片名称

图6

图6显示了在训练Large+DCN模型过程中Clippy在不同层的裁剪因子。如第4节中介绍的,裁剪因子𝜎∈(0.0, 1.0]。较小的裁剪因子表示进行了更多的裁剪以降低学习率。由于裁剪是逐层应用的,我们为几个层绘制了裁剪因子,包括(1)DCN层的权重,在(2)共享底部的(3)顶层和(4)底层隐藏层,以及在(5)二元分类任务和(6)回归任务的输出层。有趣的是,我们看到模型的底层进行了更多的裁剪。我们认为这直观上是有意义的,因为底层通常有较小的参数范数,所以Clippy的裁剪阈值也会较小。另一方面,这可能有助于训练稳定性,因为我们知道底层权重的微小变化可能导致模型输出的很大差异。

#

#

https://arxiv.org/pdf/2302.09178

香港科技大学团队在《Decoupled Side Information Fusion for Sequential Recommendation》提出了一种使用side information的序列建模新方案。

摘要

序列推荐(SR)中的边信息融合(Side Information Fusion)旨在有效利用各种边信息(side information)来提高下一个item的预测效果。大多数最先进的方法都建立在自注意力(self-attention)网络之上,并专注于探索各种解决方案,以在注意力层之前将item embedding和side-info embedding进行整合。然而,我们的分析表明,各种类型embedding的早期整合由于秩瓶颈(rank bottleneck)限制了注意力矩阵的表现力,并限制了梯度的灵活性。此外,它涉及不同异构信息资源之间的混合相关性(mixed correlations),这给注意力计算带来了额外的干扰。受此启发,我们提出了一种用于序列推荐的解耦边信息融合(DIF-SR),它将边信息从输入层移动到注意力层,并解耦了各种边信息和item表示的注意力计算。我们从理论和实证上展示了所提出的解决方案允许更高秩的注意力矩阵和灵活的梯度,以增强边信息融合的建模能力。此外,还提出了辅助属性预测器,以进一步激活边信息与item表示学习之间的有益交互。在四个真实世界数据集上的广泛实验表明,我们提出的解决方案稳定地超越了最先进的SR模型。进一步的研究表明,我们提出的解决方案可以轻松地集成到当前基于注意力的SR模型中,并显著提升性能。我们的源代码可在 https://github.com/AIM-SE/DIF-SR 上获取。

1.介绍

序列推荐(SR)的目标是:根据用户的历史行为来模拟他们动态的偏好,并推荐下一个item。随着在线场景中广泛而实际的应用,SR已经成为一个越来越吸引人的研究话题。提出了多种基于深度学习的解决方案[8, 17, 31],并且基于自注意力[27]的方法[11, 25, 28]成为具有竞争力的主流解决方案。在基于自注意力方法的近期改进方法中,一个重要的分支是与边信息融合[16, 33, 34, 37]相关的。与仅使用item ID作为item属性的先前解决方案不同,边信息(如其他项目属性和评分)被考虑在内。直观地说,高度相关的信息可以有益于推荐。然而,如何有效地将边信息融合到推荐过程中仍然是一个具有挑战性的开放问题。

许多研究工作致力于在推荐的不同阶段融合side information。具体来说,早期的尝试FDSA [34]结合了两个独立的自注意力块分支,用于item和特征,并在最后阶段进行融合。S3-Rec [37]在预训练阶段使用自监督属性预测任务。然而,FDSA中项目和边信息表示的独立学习以及S3-Rec中的预训练策略,很难允许边信息(side info)直接与item自注意力进行交互。

最近,一些研究设计了将边信息嵌入(side-info embedding)整合到注意力层(attention layer)之前的item表示中的解决方案,以实现边信息感知的注意力。ICAI-SR [33]在注意力层之前使用属性到item的聚合层来整合边信息(side-info)到item表示中,并为训练使用独立的属性序列模型。NOVA [16]提出将纯item ID表示和整合边信息(side-info)的表示同时输入到注意力层,后者仅用于计算注意力的key和query,保持value的非侵入性。

尽管取得了显著的改进,当前基于早期整合的解决方案[16, 33]仍然存在几个缺点。

  • 首先,我们观察到,在注意力层之前整合embedding会遭受注意力矩阵的秩瓶颈,导致注意力得分表示能力较差。这是因为先前解决方案的注意力矩阵的秩本质上受到多头Q-K(multi-head query-key)的下投影(down-projection)size $d_h$的限制,这通常比矩阵可以达到的要小。我们在第4.2.4节中进一步从理论上解释了这种现象。
  • 其次,在复合embedding空间上执行attention可能会导致随机干扰,其中,来自各种信息资源的混合embedding不可避免地会关注无关信息。输入层中位置编码的类似缺点已被讨论[5, 12]。
  • 第三,由于整合嵌入(integrated embedding)在整个注意力块(attention block)中仍然不可分割,早期整合迫使模型开发复杂而沉重的整合解决方案和训练方案,以实现各种边信息的灵活梯度。使用简单的融合解决方案(例如广泛使用的加法融合),所有嵌入在训练中共享相同的梯度,这限制了模型学习边信息编码相对于item嵌入的相对重要性

为了克服这些限制,我们提出了一种用于序列推荐的解耦边信息融合(DIF-SR)。受到解耦位置嵌入[2, 5]成功经验的启发,我们提出要彻底探索和分析解耦嵌入(decoupled embedding)在序列推荐中边信息融合的效果。具体来说,我们不是早期整合,而是将融合过程从输入层移动到注意力层。我们通过为注意力层中的每个属性和item分别生成key和query来解耦各种边信息(side-info)以及项目嵌入(item embedding)。然后,我们使用融合函数融合所有的注意力矩阵。这种简单而有效的策略直接使我们的解决方案突破了秩瓶颈,从而增强了注意力机制的建模能力。图1显示了当前基于早期整合解决方案和我们的解决方案在相同embedding大小d和head投影(head projection)大小\(d_h\)下的秩比较。我们的解决方案避免了由于异构嵌入的混合相关性引起的不必要的注意力随机性。同时,它还实现了灵活的梯度,以适应不同场景中各种边信息的学习。我们进一步提出在多任务训练方案中使用轻量级的辅助属性预测器(AAP),以更好地激活边信息,对学习最终表示产生有益的影响。

图片名称

图1 注意力矩阵的秩:比较基于早期集成嵌入的解决方案(即SASRecF和NOVA)与我们提出的DIF-SR在注意力分数矩阵的平均秩方面的差异。嵌入的早期集成导致注意力矩阵的秩降低,限制了表现力。

实验结果表明,我们提出的方法在序列推荐的四个广泛使用的数据库上超越了现有的基础SR方法[8, 11, 25, 26]和具有竞争力的边信息集成SR方法[16, 33, 37],包括亚马逊美容、体育、玩具和Yelp。此外,我们提出的解决方案可以轻松地集成到基于自注意力的基础SR模型中。对两个代表性模型[11, 25]的进一步研究表明,当基础SR模型集成了我们的模块时,取得了显著的改进。对注意力矩阵的可视化还提供了对解耦注意力计算和注意力矩阵融合合理性的解释。

我们的贡献可以总结如下:

  • 我们提出了DIF-SR框架,它能够有效地利用各种边信息进行序列推荐任务,具有更高的注意力表示能力和灵活性,以学习边信息的相对重要性。
  • 我们提出了新颖的DIF注意力机制和基于AAP的训练方案,这些可以轻松地集成到基于注意力的推荐系统中并提升性能。
  • 我们从理论和实证上分析了所提出解决方案的有效性。我们在多个真实世界数据集上实现了最先进的性能。全面的消融研究和深入分析展示了我们方法的鲁棒性和可解释性。

2.相关工作

2.1 序列推荐(Sequential Recommendation)

序列推荐(SR)模型的目标是:从用户的历史序列交互数据中捕捉用户的偏好,并进行下一个item的预测。早期的SR研究[6, 10, 23, 38]通常基于马尔可夫链假设和矩阵分解方法,这些方法难以处理复杂的序列模式。随后,受到深度学习技术在序列数据上成功应用的启发,许多研究者提出使用神经网络,如卷积神经网络(CNNs)[26, 32]、循环神经网络(RNNs)[8, 19, 21, 22, 30, 36]、图神经网络(GNNs)[1]和变换器[11, 25, 28]来模拟用户-item交互。具体来说,基于自注意力的方法,如SASRec[11]和BERT4Rec[25],因其能够捕捉item之间的长期依赖关系而被认为具有强大的潜力。最近,提出了许多针对基于自注意力解决方案的改进,考虑了个性化[28]、项目相似性[15]、一致性[7]、多种兴趣[5]、信息传播[29]、伪先前项目增强(pseudo-prior items augmentation)[18]、模式(motifs)[3]等。然而,大多数当前的SR方法通常假设只有item ID可用,并没有考虑项目属性等边信息,忽略了这些高度相关的信息可以提供额外的监督信号。与基础的SR解决方案不同,我们的工作与边信息感知的SR紧密相关,旨在设计有效的融合方法,更好地利用各种边信息。

2.2 序列推荐的side info融合

边信息感知(side-info aware)的SR已经成为推荐系统领域公认的重要研究方向。近年来,在基于注意力的SR模型中,边信息融合(side-info fusion)也得到了广泛的探索。

  • FDSA [34]:采用不同的自注意力块来编码item和边信息,它们的表示直到最后阶段才融合。
  • S3-Rec [37]:采用预训练来包含边信息。具体来说,设计了两个预训练任务来利用这些有意义的监督信号。

这些方法验证了边信息可以帮助下一个项目的预测。然而,它们并没有有效且直接地使用边信息来帮助item表示和预测的注意力聚合

一些最近的工作尝试在注意力层(attention layer)之前将边信息嵌入到item嵌入中,以便最终表示的注意力学习过程可以考虑边信息(side info)。

  • 早期的工作如p-RNN[9]:通常使用简单的串联直接将边信息注入到item表示中。
  • ICAI-SR [33]:使用item-属性聚合模型根据构建的异构图计算item和属性embedding,然后将这些融合的embedding输入到序列模型中以预测下一个item。并行实体序列模型用于训练。
  • NOVA[16]:提出在不损害item嵌入空间一致性的情况下融合边信息,其中集成的embedding仅用于Key和Query,value来自纯item ID嵌入。

尽管有所改进,我们认为这些基于集成embedding和异构信息资源之间的耦合注意力计算的方法存在包括有限的表示能力、不灵活的梯度和复合嵌入空间等缺点。

3.问题公式

在本节中,我们明确了边信息集成序列推荐的研究问题。

  • 设I、U:分别表示item和user的集合。
  • 对于用户$u \in U$,用户的历史交互可以表示为: $𝑆_𝑢= [ 𝑣_1, 𝑣_2, \cdots, 𝑣_𝑛]$,其中:$𝑣_𝑖$表示按时间顺序排列的序列中的第i次交互。
  • 边信息:可以是用户的属性、item的属性、和行为的属性,这些为预测提供了额外的信息。根据先前工作[16]的定义,边信息包括与项目相关的信息(例如,品牌、类别)和与行为相关的信息(例如,位置、评分)。

假设我们有p种类型的边信息。那么,对于边信息集成的序列推荐,每次交互可以表示为:

\[v_i=(I_i , f_i(1), \cdots, f_i(p))\]

其中:

  • $f_i(j)$表示序列中第i次交互的第j种类型的边信息
  • $I_i$: 表示第i次交互的item ID

给定这个序列$S_u$,我们的目标是预测用户u最有可能与之交互的item $Item_{pred} \in I$:

\[Item_{pred}=I^{(\widehat{k})}\]

其中:

  • $\widehat{k}=argmax_{k} ​P(v_{n+1}=(I^{(k)}, ⋅) \mid S_u)$

4.方法

在本节中,我们将介绍我们的DIF-SR,以有效且灵活地融合边信息以帮助下一个项目预测。DIF-SR的整体架构如图2所示,由三个主要模块组成:嵌入模块(第4.1节)、解耦边信息融合模块(第4.2节)和带有AAP的预测模块(第4.3节)。

图片名称

图2 提出的框架总览

4.1 嵌入模块

在嵌入模块中,输入序列 $S_u=[v_1, v_2, \cdots, v_n]$ 被输入到item embedding层和各种属性embedding层,以获取item嵌入 $E_{ID}$ 和边信息嵌入 $E^{f_1}, \cdots, E^{f_p}$:

\[E^{ID} = \epsilon_{id}([I_1, I_2, \cdots, I_n]) \\ E^{f_1} = \epsilon_{f_1}([f_1^{(1)}, f_2^{(1)}, \cdots, f_n^{(1)}]) \\ \cdots \\ E^{f_p} = \epsilon_{f_p}([𝑓_1^(𝑝), 𝑓_2^{(p)}, \cdots, 𝑓_𝑛^{(p)}])\]

其中:

  • $\epsilon$表示相应的embedding layer,它可以将该item和不同item属性编码成vectors。
  • $M_{𝑖𝑑} \in R^{\mid I \mid×𝑑}, 𝑀_{𝑓_1} \in R^{ \mid 𝑓_1 \mid × 𝑑_{𝑓_1}} , \cdots, 𝑀_{𝑓_𝑝} \in R^{\mid 𝑓_𝑝 \mid × 𝑑_{𝑓_𝑝}}$: look-up embedding矩阵
  • $\mid \cdot \mid$ 表示相应的不同items和多种side info的总数
  • d和$d_{f_1}, \cdots, d_{f_p}$:分别表示item embedding维度、side info的维度

请注意,由所提出的DIF模块中的操作支持,不同类型的属性可以灵活地使用嵌入维度。在第5.4.3节中进一步验证了,我们可以为属性应用比item更小的维度,从而在不损害性能的情况下大大提高网络的效率。然后,嵌入模块得到输出嵌入:

\(E_{ID​} \in R^{n×d},E_{f_1} \in R^{n×d_{f_1}}​​, \cdots, E_{f_p} \in R^{n×d_{f_p}}​\)​

4.2 解耦边信息融合模块

我们首先在第4.2.1节中指定了模块的整体层结构。为了更好地说明我们提出的DIF注意力,我们在第4.2.2节中讨论了先前解决方案[11, 16]的自注意力学习过程。之后,我们在第4.2.3节中全面介绍了所提出的DIF注意力。最后,在第4.2.4节中,我们对DIF在增强模型表现力方面的理论分析进行了阐述,包括注意力矩阵的秩和梯度的灵活性。

4.2.1 层结构

如图2所示,解耦边信息融合模块包含多个堆叠的序列组合DIF注意力层和前馈层块。该块结构与SASRec[11]相同,只是我们将原始的多头自注意力替换为多头DIF注意力机制。每个DIF块涉及两种类型的输入,即当前item表示和辅助边信息嵌入,然后输出更新后的item表示。请注意,辅助边信息嵌入不会逐层更新,以节省计算量并避免过拟合。设:

  • $R_i^{(ID)} \in R^{n×d}$:表示第i块的输入item表示。

该过程可以表示为:

\[R_{i+1}^{(ID)}= LN(FFN(DIF(R_i^{(ID)}, E^{f_1}, \cdots, E^{f_p}))) \\ R_1^{(ID)}=E_{ID}\]

…(2)(3)

其中:

  • FFN代表全连接前馈网络,LN表示层归一化。

4.2.2 先前注意力解决方案

图3展示了将边信息融合到item表示更新过程中的先前解决方案的比较。在这里,我们重点关注自注意力计算,这是几种解决方案的主要区别。

图片名称

图3 各种解决方案的item表示学习过程的比较。(a) SASRecF:SASRecF将边信息融合到item表示中,并使用融合后的item表示来计算K、Q和V。(b) NOVA-SR:NOVA-SR使用融合的item表示来计算K和Q,同时保持V的非侵入性。(c) DIF-SR:与早期融合以获得融合的item表示不同,所提出的DIF-SR解耦了各种边信息的注意力计算过程,以生成融合的注意力矩阵,从而提高表示能力,避免混合相关性,并实现训练梯度的灵活性。

SASRecF:如图3(a)所示,该解决方案直接将边信息嵌入到item表示中,并在集成嵌入上执行普通的自注意力,这是从原始的SASRec [11]扩展而来的。

设输入长度为n,hidden size为d,多头Q-K下投影size为$d_h$,我们可以设:

  • $R \in R^{n×d}$表示集成嵌入
  • $W_Q^i, W_K^i, W_V^i \in R^{d×d_h}$ ​:$i \in [h]$表示h个头的查询、键和值投影矩阵($d_h=d/h$),

然后注意力分数的计算可以形式化为:

\[SAS\_att^i ​ =(RW_Q^i)(RW_K^i)^T\]

…(4)

然后每个头的输出可以表示为:

\[SAS\_head^{i}=\sigma(\frac{SAS\_att^{i}}{\sqrt{d}})(RW\_V^i)\]

…(5)

其中:

  • σ 表示Softmax函数。 尽管这个解决方案允许边信息直接影响item表示的学习过程,但观察到这种方法有一个缺点,即侵犯了item表示[16]。

NOVA:为了解决上述问题,[16]中的工作提出了一种非侵入式的边信息融合方法。如图3(b)所示,NOVA从集成嵌入$R \in R^{n×d}$计算Q和K,而从纯item ID嵌入$R (ID) \in R^{n×d}$计算V。同样, $ W_Q^i, W_K^i, W_V^i \in R^{d×d_h}, i \in [h]$ 表示Q、K和V的投影矩阵:

\[NOVA\_att^{𝑖}=(RW_Q^i)(RW_K^i)^T\]

…(6)

然后每个head的输出可以表示为:

\[NOVA\_head^i=\sigma(\frac{NOVA\_att^i}{\sqrt{d_h}})(R^{(ID)} W_V^i)\]

…(7)

在NOVA方法中,通过将Q和K从集成嵌入中计算,而将值从纯item ID嵌入中计算,它试图保持item表示的一致性,同时允许边信息在注意力计算中发挥作用。这种方法减少了边信息对item表示的直接影响,但仍然允许它通过注意力机制影响最终的item表示。

4.2.3 DIF注意力

我们认为,尽管NOVA解决了Value的侵入问题,但使用集成嵌入(integrated embedding)来计算Key和Value仍然存在复合注意力空间(compound attention space)的问题,以及在注意力矩阵的秩和训练梯度灵活性方面表现力的降低。支持这种观点的理论分析在第4.2.4节中展示。

因此,与之前将属性embedding注入item表示以形成混合表示(mixed representation)的研究不同,我们提出利用解耦边信息融合(decoupled side information fusion)解决方案。如图3(c)所示,在所提出的解决方案中,所有属性自身进行自注意力以生成解耦的注意力矩阵,然后将其融合到最终的注意力矩阵中。解耦的注意力计算通过打破由head投影size $d_h$限定的注意力矩阵的秩瓶颈,提高了模型的表现力。它还避免了梯度的不灵活性和不同属性与item间的不确定交叉关系,以实现合理且稳定的自注意力。

给定:

  • 输入长度n
  • item hidden size为d
  • 多头Query-Key下的投影尺寸$d_h$,

对于item表示$R^{(ID)} \in R^{n×d}$,我们有:

  • $W_Q^i, W_K^i, W_V^i ​\in R^{d×d_h}, i \in [h]$ 分别表示对应于h($d_h=d/h$)个heads的query、key、value的投影矩阵

然后item表示的注意力分数计算如下:

\[att_{ID}^i=(R^{(ID)} W_Q^i)(R^{(ID)} W_K^i)^T\]

…(8)

与之前的工作不同,我们还为每个属性生成多头注意力矩阵,有属性嵌入:$E^{f_1} \in R^{n×d_{f_1}}, \cdots, E^{f_p} \in R^{n×d_{f_p}}$。注意我们有: $𝑑_{𝑓_𝑗}≤𝑑, 𝑗 \in [𝑝]$ 以避免过度参数化并减少计算开销。

然后我们有对应的 $W_Q^{(f_j)i}, W_K^{(f_j)i}, W_V^{(f_j)i} ​ \in R^{d×d_{h_j}}, i \in [h], j \in [p]$,表示h个头的query、key和value投影矩阵($d_{hj}=d_{fj}/h$):

\[att_{f_1}^i =(E^{f_1} ​ W_Q^{(f_1)i}) (E^{f_1} W_K^{(f_1)i})^T,\\ \cdots \\ att_{f_p}^i =(E^{f_p} ​ W_Q^{(f_p)i}) (E^{f_p} W_K^{(f_p)i})^T,\\\]

…(9)

然后我们的DIF注意力通过融合函数F 融合所有的注意力矩阵,该函数在先前的工作[16]中进行了探索,包括加法、连接和门控机制,并得到每个头的输出:

\[DIF\_att^i=F(att_{ID}^i, att_{f_1}^i, \cdots, att_{f_p}^i), \\ DIF\_head^i​=\sigma(\frac{DIF\_att^i}{\sqrt{d}})(R^{(ID)} W_V^i)\]

…(10)

最后,所有注意力头(attention heads)的输出被拼接起来(concatenated)并输入到前馈层(feed-forward layer)。

#

#

kuaishou在《Tree based Progressive Regression Model for 观看时长预估 in Short-video Recommendation》提出了TPM的模型。

摘要

关于观看时长(watch time)的精准预估,对于视频推荐系统中增强user engagement来说非常重要。为了达到它,在一个观看时长预估框架中需要满足4种属性:

  • 首先,尽管观看时长是个连续值,它也是一个序数变量(ordinal variable),它的值的相对序会影响着用户体验上的差异。因此,这种序数关系(ordinal relations)会在观看时长预估中被影响。
  • 第二,视频观看行为间的条件依赖,可以在模型中被捕获。例如,在用户完成观看整个视频之前,它必须已经看了视频的一半
  • 第三,使用点估计(point estimation)来建模观看时长会忽略掉以下事实:模型会给出具有高度不确定的结果,这会造成badcase
  • 第四,真实推荐系统会有偏差放大(bias amplifications),因而需要进行无偏估计

如何设计一个框架来解决上述4个问题仍是未被探索充分的。因此,我们提出TPM(Tree-based Progressive regression Model)来进行观看时长预估。特别的,观看时长的序数排名(ordinal ranks)会被引入到TPM中,该问题被解耦成一系列的条件依赖的分类任务,它们会以树结构进行组织。期望观看时长可以通过遍历该tree来生成,观看时长预估的变种会被显式引入到目标函数中作为不确定性(uncertianty)的一种measurement。再者,我们演示了后门调整(backdoor adjustment)可以被无缝混合在TPM中,它可以缓解偏差放大(bias amplifications)问题。

1.介绍

获得推荐内容的用户具有更高观看时长,趋向于在平台上留存更久,带来DAU的增长。

尽管它很重要,但观看时长预估在之前的研究中并没有被广泛研究。我们会讨论在观看时长建模上一些特别重要的方面:

首先,观看时长预估本质上是一个regression问题,但在观看时长预估间的序数关系(ordinal relation)是在推荐中很重要。

  • 一方面,观看时长是一个连续随机变量,推荐系统需要获得一个关于观看时长的精准预估,才能在下游阶段进一步使用;
  • 另一方面,观看时长是视频对比的一个指标,预估的顺序关系也非常重要。

例如,对于一个视频给定关于观看时长的两个预估:\(T_1 = 3.5s, T_2 = 4.5s\),而ground truth是:\(T=4s\)。在MAE上两个预估具有相同的regression error:0.5s。然而,这两个预估会在推荐系统上导致非常不同的结果。由于系统通常趋向于推荐具有更高预估观看时长(predicted watch time)的视频,具有预估值4.5s的视频,要比预估值为3.5s的视频更可能被推荐。因此,使用直接回归来估计观看时长在建模观看时长的顺序关系时会失败。ranking losses只关注于顺序关系,可能会导致预估值本身离ground truth偏离非常远。因此,一个关于观看时长预估的好公式,可以同时满足两者。

第二,在视频观看行为中,存在着较强的条件依赖。例如,用户在看完整个视频前,肯定会看过一半的视频。这与电商平台上的点击(click)和post-click行为(购买)的情况相似。该条件依赖需要在观看时长预估上考虑。

第三,为了确保观看时长的一个健壮预估,我们期望:prediction模型对于它的预估值来说是uncertainty-aware的。对于大多数回归模型,目标是:通过最小化一个$L_1$或$L_2$ loss,来获得一个精准的点估计。因而,该模型必须生成具有较高不确定的预估。对于真实推荐系统来说,这会导致base cases:模型会分配那些具有高排序的次优视频,造成不满意的用户体验。然而,如何在观看时长建模上建模不确定性(uncertainty)仍是欠研究的。

第四,大多数真实推荐系统存在bias amplifications问题(例如:sample selection bias, popularity bias)。由于模型的训练数据通常从平台的日志中收集,这会造成非常严重的bias amplification。根据之前的研究,视频推荐系统会偏向于具有更长duration的视频,这验证了bias amplification的存在。

给定上述4个问题,我们会review在观看时长预估上的已存在研究。尽管这些方法解决了一些重要限制,并能达到一些较好效果,但这些方法均没考虑上述4个问题。我们会研究两个在观看时长预估上的SOTA方法:(WLR[3]和D2Q[19]),如表1所示。

表1

在WLR中,训练样本有正例(被点击的视频曝光)或负例(未点击的曝光)。观看时长预估会被看成是一个二分类问题(bianry classification),其中:正样本会在cross-entropy loss中加权上观看时长。因此,由分类学到的可能性近似等同于期望观看时长(expected watch-time)。尽管它简单有效,WLR仍有一些限制:这会阻止使它在全屏视频推荐系统(full-screen:其中所有的视频曝光均会被观看)中的直接使用。因此,WLR必须使用人工设计的正例和负例样本和权重(weights),这会造成在watch-time上的一个较差近似。同时,bias amplification效应在WLR会被放大,因为更多的weights会被分配给更长duration的视频。D2Q[19]通过将videos根据它们的durations进行划分成不同的groups来缓解duration bias,并在每个group使用传统的regression models进行建模观看时长。因此,在观看时长值上的普通关系和条件依赖会被忽略;再者WLR和D2Q会将观看时长预估看成是一个点估计问题(point estimation problem),因而预估的不确定性(uncertainty of predictions)会被忽略。

考虑到上面的4个问题,我们提出了一个新框架:TPM用于观看时长预估来解决它们。特别的,观看时长会被split成多个序数间隔(ordinal intervals),并且观看时长预估等价于一个搜索问题,决定预估观看时长属于哪个interval。该搜索过程会被建模成一个以树结构组织的一系列决策问题。在树中的每个中间节点都代表了一个决策问题,哪会使用一个相应的分类器进行分配。同时,每个叶子节点表示ordinal intervals的其中之一,它会使用一个观看时长的期望值来进行分配。接着,从upper level产生的结果会变成在当前节点决策的条件。因此,从root node到一个特定leaf node的path,对应于一个包含了一串决策的搜索路径(searching trajectory)。我们在图1中的一个示例会用于演示该框架。

图片名称

图1

我们解释了,TPM是如何解决这4个问题的:

  • 首先,我们将ordinal ranks引入到观看时长的逼近中。回归任务被解耦成多个二分类任务,它们的labels与 ordinal ranks相关联。这种近似(approximation)会使用观看时长的连续性、以及在ranks间的顺序关系。
  • 第二,我们将条件依赖引入到TPM中。一个子节点的每个任务依赖于来自父节点的任务之上。这种方式下,在多个解耦分类任务间的条件依赖是puch显式建模的。注意,有许多关于该预估任务的解耦模式,我们可以将任务的条件依赖编码到模型中。
  • 第三,为了确保关于观看时长预估的框架足够健壮,我们会将模型不确定性引入到目标函数中。由于将观看时长划分成多个ranks,预估的观看时长可以被看成是一个来自multinomial分布的随机变量,我们可以显式计算预估观看时长的方差(variance),它可以被看成是关于模型不确定性(model uncertainty)的一个metric。由于它被引入目标函数中,因此,TPM会获得一个关于观看时长的高置信的精准预估。
  • 第四,我们会在bias的混杂效应上进行因果分析,并展示了backdoor调整等价于在多分类任务上进行一个特定解耦。我们展示了该方法应用到不同的biases上,并且D2Q可以看成是 TPM的一个特例。

注意,TPM的结论与决策树相似,我们会讨论:它具有与回归的常规树模型间的显著差异:

  • 1) TPM使有树结构来将纯回归问题解耦成一系列分类问题,因而,在label space(例如:观看时长 intervals的划分)上进行解耦;而树模型会将feature space划分到预估的子空间上。
  • 2)在TPM中的tree-alike解耦,会将每个node分配一个相应的分类器(类似于neural networks)进行决策;而常规树模型则直接学习一个用于labeling的feature partition规则。

2.相关工作

2.1 观看时长预估

观看时间预测是工业推荐系统(特别是短视频和电影推荐系统)中最关注的问题之一。然而,据我们所知,这个领域只有少数几篇论文[3, 19]。第一项工作[3]专注于YouTube的视频推荐,并提出了加权逻辑回归(即WLR)方法来进行观看时间预测。WLR已成为相关应用中的最先进的方法。然而,这种方法不能直接应用于全屏视频推荐系统,并且由于其加权机制,WLR可能会遭受严重的偏差问题。D2Q[19]通过进行后门调整来减轻时长偏差,并使用直接的观看时间分位数回归来建模观看时间。然而,这种方法忽略了分位数之间的序数关系和依赖性。此外,这两种方法都是通过点估计来建模观看时间,没有考虑预测的不确定性。

2.2 序数回归(Ordinal regression)

序数回归是一种预测序数标签的技术,即标签的相对顺序很重要。它的应用可以在年龄估计[12]、单目深度估计[6]、头部姿态估计[7]中找到。尽管序数回归有广泛的应用,但它尚未被应用于观看时间预测任务。

大多数序数回归算法都是从经典分类算法修改而来。例如,SVM已经与多个阈值结合并应用于视觉分类[14];另一个例子是与在线感知算法[4]的结合,用于评分预测。此外,类别属性中的排序信息被利用来将序数回归转化为多个分类问题[5]。值得注意的是,决策树在这项工作[5]中被使用。然而,序数回归中的二元分类问题不像TPM中的那些是条件依赖的,这是一个根本的区别。

2.3 基于树的神经网络推荐

基于树的模型和神经网络是各种机器学习应用中的强大模型,特别是在推荐系统中。基于树的方法如LambdaMART[2]在排名任务中相当有竞争力。同时,神经网络在利用稀疏和复杂特征方面实现了最先进的性能。

然而,很少有努力将两种方法的优势结合起来。早期的研究[10]尝试将决策树与神经网络结合起来进行搜索。两个模型通过集成学习技术(例如线性组合和堆叠)结合,组合模型比单一模型实现了更优越的性能。此外,树模型已被用于增强嵌入模型以实现可解释推荐[16]。

TDM[20, 21]是结合基于树的模型和神经网络进行推荐的示例。TDM的思想是将候选检索过程组织为沿树的搜索过程,以便以对数复杂度检索最受欢迎的候选。TPM与TDM在几个重要方面不同:首先,TPM旨在预测给定用户和相应视频的观看时间,而TDM旨在从庞大的素材库中检索相关候选;其次,TPM使用树结构进行问题分解,而TDM利用树结构进行素材划分;第三,TPM遍历树以预测预期观看时间,而TDM使用束搜索来搜索目标叶节点。

2.4 去偏推荐

为了解决推荐系统中的偏差问题,已经做了许多研究。关于此主题的先前研究大致可以分为以下三类:

  • 逆倾向得分:首先基于某些假设计算样本的倾向得分,然后样本在目标函数中以逆倾向得分进行加权。例如,曝光倾向已被用于解决随机缺失问题[13];然而,这种方法的性能有时不稳定,因为估计的倾向得分方差较高。通过倾向得分裁剪或双重鲁棒学习[17],可以通过数据填充来缓解这个问题。

  • 因果嵌入:这种方法[1]将相关嵌入分解为无偏成分和有偏成分。两个成分都在训练阶段使用,而在推理阶段丢弃有偏成分以获得无偏预测。

  • 因果干预:将偏差的原因引入方法中,并进行干预以消除它们对推荐的影响。随机化和后门调整是因果干预的两种代表性方法。然而,在实际推荐系统上进行随机实验成本很高,后门调整[15, 19]在实际场景中更受青睐。因果干预方法已被用于观看时间预测中,以消除时长偏差。我们展示了后门调整可以无缝地整合到TPM中,这种方法也适用于其他混杂因素。

3.TPM

3.1 TPM的公式化

给定一个训练实例(𝑋,𝑇),其中:

  • 𝑋代表用户和视频的特征,
  • 𝑇代表观看时间

观看时间预测的目的是要找到一个模型M,使得在某些度量下,预测M(𝑋)接近𝑇。

我们不是将问题视为直接回归,而是首先将尺度量化为序数等级:$\lbrace 𝛾_0 \leq 𝛾_1, \cdots, 𝛾_𝑘, \cdots, \leq 𝛾_𝑚 \rbrace$,然后将观看时间预测视为预期序数等级的估计。从序数等级的估计类似于具有迭代比较的搜索过程。

例如,如果我们沿着等级进行线性搜索,搜索过程如下:

我们首先判断:$𝑡(𝑥) ≤ 𝛾_0$ 还是大于$𝛾_0$。 如果$𝑡(𝑥) ≤ 𝛾_0$,则预测的序数等级是$𝛾_0$;否则,我们继续判断:$𝑡(𝑥) ≤ 𝛾_1$,还是大于$𝛾_1$。如果为true,那么等级是$𝛾_1$,否则这个过程继续。这个过程一直进行,直到最终找到区间。

如果我们进行二分搜索,那么搜索过程就变成了:我们首先决定$𝑡(𝑥) \leq 𝛾_𝑚/2$:如果为true,那么𝑡(𝑥)属于集合$\lbrace 𝛾_0, 𝛾_1, \cdots, 𝛾_𝑚/2 \rbrace$;否则它属于$\lbrace 𝛾_𝑚/2+1, \cdots, 𝛾_𝑚 \rbrace$的等级。这个过程继续,搜索空间缩小到某个等级。

注意,每个搜索过程由一系列决策组成,我们提出将观看时间预测模型拟合成从根到叶节点沿树的搜索过程。(见图2):对于线性搜索情况,树是一个不平衡的二叉树;对于二分搜索情况,它是一棵平衡的二叉树。

图片名称

图2 TPM中两个分解树的示例

因此,我们提出了一个基于树的渐进模型(TPM)用于观看时间预测。模型由问题分解的树T和相应的分类模型$\lbrace M_𝑖,𝑖 \in \lbrace 0, 1, …, \mid 𝑁_T \mid − \mid 𝐿_T \mid \rbrace \rbrace$组成,其中:

  • $𝑁_T$是T中的节点集合,
  • $𝐿_T$是T中的叶节点集合(见图2为概览)

TPM中的树T由一组节点组成:$T(X) = \lbrace 𝑁_T ∪ 𝐿_T \rbrace$。

  • 每个非根节点$n_i$:代表一个由连续序数等级组成的区间,即$𝑛_𝑖:[𝛾_{𝑠_𝑖},𝛾_{𝑒_𝑖}],𝑒_𝑖−𝑠_𝑖 > 1$。不失一般性,根节点假定为全空间:$𝑇 ∈ [𝛾_0,𝛾_𝑚]$。
  • 每个叶节点$l_i$:被分配一个特定的序数等级,即$𝑙_𝑖:[𝛾_𝑖, 𝛾_{𝑖+1}]$。并且父节点的子空间是其子节点的子空间的并集。
  • 从根到叶$𝑙_𝑘$的路径为$𝜙_{𝑙_𝑘}$,表示为有序节点集:
\[𝜙_{𝑙_𝑘} = \lbrace \hat{𝑛}_{𝜙_{𝑙_𝑘}(0)}, \cdots, \hat{𝑛}_{𝜙_{𝑙_𝑘}(𝑑(𝑙_𝑘))} \rbrace\]

其中:

  • $ \hat{n}{\phi{l_k}(𝑖)} $:是路径 $ \phi_{l_k}$上的第𝑖层的节点
  • $ 𝑑(𝑙_𝑘)$:是叶节点$𝑙_𝑘$的深度

以下等式始终成立:

\[\hat{𝑛}_{𝜙_{𝑙_𝑘}(𝑖)} ⊆ \hat{𝑛}_{𝜙_{𝑙_𝑘}(𝑗)}, ∀ 𝑖 ≥ 𝑗\]

在TPM中,每个非叶节点都被分配一个分类器,其输出指示给定父节点输出概率下,观看时间属于子节点对应序数等级的条件概率。因此,给定一个实例𝑋和树T,其预测观看时间𝑇遵循如下多项分布:

\[𝑝(𝑇 ∈ 𝑙_𝑘|𝑋, T) = 𝑝(𝑇 \in \hat{𝑛}_{𝜙_{𝑙_k}(𝑖)}, ∀ 𝑖 ≤ 𝑑(𝑙_𝑘)|𝑋, T) \\ = 𝑝(𝑇 \in \hat{𝑛}_{𝜙_{𝑙_𝑘}(𝑑(𝑙_𝑘))} | 𝑋, T, 𝑇 \in \hat{𝑛}_{𝜙_{𝑙_𝑘}(𝑖)}, ∀𝑖 < 𝑑(𝑙_𝑘)) · 𝑝(𝑇 ∈ \hat{𝑛}_{𝜙_{𝑙_𝑘}(𝑖)}, ∀𝑖 < 𝑑(𝑙_𝑘)|𝑋, T) \\ = \prod_{1≤𝑖≤𝑑}(𝑙_𝑘) 𝑝(𝑇 ∈ \hat{𝑛}_{𝜙_{𝑙_𝑘}(𝑖)}|𝑋, T,𝑇 ∈ \hat{𝑛}_{𝜙_{𝑙_𝑘}(𝑖 − 1)})\]

…(1)

其中:

$ p(T \in \hat{𝑛}{𝜙{𝑙_𝑘}}(𝑖) \mid 𝑋,T, T \in \hat{𝑛}{𝜙{𝑙_𝑘}}(𝑖 − 1)) $ :通过分配给节点$ \hat{n}{𝜙{l_k}(i− 1)} $的分类器$ M_{ \hat{𝑛}{𝜙{𝑙_𝑘}(𝑖−1)}}$来进行参数化。

基于推导,给定树T的观看时间的期望可以如下计算:

\[𝐸(𝑇 |𝑋, T) = \sum\limits_{ 𝑙_𝑘 \in 𝐿_T} 𝐸(𝑇 |𝑇 ∈ 𝑙_𝑘, 𝑋, T)𝑝(𝑇 ∈ 𝑙_𝑘|𝑋, T)\]

… (2)

注意,期望涉及项 $ E(T \mid 𝑇 \in 𝑙_𝑘, 𝑋, T)$,这可以通过任何预测模型估计。在本文中,我们采用简单的方法进行估计:

\[𝐸(𝑇 | 𝑇 \in 𝑙_𝑘, 𝑋, T) = (𝛾_{𝑙_𝑘} + 𝛾_{𝑙_{𝑘+1}})/2\]

通过构建多个树进行观看时间估计,可以通过将树的分布作为先验来计算观看时间的期望

\[𝐸(𝑇 |𝑋) = \sum\limits_T 𝐸(𝑇 |𝑋, T)𝑝(T |𝑋) = \sum\limits_T 𝐸(𝑇 |𝑋, T)𝑝(T)\]

…(3)

尽管TPM允许如等式3所示的预测打包方案,我们为了简单起见,将树的数量限制为一个。

3.2 树的构建

请注意,在TPM中对树的类型没有限制,树的结构可以根据任务和数据集进行设计。在TPM中,每棵树对应于序数等级的一个分解,树内的每个非叶节点对应于一个分类器。正如先前的研究[8, 9]所揭示的,标签不平衡为预测建模增加了难度,我们尝试构建每棵树以实现每个节点的平衡标签分布。

因此,我们计算观看时间的分位数并将它们设置为序数等级的依据。然后,我们将序数等级分成两半,并在完整二叉树的叶节点中设置它们。树是通过反复将两个子节点合并为一个父节点来构建的。因此,每个节点的分类器是一个二元分类器,并且每个分类器的标签分布是平衡的。例如,当观看时间的尺度被均匀分成4个区间时,构建的树对应于图2中的平衡二叉树。

3.3 不确定性建模

先前的方法[3, 19]专注于通过点估计来建模观看时间,然而,我们不知道应该对预测结果有多大的信心。我们展示TPM不仅对预期观看时间的误差进行建模,还尝试最小化其预测的不确定性。

请注意,给定一个问题分解的树,TPM预测观看时间属于序数等级的概率。因此,观看时间变成了一个随机变量,遵循多项分布$𝑝(𝑇 \in 𝑙_𝑘 \mid 𝑋, T),∀𝑙_𝑘 ∈ 𝐿_T$。这种用分布预测观看时间的特性非常有用,因为它使我们能够近似估计观看时间的方差:

\[\text{Var}(𝑇 |𝑋, T) = \mathbb{E}(𝑇^2 |𝑋, T) - \mathbb{E}(𝑇 |𝑋, T)^2\]

… (4)

请注意,$𝑝(𝑇 \in 𝑙_𝑘 \mid 𝑋, T)$可以通过等式1计算,方差可以在假设$𝑇 ∼ 𝑝(𝑇 \in 𝑙_𝑘 \mid 𝑋, T),∀ 𝑙_𝑘 \in 𝐿_T$的情况下轻松计算。

图3中有一个简单的例子来说明这个想法:假设观看时间的尺度被分成八个序数等级,两个模型M𝑎和M𝑏的预测具有相同的观看时间期望值:𝐸(𝑇) = 4.5。然而,很容易验证这两个预测具有不同的方差:$ Var_{M_a}(𝑇) \gt Var_{M_b}(𝑇) $。这表明$M_𝑎$对其预测结果更不确定。我们期望一个模型能够以高确定性正确估计观看时间。因此,我们明确地将预测观看时间的方差加入到TPM的目标函数中。

图片名称

图3

3.4 使用TPM进行训练

现在我们介绍TPM的训练过程。给定一个训练样本X和TPM中的树T:(𝑋,𝑇),我们首先确定样本的序数等级和对应的叶节点$𝑙_𝑘(𝑇) \in 𝐿_T$。然后确定从根节点到叶节点的路径,并将样本与路径上的分类器关联起来。每个分类器以𝑋为输入,标签与路径上的子节点相对应。在本文中,T是一个平衡的二叉树,每个非叶节点都被分配了一个二元分类任务。对于每个分类器,属于右手子节点的样本被视为正样本。

考虑图2中的例子,给定一个样本(𝑋,𝑇)和𝑇 = 0.8,这个样本与分类器M0和M2关联,对于这两个分类器来说,它都是一个正样本。

TPM的目标函数由三个部分组成:

  • 路径上的分类器的分类误差:TPM试图最大化关于$𝑝(\hat{𝑇} ∈ 𝑙_𝑘(𝑇) \mid 𝑋, T)$的似然,其中$\hat{𝑇}$是预测的观看时间
  • 预测方差:$𝑉𝑎𝑟( \hat{𝑇} \mid 𝑋, T)$。为了更容易优化,我们在损失函数中使用标准差:$𝑉 𝑎𝑟(\hat{𝑇} 𝑋, T)^0.5$
  • 回归误差:评估最终预测的观看时间与真实值之间的差异:$\mid 𝑇 − 𝐸(\hat{𝑇}) \mid$

最终的目标函数是三个部分的加权和:

\[\max.L = \alpha_1 \log(𝑝( \hat{𝑇} ∈ 𝑙_𝑘(𝑇)|𝑋, T)) - \alpha_2 \text{Var}( \hat{𝑇} |𝑋, T)^{0.5} - \alpha_3 \|\mathbb{E}(\hat{𝑇}) - 𝑇\|^2 \quad (5)\]

训练过程在算法1中有说明。

3.5 结合后门调整

图片名称

图4

现在我们介绍后门调整如何无缝适应TPM以实现去偏推荐。首先,我们展示图4中的因果图来说明偏差对观看时间预测的影响。将混杂因素表示为𝐷,特征表示为𝑋,观看时间为𝑇,变量间的作用关系体现在边缘上:

  • 𝐷 → 𝑇:混杂因素直接影响观看时间。这应该被模型捕获以进行准确估计[15, 19]。
  • 𝐷 → 𝑋:混杂因素隐式影响特征表示。这应该被消除,以避免偏差放大。
  • 𝑋 → 𝑇:特征表示直接影响观看时间,包括用户偏好和视频内容等。

不失一般性,我们假设𝐷遵循多项分布:𝐷 ∼ 𝑃 (𝐷 = 𝑑),∀𝑑。通过阻断边缘𝐷 → 𝑋可以得到去混杂的观看时间估计[15, 19]:

\[\mathbb{E}(𝑇 |𝑑𝑜 (𝑋)) = \sum_{𝑑} 𝑃 (𝐷 = 𝑑|𝑑𝑜 (𝑋))\mathbb{E}(𝑇 |𝑑𝑜 (𝑋), 𝐷 = 𝑑) \quad (6)\] \[= \sum_{𝑑} 𝑃 (𝐷 = 𝑑|𝑋)\mathbb{E}(𝑇 |𝑋, 𝐷 = 𝑑) \quad (7)\] \[= \sum_{𝑑} 𝑃 (𝐷 = 𝑑)\mathbb{E}(𝑇 |𝑋, 𝐷 = 𝑑) \quad (8)\]

注意:

\(\mathbb{E}(𝑇 |𝑋) = \sum_{T} \mathbb{E}(𝑇 |𝑋, T )𝑝(T |𝑋)\) \(\mathbb{E}(𝑇 |𝑋, 𝐷 = 𝑑) = \sum_{T} \mathbb{E}(𝑇 |𝑋, T, 𝐷 = 𝑑)𝑝(T |𝑋, 𝐷 = 𝑑)\)

我们有:

\[\mathbb{E}(𝑇 |𝑑𝑜 (𝑋)) (9) = \sum_{𝑑} 𝑃 (𝐷 = 𝑑)\mathbb{E}(𝑇 |𝑋, 𝐷 = 𝑑) (10)\] \[= \sum_{𝑑} 𝑃 (𝐷 = 𝑑) \sum_{T} \mathbb{E}(𝑇 |𝑋, T, 𝐷 = 𝑑)𝑝(T |𝑋, 𝐷 = 𝑑) (11)\] \[= \sum_{T} \sum_{𝑑} 𝑃 (𝐷 = 𝑑)\mathbb{E}(𝑇 |𝑋, T, 𝐷 = 𝑑)𝑝(T |𝑋, 𝐷 = 𝑑) (12)\]

具体来说,这表明我们可以通过根据混杂因素的分布构建树,并通过将样本分割到相应的树来进行后门调整。这可以通过将混杂因素的尺度分成组并相应地构建树来实现。同时,训练数据应根据组进行分割,每个组中的分类器分别用分割后的数据进行训练(见图5为例)。

图片名称

图5

具体来说,我们可以将𝐷注入TPM如下:

\[L1 = 𝑝(𝑇 ∈ 𝑙𝑘 |𝑋, 𝐷, T) = \prod_{1≤𝑖≤𝑑(𝑙𝑘)} 𝑝(𝑇 ∈ 𝑛ˆ𝜙𝑙𝑘(𝑖)|𝑋, 𝐷, T,𝑇 ∈ 𝑛ˆ𝜙𝑙𝑘(𝑖 − 1)) \quad (13)\] \[\mathbb{E}(𝑇 |𝑋, 𝐷, T) = \sum_{𝑙𝑘 ∈ 𝐿T} \mathbb{E}(𝑇 |𝑇 ∈ 𝑙𝑘, 𝑋, 𝐷, T)𝑝(𝑇 ∈ 𝑙𝑘 |𝑋, 𝐷, T) \quad (14)\] \[L2 = \text{Var}(𝑇 |𝑋, 𝐷, T) = \mathbb{E}(𝑇^2 |𝑋, 𝐷, T) − \mathbb{E}(𝑇 |𝑋, 𝐷, T)^2 \quad (15)\] \[L (𝑇 , 𝑋, 𝐷, T) = \alpha_1L1 − \alpha_2L2 − \alpha_3 \|\mathbb{E}(𝑇ˆ) −𝑇 \|^2 \quad (16)\]

训练过程在算法2中有说明。

3.6 模型架构

请注意,TPM不限制分类器的架构,任何二元分类器的架构都适用于TPM。因此,我们采用多层感知器作为分类器的主干结构。架构在图6中有说明。

图片名称

图6

由于树中的每个非叶节点对应于一个二元分类任务,一个简单的设计是为每个节点构建一个分类器,其中分类器独立训练。然而,这将导致相当大的模型尺寸,因此不适用于实际环境。因此,我们通过在任务之间共享隐藏层的参数来为所有分类任务设计一个单一模型。同时,引入任务特定的输出层以产生每个节点的输出。

4.实验

#