google在《Titans: Learning to Memorize at Test Time》提出了区别于Transformer的的一种新架构:Titans。我们来看一下它的实现,是否有前景:

摘要

在过去的十多年里,关于如何有效利用循环模型(recurrent models)和注意力机制(attentions)的研究已经非常广泛。循环模型的目标是将数据压缩到一个固定大小的内存中(称为hidden state),而注意力机制则允许模型关注整个上下文窗口,捕捉所有token之间的直接依赖关系。然而,这种更精确的依赖关系建模带来了二次方的计算成本(quadratic cost),限制了模型只能处理固定长度的上下文。我们提出了一种新的神经长期记忆模块(neural long-term memory module),该模块能够学习记忆历史上下文,并帮助注意力机制在利用过去信息的同时关注当前上下文。我们展示了这种神经记忆模块具有快速并行化训练的优势,同时保持了快速的推理能力。从记忆的角度来看,我们认为注意力机制由于其有限的上下文但精确的依赖关系建模,起到了短期记忆的作用;而神经记忆(neural memory)由于其能够记忆数据的能力,起到了长期、更持久的记忆作用。基于这两个模块,我们引入了一系列新的架构,称为Titans,并提出了三种变体,以探讨如何有效地将记忆融入这一架构中。我们在语言建模、常识推理、基因组学和时间序列任务上的实验结果表明,Titans比Transformers和最近的现代线性循环模型更有效。此外,与基线模型相比,Titans能够有效地扩展到超过200万的上下文窗口大小,并在“大海捞针”任务中表现出更高的准确性。

1.介绍

Transformers,一种纯基于注意力机制的架构(Vaswani 等人,2017),已被牢牢确立为序列建模中的最先进模型,主要归功于其上下文学习能力和大规模学习能力(Kaplan 等人,2020)。Transformers 的核心构建模块——注意力模块——充当关联记忆模块(Bietti 等人,2024),它们学习存储key-value关联性(associations),并通过计算query(即搜索信号)和key(即上下文)之间的成对相似性来检索这些关联。因此,从设计上看,Transformer 的输出完全取决于当前上下文窗口中token的直接依赖关系。然而,这种精确的依赖关系建模带来了与上下文长度相关的二次方时间和内存复杂度。在复杂的现实任务中(例如语言建模(N. F. Liu 等人,2024)、视频理解(C.-Y. Wu 等人,2019)、长期时间序列预测(H. Zhou 等人,2021)),上下文窗口可能变得非常大,这使得 Transformers 在这些下游任务中的适用性面临挑战。

为了克服 Transformers 的可扩展性问题,最近的研究旨在设计不同变体的线性 Transformers(Kacham、Mirrokni 和 P. Zhong,2024;Katharopoulos 等人,2020;S. Yang、B. Wang、Shen 等人,2024),其中注意力机制中的 softmax 被核函数取代(详见 §2.1),从而显著降低了内存消耗。尽管线性 Transformers 具有高效性并能够扩展到更长的上下文,但与 Transformers 相比,它们的性能并不具有竞争力,因为核技巧使模型变成了线性循环网络,其中数据被压缩为矩阵值状态(Katharopoulos 等人,2020)。然而,这带来了关于线性循环(或线性 Transformers)模型的一个矛盾事实:一方面,我们使用这些线性模型来增强可扩展性和效率(线性与二次方复杂度),其优势在非常长的上下文中显现;另一方面,非常长的上下文无法被适当地压缩到一个小的向量值或矩阵值状态中(S. Wang,2024)。

此外,除了效率问题外,大多数现有架构——从 Hopfield 网络(Hopfield,1982)到 LSTM(Jürgen Schmidhuber 和 Hochreiter,1997)以及 Transformers(Vaswani 等人,2017)——在处理泛化、长度外推和/或推理(Anil 等人,2022;Qin、Y. Zhong 和 Deng,2024)时都面临挑战,而这些是许多复杂现实任务中不可分割的部分。尽管这些架构从人类大脑中汲取了灵感,但它们都缺少以下关键部分:

  • (1)学习过程中的关键组件——例如短期记忆、长期记忆、元记忆、关注当前上下文等(Cowan,2008);
  • (2)这些组件如何作为可以独立运行的互联系统;以及/或
  • (3)从数据中主动学习并记忆过去历史的抽象能力。

我们认为,在一个有效的学习范式中,类似于人类大脑,存在独立但相互关联的模块,每个模块都负责学习过程中至关重要的组件。

记忆视角

记忆(memory)是一种基本的心理过程,也是人类学习中不可分割的组成部分(Terry,2017)。如果没有一个正常运作的记忆系统,人类和动物将只能局限于基本的反射和刻板行为。因此,记忆一直是机器学习文献中许多开创性研究的灵感来源;例如,Hopfield 网络(Hopfield,1982)、LSTM(Jürgen Schmidhuber 和 Hochreiter,1997)以及 Transformers(Vaswani 等人,2017)。

从神经心理学文献中对记忆和学习的常见定义中汲取灵感(Okano、Hirano 和 Balaban,2000),大多数现有架构将记忆视为由输入引起的神经更新,并将学习定义为在给定目标的情况下获取有效且有用记忆的过程。从这个角度来看,循环神经网络(RNN)(Williams 和 Zipser,1989)可以被定义为具有向量值记忆模块 M(也称为hidden state)的模型,其主要步骤包括:

在时间 𝑡 给定新输入 $𝑥_𝑡$ 时,模型

  • (1)使用函数 $𝑓(M_{𝑡−1}, 𝑥_𝑡) $ 更新记忆(带有压缩);
  • (2)使用函数 $𝑔(M_𝑡, 𝑥_𝑡)$ 检索输入的相应记忆(详见 §2.1)。

类似地,Transformers 可以被视为具有增长记忆和两个相似步骤的架构。即,key和value矩阵对充当模型的记忆,模型:

  • (1)通过将key和value附加到记忆中来更新记忆(无压缩),
  • (2)通过查找query向量与key向量的相似性来检索query向量的相应记忆,然后将其用于加权value向量以生成输出。

这种视角可以帮助我们更好地理解现有范式、它们的关键差异,并设计更有效的架构。例如,Transformers(Vaswani 等人,2017)和线性 Transformers(Katharopoulos 等人,2020)之间的主要区别在于记忆结构以及记忆更新步骤,其中:线性 Transformers 将历史数据压缩为固定大小的矩阵值记忆,而 Transformers 则保留所有历史数据(在上下文长度内)而不进行任何压缩。虽然线性 Transformers 和线性 RNN(包括状态空间模型)都在记忆更新步骤中压缩信息,但关键区别在于记忆的结构,其中线性 RNN(相对于线性 Transformers)使用向量值记忆(相对于矩阵值记忆)。因此,这种视角促使我们提出以下问题:

  • (Q1)什么是良好的记忆结构
  • (Q2)什么是适当的记忆更新机制
  • (Q3)什么是良好的记忆检索过程

重新审视我们对人类记忆的理解,它既不是一个单一的过程,也不服务于单一的功能(Cowan,2008)。事实上,记忆是一个系统的联合体——例如短期记忆、工作记忆(working memory)和长期记忆——每个系统服务于不同的功能,具有不同的神经结构,并且每个系统都能够独立运行(Willingham,1997)。这一事实促使我们提出:

  • (Q4)如何设计一个包含不同互联记忆模块的高效架构

最后,存储记忆是一个神经过程,需要对过去的抽象进行编码和存储。假设一个单一向量或矩阵(其参数以线性方式编码数据)足以存储长期历史可能过于简化。

  • (Q5)是否需要深度记忆模块来有效存储/记住遥远的过去?

贡献与路线图

在本文中,我们旨在通过设计一个长期神经记忆模块来回答上述五个问题,该模块能够在测试时高效且有效地学习记忆。基于其设计,我们讨论了如何将其融入架构中。

神经记忆(§3)。我们提出了一种(深度)神经长期记忆模块,它(作为元上下文模型)学习如何在测试时将数据记忆/存储到其参数中。受人类长期记忆系统(Mandler,2014)的启发,

我们设计了这个记忆模块,使得违反预期的事件(即令人惊讶的事件: surprising)更容易被记住。为此,我们通过神经网络在关联记忆损失中对输入的梯度来衡量输入的“惊讶度(surprise)”(详见 §3.1)。为了更好地处理有限的内存,我们提出了一种衰减机制,该机制考虑了内存大小与数据惊讶度的比例,从而实现更好的内存管理。我们展示了这种衰减机制实际上是现代循环模型中遗忘机制的泛化(Dao 和 Gu,2024;Gu 和 Dao,2024;S. Yang、Kautz 和 Hatamizadeh,2024)。有趣的是,我们发现这种机制等同于使用小批量梯度下降、动量和权重衰减来优化元神经网络。基于张量化小批量梯度下降以使用更多矩阵乘法操作(Yu Sun 等人,2024),我们提出了一种快速且可并行化的算法来训练我们的深度神经长期记忆模块。

Titans 架构(§4)

在设计完长期神经记忆模块后,一个重要的问题是:如何高效且有效地将记忆融入深度学习架构中。我们提出了 Titans,这是一个由三个超头部(hyper-heads)组成的深度模型家族:

  • (1)核心模块:该模块包含短期记忆,负责数据处理的主要流程(我们使用有限窗口大小的注意力机制);
  • (2)长期记忆模块:这一分支是我们的神经长期记忆模块,负责存储/记住遥远的过去;
  • (3)持久记忆模块:这是一组可学习但与数据无关的参数,用于编码任务相关知识。

最后,作为概念验证,我们提出了 Titans 的三种变体,其中我们将记忆分别融入为:

  • (i)一个上下文(context)
  • (ii)层(layer)
  • (iii)一个门控分支(gated branch)

实验结果(§5)

我们在语言建模、常识推理、记忆密集型任务、“大海捞针”任务、时间序列预测和 DNA 建模任务上进行了实验评估。我们观察到,Titans 架构在所有现代循环模型及其混合变体(结合滑动窗口注意力机制)的综合基准测试中均表现优异。此外,Titans 在相同上下文窗口下优于 Transformers,并在使用整个上下文的 Transformers 中表现出竞争力。这些结果是在 Titans 能够扩展到超过 200 万上下文窗口大小的情况下实现的,而 Transformers 则无法做到这一点

2 预备知识

在本节中,我们将讨论本文中使用的符号和一些背景概念。我们令:

  • $ x \in \mathbb{R}^{N \times d_{\text{in}}} $ 表示输入
  • $ \mathbf{M} $ 表示神经网络(神经记忆模块:neural memory)
  • $ \mathbf{Q} $、$ \mathbf{K} $、$ \mathbf{V} $ 分别表示注意力机制中的query、key和value
  • $ M $ 表示注意力掩码(attention mask)
  • $ S^{(i)} $ 表示:在对序列进行分段时,使用第 $ i $ 段。

在本文中,我们简化符号并使用下标来指代矩阵、向量或段中的特定元素。例如,我们令:

  • $ S^{(i)}_j $ 表示第 $ i $ 段中的第 $ j $ 个 token。

唯一的例外是下标为 $ t $ 的情况,我们保留它来表示时间上的递归或神经网络在时间 $ t $ 的状态。

给定:神经网络 $ \mathbf{N} $ 和数据样本 $ x $,我们使用:

  • $ \mathbf{N}(x) $(或 $ \mathbf{N}^*(x) $)表示带权重调整(或不带权重调整)的前向传播

此外,我们简化符号并使用:

  • $ \mathbf{N}^{(k)} $ 表示神经网络的第 $ k $ 层

接下来,我们首先讨论注意力机制及其高效变体的背景,然后回顾现代线性 RNN,最后讨论这些架构的记忆视角,这促使我们设计了 Titans。

2.1 背景

注意力机制。Transformers(Vaswani 等人,2017)作为许多深度学习模型的实际骨干,基于注意力机制。给定:

  • 输入 $ x \in \mathbb{R}^{N \times d_{\text{in}}} $

因果注意力机制基于输入依赖的key、value和query矩阵计算输出 $ y \in \mathbb{R}^{N \times d_{\text{in}}} $:

\[\mathbf{Q} = x \mathbf{W}_Q, \quad \mathbf{K} = x \mathbf{W}_K, \quad \mathbf{V} = x \mathbf{W}_V, \quad (1)\] \[y_i = \frac{\sum_{j=1}^i \exp\left(\frac{\mathbf{Q}_i^\top \mathbf{K}_j}{\sqrt{d_{\text{in}}}}\right) \mathbf{V}_j}{\sum_{\ell=1}^i \exp\left(\frac{\mathbf{Q}_i^\top \mathbf{K}_\ell}{\sqrt{d_{\text{in}}}}\right)}, \quad (2)\]

其中:

  • $ W_Q, W_K, W_V \in R^{d_{in} \times d_{in}} $ 是可学习参数

尽管 Transformers 在召回能力上表现出色,但它们至少需要 $ N \times d $ 次操作来计算输出,导致内存消耗较大且对较长序列的吞吐量较低。

高效注意力机制。为了提高软注意力机制在长序列上的内存消耗和吞吐量,许多研究集中在注意力机制的 I/O 感知实现(Dao 2024;Dao, D. Fu 等人,2022),通过稀疏化注意力矩阵(B. Chen 等人,2021;Choromanski 等人,2021;Dai 等人,2019)、近似 softmax(Arora 等人,2024)或开发基于核的(线性)注意力机制(Aksenov 等人,2024;Kacham, Mirrokni 和 P. Zhong,2024;Schlag, Irie 和 Jürgen Schmidhuber,2021;S. Yang, B. Wang, Shen 等人,2024)来设计更高效的注意力机制。在本部分,我们重点关注后者,即线性注意力机制,其中标准注意力中的 softmax 被替换为替代核函数 $ \phi(\cdot, \cdot) $,使得 $ \phi(x, y) = \phi(x) \phi(y) $。因此,注意力可以写成:

\[y_i = \frac{\sum_{j=1}^i \phi(\mathbf{Q}_i^\top \mathbf{K}_j) \mathbf{V}_j}{\sum_{\ell=1}^i \phi(\mathbf{Q}_i^\top \mathbf{K}_\ell)} = \frac{\phi(\mathbf{Q}_i)^\top \sum_{j=1}^i \phi(\mathbf{K}_j) \mathbf{V}_j}{\phi(\mathbf{Q}_i)^\top \sum_{\ell=1}^i \phi(\mathbf{K}_\ell)}, \quad (3)\]

由于:

  • 项 $ \sum_{j=1}^i \phi(K_j), \sum_{\ell=1}^i \phi(K_\ell) $ 在每一步中重复使用,因此吞吐量更高。

当选择核函数为单位矩阵时(Yutao Sun 等人,2023),上述公式可以写成递归形式:

\[\mathbf{M}_t = \mathbf{M}_{t-1} + \mathbf{K}_t^\top \mathbf{V}_t, \quad (4)\] \[y_t = \mathbf{Q}_t \mathbf{M}_t, \quad (5)\]

这使得线性注意力机制能够高效推理。

现代线性模型及其记忆视角。如前所述,可以将学习定义为获取有效且有用记忆的过程。基于此,可以将循环神经网络(RNN)的hidden state视为记忆单元,模型旨在将信息压缩到其中。因此,在一般形式的循环神经网络中,hidden state可以被视为记忆单元,递归过程可以分为记忆单元的读和写操作。即,令:

  • $ x \in \mathbb{R}^{N \times d_{\text{in}}} $ 为输入
  • $ \mathbf{M} \in \mathbb{R}^d $ 为记忆单元
  • $ y \in \mathbb{R}^{d_{\text{in}}} $ 为输出

则循环神经网络的一般形式定义为:

\[\mathbf{M}_t = f(\mathbf{M}_{t-1}, x_t), \quad \text{写操作} \quad (6)\] \[y_t = g(\mathbf{M}_t, x_t), \quad \text{读操作} \quad (7)\]

其中:

  • $ f(\cdot, \cdot) $ 是读操作,
  • $ g(\cdot, \cdot) $ 是写操作。

注意,这里的 $ \mathbf{M}_t $ 下标表示记忆在时间 $ t $ 的状态。

从这一视角来看,线性 Transformers 的递归公式(见公式 4)等同于将键和值 $ (\mathbf{K}_t, \mathbf{V}_t) $ 加性地压缩并写入矩阵值记忆单元 $ \mathbf{M}_t $ 中。因此,在处理长上下文数据时,这种加性特性会导致内存溢出,显著损害模型性能。为了解决这一问题,研究集中在两个有前景的方向上:

  • (1)添加遗忘机制:一些研究提出了线性模型的自适应(数据依赖)遗忘门机制,可以在需要时擦除记忆。例如,GLA(S. Yang, B. Wang, Shen 等人,2024)、LRU(Orvieto 等人,2023)、Griffin(De 等人,2024)、xLSTM(Beck 等人,2024)和 Mamba2(Dao 和 Gu,2024)等模型,后者还与离散化的传统状态空间模型(Gu 和 Dao,2024)相关联。
  • (2)改进写操作:为了克服传统循环模型中记忆写操作的加性特性,Widrow 和 Hoff(1988)提出了 Delta 规则,在添加记忆(即键值对)之前,模型首先移除其过去的值。为了增强可并行化训练和扩展性,S. Yang, B. Wang, Yu Zhang 等人(2024)提出了一种快速并行化算法。最后,最近 S. Yang, Kautz 和 Hatamizadeh(2024)通过添加遗忘门改进了 DeltaNets。

记忆模块。记忆一直是神经网络设计的核心部分之一(Graves, Wayne 和 Danihelka,2014;JH Schmidhuber,1992;Jürgen Schmidhuber 和 Hochreiter,1997;J. Zhang 等人,2024)。将线性层视为键值(关联)记忆系统(key-value (associative) memory system)的思想可以追溯到快速权重程序(fast weight programs),其中动态快速程序被纳入循环神经网络中作为可写记忆(JH Schmidhuber,1992)。Hebbian(Hebb,2005)和 delta(Prados 和 Kak,1989)学习规则是快速权重程序中最流行的学习规则,已在各种研究中广泛探索(Irie, Schlag 等人,2021;Munkhdalai, Sordoni 等人,2019;Munkhdalai 和 H. Yu,2017;Schlag, Irie 和 Jürgen Schmidhuber,2021;JH Schmidhuber,1992;S. Yang, Kautz 和 Hatamizadeh,2024;S. Yang, B. Wang, Yu Zhang 等人,2024)。然而,所有这些模型都基于瞬时惊讶度,忽略了序列中的 token 流(见第 3.1 节),并且大多数模型缺乏遗忘门,导致内存管理不佳。

我们在附录 C 中进一步讨论了我们的架构与最近模型的联系。其他相关工作在附录 A 中讨论。

3 测试时的记忆学习

为了克服长期记忆的不足,并使模型能够学习、遗忘和检索信息,本节提出了一种神经长期记忆模块,这是一种在测试时学习记忆的元模型。

  • 在 3.1 节中,我们首先讨论神经记忆的动机和设计。
  • 在 3.2 节中,我们讨论如何通过快速且可并行化的训练使我们的架构设计受益。
  • 在 3.3 节中,我们通过持久记忆模块增强我们的架构,其中使用可学习但与数据无关的参数来学习任务的元信息。

图片名称

图1 关于如何并行训练神经记忆并使用矩阵乘法(matmuls)的图示说明。

3.1 长期记忆

为了设计一个神经长期记忆模块,我们需要一个能够将过去历史的抽象编码到其参数中的模型。一个例子是大语言模型(LLMs),它们被证明能够记忆训练数据(Leybzon 和 Kervadec,2024;Schwarzschild 等人,2024;Staab 等人,2024)。因此,一个简单的想法是:训练一个神经网络并期望它记忆其训练数据。然而,记忆化几乎总是被认为是神经网络中的不良现象,因为它限制了模型的泛化能力(Bayat 等人,2024),引发隐私问题(Staab 等人,2024),并导致测试时性能不佳。此外,训练数据的记忆化在测试时可能没有帮助,因为数据可能是分布外的。我们认为,我们需要一个在测试时学习如何记忆/遗忘数据的在线元模型。在这种设置中,模型学习的是一个能够记忆的函数,但它不会过度拟合训练数据,从而在测试时实现更好的泛化。

学习过程与惊讶度度量(Surprise Metric)。训练长期记忆的关键思想是:将其训练视为一个在线学习问题,我们的目标是将过去的信息 $ x_1, \ldots, x_{t-1} $ 压缩到长期神经记忆模块 $ \mathbf{M}_t $ 的参数中。如前所述,违反预期的事件(即令人惊讶的事件)对人类来说更容易被记住(Mandler,2014)。受此启发,模型惊讶度的一个简单定义可以是:其相对于输入的梯度。梯度越大,输入数据与过去数据的差异越大。因此,使用这种惊讶度评分,我们可以更新记忆如下:

\[\mathbf{M}_t = \mathbf{M}_{t-1} - \theta_t \nabla \ell(\mathbf{M}_{t-1}; x_t) \quad \text{(惊讶度)} \quad (8)\]

然而,这种惊讶度度量可能会导致错过在重大惊讶时刻之后的重要信息。也就是说,梯度在几次惊讶步骤后可能变得非常小,导致陷入平坦区域(即局部最小值),并错过序列某些部分的信息。从人类记忆的角度来看,一个事件可能不会在长时间内持续让我们感到惊讶,尽管它是值得记忆的。原因是初始时刻足够令人惊讶,足以在长时间内吸引我们的注意力,从而记住整个时间段。为了改进上述惊讶度度量(公式 8),我们将惊讶度度量分为:

  • (1)过往惊讶度(past surprise),衡量最近过去的惊讶程度;
  • (2)瞬时惊讶度(momentary surprise),衡量输入数据的惊讶程度:
\[\mathbf{M}_t = \mathbf{M}_{t-1} + S_t, \quad (9)\] \[S_t = \eta_t S_{t-1} \quad \text{(过去惊讶度)} - \theta_t \nabla \ell(\mathbf{M}_{t-1}; x_t) \quad \text{(瞬时惊讶度)} \quad (10)\]

有趣的是,这个公式类似于带有动量的梯度下降,其中:

  • $ S_t $ 是动量项

因此,这里的动量充当了跨时间(序列长度)的惊讶度记忆。在这个公式中:

  • 项 $ \eta_t $ 是一个数据依赖的惊讶度衰减($ x_t $ 的函数),控制惊讶度随时间衰减的程度
  • 项 $ \theta_t $ 则控制瞬时惊讶度应以数据依赖的方式纳入最终惊讶度度量的多少

这种数据依赖性在这个设计中尤为重要:虽然前一个 token 的惊讶度可能需要影响下一个 token 的惊讶度,但这只有在所有 token 都相关且处于同一上下文中时才有效。因此,数据依赖的 $ \eta $ 可以控制记忆是否需要:

  • (1)通过设置 $ \eta_t \to 0 $ 忽略上一次的惊讶度(可能由于上下文的变化),
  • (2)通过设置 $ \eta_t \to 1 $ 完全纳入上一次的惊讶度(可能因为 token 与其最近的过去 token 高度相关)。

目标。我们上述的惊讶度度量基于损失函数 $ \ell(\cdot; \cdot) $,这是我们的记忆模块在测试时学习的目标。也就是说,我们的记忆模块是一个元模型,它基于损失函数 $ \ell(\cdot; \cdot) $ 学习一个函数。

在本节中,我们重点讨论关联记忆,其目标是将过去的数据存储为k-V对。给定输入 $ x_t $,类似于 Transformers(Vaswani 等人,2017),我们使用两个线性层将 $ x_t $ 投影为key和value:

\[\mathbf{k}_t = x_t \mathbf{W}_K, \quad \mathbf{v}_t = x_t \mathbf{W}_V, \quad (11)\]

其中 $ W_K $ 和 $ W_V \in R^{d_{in} \times d_{in}} $。接下来,我们希望记忆模块能够学习键和值之间的关联。为此,我们定义损失函数如下:

\[\ell(\mathbf{M}_{t-1}; x_t) = \|\mathbf{M}_{t-1}(\mathbf{k}_t) - \mathbf{v}_t\|_2^2, \quad (12)\]

通过在元模型(记忆)的内循环中优化上述损失函数,模型学习如何在测试时记忆键和值之间的映射。需要注意的是,类似于元学习模型(Nichol,2018;Zintgraf 等人,2019),记忆的训练是在内循环中进行的,因此参数 $ \mathbf{W}_K $ 和 $ \mathbf{W}_V $ 是上述损失函数中的超参数。因此,在内循环中,我们优化记忆模块 $ \mathbf{M} $ 的权重,而在外循环中,我们优化整个架构的其他参数。

遗忘机制

当处理非常长的序列(例如数百万个 token)时,管理哪些过去信息应该被遗忘至关重要——即使使用深度或非常大的矩阵值记忆。为此,我们使用一种自适应遗忘机制,允许记忆遗忘不再需要的信息,从而更好地管理记忆的有限容量。具体来说,给定下一个 token $ x_t $,我们修改更新规则如下:

\[\mathbf{M}_t = (1 - \alpha_t) \mathbf{M}_{t-1} + S_t, \quad (13)\] \[S_t = \eta_t S_{t-1} - \theta_t \nabla \ell(\mathbf{M}_{t-1}; x_t), \quad (14)\]

其中:

  • $ \alpha_t \in [0, 1] $ 是一个门控机制,灵活控制记忆;即决定应该遗忘多少信息。例如:

  • 通过设置 $ \alpha_t \to 0 $,可以在不影响过去抽象的情况下更新记忆;
  • 通过设置 $ \alpha_t \to 1 $,可以清除整个记忆

在本节后面,我们将展示这种权重衰减机制与现代 RNN 中的门控机制密切相关(Dao 和 Gu,2024;Orvieto 等人,2023)。

记忆架构

在本文中,我们专注于使用具有 $ L_M \geq 1 $ 层的简单多层感知机(MLP)作为长期记忆的架构。选择这种架构的主要原因是,我们希望集中精力更好地激励长期记忆的设计及其融入架构的方式。然而,我们的公式和架构设计为设计在数据记忆方面更有效和高效的神经架构开辟了新的研究方向。最近,有一些有前景的工作致力于设计此类架构(Berges 等人,2024;Cetin 等人,2024;J. Zhang 等人,2024),将这些架构融入我们的框架(即用此类架构替换简单的 MLP)可能是一个有趣的未来工作方向。

当使用向量值或矩阵值记忆(De 等人,2024;Orvieto 等人,2023;S. Yang, B. Wang, Shen 等人,2024)时,记忆模块会压缩过去的数据并将其拟合到一条线上。也就是说,从元学习或在线学习的角度来看(Yu Sun 等人,2024),使用矩阵值记忆 $ \mathbf{M} = \mathbf{W} \in \mathbb{R}^{d_{\text{in}} \times d_{\text{in}}} $ 等同于优化 $ \ell(\mathbf{W}{t-1}; x_t) = |\mathbf{W}{t-1} \mathbf{k}_t - \mathbf{v}_t|_2^2 $,这是一个在线线性回归目标,因此最优解假设历史数据的潜在依赖关系是线性的。另一方面,我们认为深度记忆模块(即 $ L_M \geq 2 $ 层)在实践中更有效。这与理论结果一致,即至少具有两层的 MLP 严格比线性模型更具表达能力(Hornik, Stinchcombe, and White, 1989)。在第 5.5 节中,我们展示了深度记忆模块在实际应用中的有效性。


记忆检索

在上面,我们讨论了如何设计和训练一个在测试时学习记忆的长期记忆模块。一个关键的问题是:如何从记忆中检索信息?我们简单地使用不更新权重的前向传播(即推理)来检索与查询对应的记忆。形式上,给定输入 $ x_t $,我们使用线性层 $ \mathbf{W}_Q $ 投影输入,即 $ \mathbf{q}_t = x_t \mathbf{W}_Q $,并通过以下方式从记忆中检索相应的(或有用的)信息 $ y_t $:

\[y_t = \mathbf{M}^*(\mathbf{q}_t). \quad (15)\]

图片名称

图2:记忆作为上下文(MAC)架构。该架构包括三个分支:(1)核心分支,(2)上下文(长期)记忆分支,以及(3)持久记忆分支。核心分支将相应的长期记忆和持久记忆与输入序列连接起来。接下来,注意力机制在序列上执行,并决定哪些信息应存储在长期记忆中。在测试时,与上下文记忆对应的参数仍在学习,与核心分支对应的参数负责上下文学习,而持久记忆的参数负责存储任务知识,因此是固定的。

3.2 如何并行化长期记忆的训练

如上所述,我们的长期记忆模块的设计等同于通过优化关联记忆损失函数 $ \ell(\mathbf{M}{t-1}; x_t) = |\mathbf{M}{t-1}(\mathbf{k}_t) - \mathbf{v}_t|_2^2 $ 来训练一个元模型,使用带有动量和权重衰减的梯度下降。因此,理论上,长期记忆模块的训练需要 $ O(N) $ 的浮点运算(FLOPs),其中 $ N $ 是序列长度。然而,在实践中,我们需要并行化训练过程,并充分利用硬件加速器(例如 TPU、GPU),因此需要将过程张量化并使用更多的矩阵乘法(matmuls)。

接下来,我们展示如何通过小批量梯度下降、数据依赖的学习率和权重衰减来重新表述内循环中的权重计算,使其仅使用矩阵乘法和求和。我们基于 Yu Sun 等人(2024)的工作,该工作表明,使用小批量梯度下降(具有恒定学习率)优化的模型的前向传播可以通过矩阵乘法计算。我们可以将序列分割为大小为 $ b \geq 1 $ 的块,并将小批量梯度下降表示为:

\[\mathbf{M}_t = (1 - \alpha_t) \mathbf{M}_{t-1} - \theta_t \nabla \ell(\mathbf{M}_{t-1}; x_t) = \beta_t \mathbf{M}_0 - \sum_{i=1}^t \theta_i \frac{\beta_t}{\beta_i} \nabla \ell(\mathbf{M}_{t'}; x_i), \quad (16)\]

其中 $ t’ = t - \text{mod}(t, b) $,且 $ \beta_i = \prod_{j=1}^i (1 - \alpha_j) $。为了简化,我们专注于第一个块,即 $ t = b $,因此 $ t’ = 0 $。此外,我们解释当 $ \mathbf{M}_t = \mathbf{W}_t $ 是线性时的情况。对于具有 $ N_p \geq 2 $ 层的 MLP,过程类似。使用我们的损失函数,我们有:

\[\nabla \ell(\mathbf{W}_0; x_t) = (\mathbf{W}_0 x_t - x_t) x_t^\top \Rightarrow \sum_{i=1}^b \theta_i \frac{\beta_b}{\beta_i} \nabla \ell(\mathbf{W}_0; x_i) = \Theta_b \mathbf{B}_b (\mathbf{W}_0 \mathbf{X} - \mathbf{X}) \mathbf{X}^\top, \quad (17)\]

其中 $ \Theta_b = \text{diag}(\theta_1, \theta_2, \ldots, \theta_b) $,且 $ \mathbf{B}b $ 类似地定义在 $ \frac{\beta_b}{\beta_i} $ 上。需要注意的是,我们不需要存储所有 $ \Theta{kb} $ 和 $ \mathbf{B}_{kb} $($ k = 1, \ldots, N/b $),而是为每个块存储这些矩阵,从而减少内存使用。接下来,我们扩展这种表示,以便还可以纳入动量项。在带有动量的小批量梯度下降中,如果我们看动量项,我们有:

\[S_t = \eta_t S_{t-1} - \theta_t u_t, \quad (18)\]

其中 $ u_t = \nabla \ell(\mathbf{M}_{t’}; x_t) $。需要注意的是,我们可以同时计算所有 $ u_t $,因此公式 (18) 是一个线性递归,其中 $ u_t $ 是输入,$ S_t $ 是隐藏状态,$ \eta_t $ 是输入依赖的转移值。因此,我们可以使用并行关联扫描(J. T. Smith, Warrington, and Linderman, 2023)来计算该块中的 $ S_t $。

参数作为块的函数

与其让参数 $ \alpha_t $、$ \theta_t $ 和 $ \eta_t $ 依赖于输入(即 token $ x_t $ 的函数),我们可以让它们成为块的函数。尽管这会降低表达能力,但这种表述可以帮助使训练更快。在这种情况下,我们在每个块中对 $ \alpha $、$ \theta $ 和 $ \eta $ 使用相同的值。因此,在公式 (17) 中,我们可以使用单个标量存储 $ \Theta $。类似地,我们可以使公式 (18) 更快。也就是说,当 $ \eta $ 和 $ \theta $ 在每个块内可学习但时间不变时,该方程变为线性时不变系统(LTI),可以通过全局卷积计算(Gu, Goel, and Re, 2022)。在我们的实验中,我们将这些参数作为 token 的函数。然而,这种简化(即作为块的函数)可能是未来工作的兴趣点,以便以更高效的方式训练更大的模型。

3.3 持久记忆

我们的长期记忆也可以被视为一种上下文记忆,这意味着输出完全依赖于上下文。因此,除了长期记忆外,我们还使用一组可学习但与输入无关的参数来充当任务相关的记忆。这种类型的记忆在文献中被称为持久记忆或元记忆(X. Dong 等人,2024;Sukhbaatar, Grave 等人,2019)。给定 $ N_p \geq 1 $,我们使用可学习参数 $ P = [p_1, p_2, \ldots, p_{N_p}] $ 并将其附加到序列的开头:即,给定上下文窗口大小为 $ N $,我们将输入修改为:

\[x_{\text{new}} = [p_1, p_2, \ldots, p_{N_p}] \parallel x, \quad (19)\]

其中 $ \parallel $ 表示连接操作。接下来,我们从三个角度讨论持久记忆的动机:


记忆视角

如前所述,我们的神经长期记忆是一种上下文记忆,其中所有参数都依赖于输入。然而,一个有效的记忆系统还需要与输入无关的参数来存储任务知识的抽象。也就是说,掌握一个任务需要记忆如何完成该任务的知识,而这些参数负责存储此类知识。


前馈网络视角

在 Transformer 架构中,注意力模块之后有全连接层,这些层被证明类似于注意力权重,但具有与数据无关的参数。即,Sukhbaatar, Grave 等人(2019)表明,将全连接层中的 ReLU 替换为 Softmax 可以产生类似注意力的权重,其中权重与数据无关:

\[FFN(x) = W_V \text{Softmax}(W_K x), \quad (20)\]

实际上,当 $ W_K $ 和 $ W_V $ 与输入无关时,它们的作用类似于注意力模块中的 $ K $ 和 $ V $ 矩阵。持久记忆权重预计具有相同的功能,这意味着在序列的开头部分使用它们会导致具有与输入无关的注意力权重(Sukhbaatar, Grave 等人,2019)。


技术视角

带有因果掩码的注意力机制对序列中的初始 token 具有隐式偏差,因此注意力权重几乎总是对初始 token 高度活跃,从而导致性能下降。从技术角度来看,序列开头的这些可学习参数可以通过更有效地重新分配注意力权重来缓解这种影响(Han 等人,2024;Xiao 等人,2024)。


总结

  • 持久记忆的作用:存储任务知识的抽象,与输入无关。
  • 前馈网络的类比:持久记忆权重类似于注意力机制中的 $ K $ 和 $ V $ 矩阵,但具有与数据无关的特性。
  • 技术优势:通过在序列开头引入可学习参数,持久记忆可以缓解注意力机制对初始 token 的偏差,从而提升模型性能。

持久记忆的引入为模型提供了任务知识的存储能力,并通过优化注意力权重的分配进一步提升了模型的性能。

图片名称

图3

4 如何融入记忆?

一个重要但尚未解答的问题是:如何有效且高效地将设计的神经记忆融入深度学习架构中?如前所述,从记忆的角度来看,Transformers 中的键值对矩阵可以解释为关联记忆块。由于其依赖关系的精确建模以及有限的上下文窗口,我们将其解释为短期记忆模块,专注于当前上下文窗口大小。另一方面,我们的神经记忆能够从数据中持续学习并将其存储在其权重中,可以扮演长期记忆的角色。在本节中,我们旨在通过提出 Titans 的三种不同变体来回答上述问题。在后续实验中,我们将展示每种变体的优缺点,以及在超长上下文中的效率与有效性之间的权衡。


4.1 记忆作为上下文(Memory as a Context, MAC)

在第一种架构设计中(见图 2),我们将记忆视为当前信息的上下文。即,给定一个长序列 $ x \in \mathbb{R}^{N \times d_{\text{in}}} $,我们首先将序列分割为固定大小的段 $ S^{(i)} $($ i = 1, \ldots, N/C $)。给定传入的段 $ S^{(t)} $,我们将其视为当前上下文,并将其过去的段视为历史信息。因此,设 $ \mathbf{M}{t-1} $ 为段 $ S^{(t)} $ 之前的长期记忆状态,我们使用输入上下文作为查询,从长期记忆 $ \mathbf{M}{t-1} $ 中检索相应的信息。即,我们检索与 $ S^{(t)} $ 对应的过去信息:

\[h_t = \mathbf{M}^*_{t-1}(\mathbf{q}_t), \quad (21)\]

其中 $ \mathbf{q}_t = S^{(t)} \mathbf{W}_Q $。接下来,我们将此历史信息与持久记忆参数一起作为注意力模块的输入序列:

\[\tilde{S}^{(t)} = [p_1, p_2, \ldots, p_{N_p}] \parallel h_t \parallel S^{(t)}, \quad (22)\] \[y_t = \text{Attn}(\tilde{S}^{(t)}). \quad (23)\]

整个序列的注意力图结构如图 3a 所示。然后,我们使用 $ y_t $ 更新长期记忆模块以用于下一个段和最终输出:

\[\mathbf{M}_t = \mathbf{M}_{t-1}(y_t), \quad (24)\] \[o_t = y_t \otimes \mathbf{M}^*_t(y_t). \quad (25)\]

需要注意的是,在上述过程中,我们通过前向传播更新 $ \mathbf{M}_{t-1} $ 的权重。

图片名称

图4

该架构具有两个关键优势:

  1. 注意力机制:通过同时拥有历史和当前上下文,能够决定在当前数据下是否需要长期记忆信息。
  2. 记忆管理:注意力模块帮助长期记忆仅存储当前上下文中有用的信息,避免记忆溢出。
  3. 测试时的行为
    • 持久记忆参数固定,因为它们编码了任务知识,不应更改。
    • 注意力模块权重是上下文学习者。
    • 长期记忆模块在测试时仍在学习(记忆)信息,即神经记忆的权重在测试时也会更新,以编码过去的抽象。

4.2 门控记忆(Gated Memory)

在第二种变体中(见图 4),我们在一个分支中直接使用输入数据更新长期记忆,在另一个分支中使用滑动窗口注意力(SWA):

\[\tilde{x} = [p_1, p_2, \ldots, p_{N_p}] \parallel x, \quad (26)\] \[y = \text{SW-Attn}^*(\tilde{x}), \quad (27)\] \[o = y \otimes \mathbf{M}(\tilde{x}), \quad (28)\]

其中 $ \text{SW-Attn}^* $ 是带有前缀的滑动窗口注意力(见图 3b)。需要注意的是,与之前的设计不同,我们不对输入数据进行分段。此外,我们简化符号并使用 $ \mathbf{M}(x) $ 表示序列中所有 token 递归后的记忆最终输出。在上述等式中,$ \otimes $ 可以是任何非线性门控。在我们的实验中,我们使用可学习的向量值权重对输出 $ y $ 和 $ \mathbf{M}(\tilde{x}) $ 进行归一化,然后应用非线性函数 $ \sigma(\cdot) $。

该设计的整体注意力掩码如图 3b 所示。在这种设计中,滑动窗口注意力充当精确的短期记忆,而神经记忆模块则充当模型的衰减记忆。这种架构设计也可以被视为一种多头架构,其中头的结构不同(X. Dong 等人,2024)。

4.3 记忆作为层(Memory as a Layer, MAL)

在第三种变体中,我们将神经记忆作为深度神经网络的一层(见图 5)。这种架构设计在文献中更为常见,其中混合模型将循环模型与完整或滑动窗口注意力机制堆叠在一起。给定输入 $ x $,我们有:

\[\tilde{x} = [p_1, p_2, \ldots, p_{N_p}] \parallel x, \quad (29)\] \[y = \mathbf{M}(\tilde{x}), \quad (30)\] \[o = \text{SW-Attn}(y), \quad (31)\]

其中 $ \text{SW-Attn} $ 是滑动窗口注意力。这种设计的主要缺点是模型的能力受限于每一层,因此无法充分利用注意力和神经记忆模块的互补数据处理能力。在我们的实验中,为了评估这种设计中的记忆,我们使用了类似于 H3(D. Y. Fu 等人,2023)的架构,其中我们将序列模型替换为我们的神经记忆模块(LMM)。


无注意力的记忆

尽管上述讨论中我们将 MAL 视为 LMM 和注意力机制的顺序组合,但 MAL 的一个简单变体是将 LMM 视为没有任何注意力机制的序列模型。从记忆的角度来看,如第 1 节所述,我们期望记忆系统的每个部分都能独立工作,即使其他组件受到干扰。因此,即使没有短期记忆(即注意力机制),长期记忆模块仍然应该是一个强大的模型。我们在实验中称这种变体为 LMM 或 Titans(LMM)。我们在附录 C 中提供了关于 Titans 与其他现代循环模型联系的更多讨论。

图片名称

图5


4.4 架构细节

为了简洁和清晰,我们避免讨论实现细节,例如使用残差连接、线性层门控和归一化。在所有块中,我们使用残差连接。在我们的实现中,我们使用 SiLU(.) 激活函数(Elfwing, Uchibe, and Doya, 2018)作为计算查询、键和值的非线性激活,并使用 $ \ell_2 $-范数对查询和键进行归一化。


卷积

遵循最近的现代线性循环模型(Gu 和 Dao,2024;S. Yang, Kautz, and Hatamizadeh,2024),我们在每个查询、键和值投影之后加入一维深度可分离卷积层。虽然这些一维卷积对性能的影响不大,但它们已被证明可以提升性能,并且在计算上也很高效。


门控

我们还遵循最近的架构,在最终输出投影之前使用归一化和线性层门控(Mehta 等人,2023)。


定理 4.1

与 Transformers、对角线性循环模型和 DeltaNet 不同,这些模型都受限于 $ \text{TC}^0 $(Merrill, Petty, and Sabharwal, 2024),Titans 能够解决超出 $ \text{TC}^0 $ 的问题,这意味着 Titans 在状态跟踪任务中理论上比 Transformers 和大多数现代线性循环模型更具表达能力。

#

https://arxiv.org/pdf/2501.00663v1

meta Ins在《QuickUpdate: a Real-Time Personalization System for Large-Scale Recommendation Models》给出了它们的系统实现:

摘要

深度学习推荐模型在在线公司中扮演着重要角色,并且占据了用于训练和推理的AI基础设施的主要部分。这些模型的准确性高度依赖于它们在服务端的发布速度。提高模型更新延迟和频率的主要挑战之一是模型的大小,这些模型的大小已经达到了TB级别,并且预计未来还会进一步增加。大模型大小导致了在分布式服务器中更新模型时的高延迟(和写入带宽)。我们提出了QuickUpdate,一个用于大规模推荐模型实时个性化的系统,它能够作为在线训练的一部分高频发布模型,提供与完全新鲜模型相当的服务准确性。该系统采用了新技术来最小化所需的写入带宽,包括:优先参数更新、间歇性全模型更新、模型转换和宽松一致性。我们使用真实世界的数据在Meta的一个最大生产模型上评估了QuickUpdate。结果表明,QuickUpdate提供了与完全新鲜模型相当的服务准确性,同时将平均发布的更新大小和所需带宽减少了超过13倍。它为实时服务生产模型提供了一个可扩展的解决方案,这在网络和存储带宽有限的情况下,否则是不可能大规模实现的。

1 引言

深度学习推荐模型(DLRM)在许多在线公司中被广泛使用。这些模型通过大规模数据进行训练,以学习用户和产品特征,从而在各种场景中提供个性化推荐。例如,Netflix [7] 和 YouTube [4] 为用户提供电影列表;Amazon [19] 和 Alibaba [20] 根据用户的搜索查询推荐相关产品;Google [3] 和 Meta [23] 则根据用户兴趣展示广告和内容。DLRM 在这些公司中占据了 AI 基础设施的主要部分。以 Meta 为例,DLRM 消耗了超过 80% 的机器学习推理周期 [8] 和超过 50% 的训练周期。

推荐模型有助于业务增长。例如,它们贡献了 Amazon 总购买量的 35% [8, 14]。由于这种广泛的业务影响,准确性成为大规模推荐模型的重要性能指标。特别是在 Meta 的业务中,设计检查点(checkpoint)和量化算法时要求准确性损失小于 0.01%[5]。这是一个非常狭窄的容差范围,表明了推荐模型及其准确性的重要性。

模型新鲜度 是个性化推荐模型准确性的关键因素 [4, 6, 9, 22, 25]。由于模型在高度动态的环境中运行推理,准确性可能会迅速下降。例如,每天都有新用户和物品注册到系统中,用户的兴趣可能会受到近期事件的影响。如果模型没有频繁更新,它将无法反映用户和产品的变化,从而导致准确性逐渐下降。为了进一步强调新鲜度的影响,图 3 展示了模型在数小时未刷新时的显著准确性损失。因此,为了将准确性保持在可接受的水平,推荐模型需要使用最新数据进行重新训练,并使用更新后的模型来服务实时推理。

图 3

保持推理模型新鲜的一种常见技术是在线训练。与每次从头开始重新训练模型不同,它使用实时流数据不断训练和优化模型。定期创建模型的快照并将其发布到位于不同地理区域的数百台服务器中。这些服务器随后利用该模型对在线查询进行实时预测。然而,更新服务模型会带来训练集群与分布式服务主机之间的延迟,导致模型刷新延迟,这主要是由于现代模型的规模庞大。

多年来,模型规模迅速增长,达到了 TB 级别,并包含数万亿个参数 [5, 10, 15],以捕获数百万个稀疏特征并提高模型准确性。有限的写入带宽在将如此大的模型传输到分布式服务器和存储时构成了挑战。因此,更新延迟可能会延长到数小时。如第 3 节详细讨论的那样,这种长时间的延迟可能会对准确性产生不利影响。

为了解决上述由大模型规模及其导致的更新延迟带来的挑战,我们提出了 QuickUpdate。QuickUpdate 采用以下设计元素来实现大规模 DLRM 的实时个性化:

  1. 优先参数更新:在数百个地理分布的节点中完全更新所有服务模型的参数需要大量的网络和存储带宽,这构成了瓶颈。
    QuickUpdate 通过优先参数选择来最小化更新规模。它对服务模型中的特定参数进行排序和选择,同时从更新中修剪其余参数。这种方法显著减少了总体更新规模并缓解了带宽需求。
    参数排序算法在最小化更新规模时避免准确性下降至关重要。

  2. 间歇性全模型更新:间歇性全模型更新是指在一系列连续的部分更新之后进行一次完整的模型更新。这些完整更新的主要目的是保持服务模型的长期准确性。每次部分更新后,服务模型会偏离训练模型,因为前者仍然使用过时的参数值。随着更多部分更新的进行,这种偏差会变得更大,从而导致潜在的准确性影响。为了提高准确性,间歇性地发布完整模型更新以限制服务模型与训练模型之间的差距。

  3. 实时更新的模型转换:QuickUpdate 采用了几种模型转换技术来减少发布的模型规模,包括推理剪枝和量化。
    量化已在一些研究中成功实施 [11, 24, 27],以在不牺牲准确性的情况下降低浮点精度。它有助于减少推理集群中的存储需求和通信成本。推理剪枝则应用于非常大的查找表。在 DLRM 中,实体(如用户或视频)及其对应的向量以查找嵌入表的形式存储。实际不活动的实体索引(或 ID)从服务平台中修剪,以显著减少服务模型的规模。

  4. 简化的服务设计和宽松的一致性要求:在传统的服务设计中,模型在开始服务查询之前会完全加载到服务平台中,以保持强一致性。在这种设计中,每个推理请求都基于特定版本的模型权重执行,确保一致且可靠的结果。然而,这种方法由于使用额外的缓冲节点而带来了相当大的基础设施开销。
    在 QuickUpdate 中,我们通过放宽一致性要求引入了一种更高效的服务设计。权重直接在服务节点中更新,而不是使用缓冲节点。这消除了对额外基础设施的需求并减少了开销。然而,这种宽松的设计可能会导致嵌入表中的一些不一致性,因为它们可能包含新鲜和过时权重的混合。
    尽管嵌入表中可能存在不一致性,但我们的评估表明,服务模型的准确性并未受到影响,反而带来了准确性的提升。

我们使用真实世界的数据和 Meta 生产中部署的最大模型之一对 QuickUpdate 进行了评估。总体而言,我们的结果表明,QuickUpdate 能够提供与完全新鲜模型相当的服务准确性,同时将所需的写入带宽减少了超过 13 倍。它为实时服务生产 DLRM 提供了一个可扩展的解决方案,而这在网络和存储带宽有限的情况下是无法大规模实现的。QuickUpdate 通过利用新颖的技术实现了这一点,包括选择性发布每次更新的最重要部分,同时仍然结合低频的间歇性全模型更新以确保长期准确性。

2 背景

2.1 深度学习推荐模型(DLRM)

通常,深度学习推荐模型由稀疏层和稠密层组成,如图 1 所示 [5, 10, 26]。稀疏层实际上是嵌入表,其中每个嵌入表表示一个分类特征,表的每一行表示一个特定的 ID(例如用户 ID 或视频 ID)。嵌入表将每个 ID 转换为一个固定大小的浮点值向量,这些向量是可训练的。模型中其余可训练的部分称为稠密层。

图片名称

图 1

图 1 展示了数据在 DLRM 中的流动方式。稀疏特征通过嵌入表进行转换;稠密特征通过底部的稠密层进行转换。转换后的特征随后被连接起来,并在顶部的稠密层中进一步转换,以计算输入数据的可能性。

2.1.1 训练 DLRM

并行化是规模化训练推荐模型的主要方法 [5, 8]。稀疏层和稠密层可以采用不同的并行化逻辑。稀疏层占整个模型大小的 99% 以上,可能达到数 TB 的规模。由于将所有稀疏层存储在单个节点中是不可行的,因此采用模型并行化的方法将表分片到多个节点上。另一方面,稠密层的规模足够小,可以容纳在每个节点中,因此它们被复制到各个节点上以利用数据并行化。

在 Meta,一个典型的训练集群包括 16 个节点,每个节点包含一个多插槽 CPU 和 8 个 GPU。稀疏层在所有 GPU 上分片,在正向和反向计算期间进行“all-to-all”通信。稠密层在所有 GPU 上复制,在反向传播期间使用“all-reduce”通信来聚合多个 GPU 中计算的梯度 [16]。在训练期间,稀疏层和稠密层的新权重被同步计算和更新,以避免准确性下降。

2.1.2 服务 DLRM

为了以高吞吐量的方式高效地服务批量请求,通常使用 GPU 进行模型服务。在 Meta,服务节点位于专用的服务集群中。一个服务节点由主机 CPU 和附加的 GPU 组成。服务模型在服务节点之间复制,并使用数据并行化进行规模化模型服务。广告嵌入表存储在单个 GPU 中,因为它们需要更高的读取吞吐量。其他嵌入表存储在 CPU 中,CPU 通常具有更大的内存容量(例如 1.5 TB DRAM)。为了存储嵌入表,使用紧凑的数据结构来最小化大小并以 GPU 友好的方式存储。特别是,嵌入表是连续存储的,每个嵌入表以行优先顺序存储在数组数据结构中。

为了刷新服务模型,使用额外的缓冲节点来避免暂停当前的服务节点。在新发布的模型加载到缓冲节点后,请求流量会切换到缓冲节点。

2.2 在线训练与离线训练

当服务模型需要使用实时数据流不断训练和更新时,会实施在线训练。在在线训练中,服务模型在提供预测的同时,会定期(以分钟到小时为单位)更新。训练在后台(通常在单独的集群中)继续运行以微调模型。训练模型发布到服务平台的速率对其生成的预测准确性有显著影响。

相比之下,离线训练不使用实时数据流进行训练,也没有严格的时间限制来训练模型并将其发布到服务平台。相反,它通常使用已经存储在数据存储中的大量数据。模型使用所有可用数据进行训练,当满足某些最优条件时训练停止,之后将其发布到服务平台。

选择在线训练还是离线训练取决于具体的使用场景。当模型需要及时更新时,会实施在线训练系统。典型的用例可能是广告、搜索和视频的 DLRM(例如 [13, 18, 21]),当环境高度动态且需要模型几乎实时更新(以分钟为单位)时。在线训练帮助这些模型整合最新数据并避免准确性下降。当业务需求不需要实时模型更新时,可以使用离线训练方法来更新模型。

2.3 优化器状态作为特征重要性度量

通常,大型 DLRM 可以使用数十万个特征进行训练;然而,其中一些特征及其对应的权重对准确性没有影响。这些特征可能属于不活跃的用户或内容 ID,或者某些其他特征可能无法提供训练信号。在模型发布时,维护所有这些参数会消耗额外的带宽,或者在服务平台中运行推理时会消耗额外的计算和 GPU 存储。

为了减轻这些不利影响,我们可以计算特征重要性,并相应地修剪那些实际上不影响准确性的特征和权重。

QuickUpdate 使用优化器状态(或梯度动量)来计算特征重要性。它属于基于梯度的特征重要性度量家族(例如 [2, 12, 18])。优化器状态是梯度值的历史平均值,比梯度值更稳定,因为梯度值有时会在正值和负值之间振荡。优化器状态可以为我们提供以下指示:

  1. 对准确性的影响:它实际上显示了在训练过程中某个特定参数被更新的频率和幅度。较高的梯度值表明对提高准确性有较大影响;如果这种影响在历史上持续存在,我们可以更有信心地推断该参数对准确性很重要;因此,优化器状态是特征对准确性影响的稳定指示。

  2. 访问率:优化器状态为零(或接近零)表明该参数在训练过程中实际上没有被更新。这有两层含义。首先,这可能意味着该参数没有被访问过。这可能发生在一些不活跃的用户 ID 或过时的视频上。其次,如果实体是活跃的,接近零的值可能意味着从相关数据中可能没有重要的信号可以学习。例如,某个特定用户 ID 可能没有使用平台点击广告。

基于上述信息,QuickUpdate 使用优化器状态来完成两项不同的任务:

  1. 推理剪枝:当发布完整模型时,QuickUpdate 使用优化器状态来减少完整模型更新的规模。在此阶段,QuickUpdate 关注优化器状态值的低尾部分,并修剪那些对准确性没有影响的参数。

  2. 优先参数选择:当发布部分更新时,QuickUpdate 使用优化器状态来选择更重要的参数进行更新。在此阶段,QuickUpdate 关注优化器状态值的高尾部分,以更新更重要的参数。

2.4 推理剪枝

推理剪枝是为了在将完整模型快照发布到服务平台时减少模型的大小。剪枝特别针对查找嵌入表实施,并显著减少其大小(例如减少 50%)。由于查找表占 DLRM 大小的 99% 以上,剪枝可以在不影响准确性的情况下显著减少模型的大小。减少模型大小有助于消耗更少的带宽来发布模型更新;因此,更新可以以更短的延迟发布到数百个地理分布的集群中。此外,它还有助于更快地执行推理,因为计算中涉及的行数更少。

图片名称

图 2

图 2 展示了一个查找表的示例,其中包含索引和对应的行。每个索引代表分配给用户、视频等的唯一 ID。每一行可以被视为一个由可训练的浮点值组成的向量,模型使用这些向量为用户生成个性化推荐。

直观上,推理剪枝算法识别出代表不活跃实体或无法提供训练信号以提高准确性的行。从数学上讲,这是通过使用优化器状态向量来实现的。具体来说,训练器可以为每一行提供一个优化器状态向量。优化器状态向量中的每个元素表示该行中对应元素的梯度动量。优化器状态向量中元素的平均值用于量化行的重要性值。如果行的重要性值接近零,则意味着该行的元素在训练过程中实际上没有被更新;因此,该行可以被剪枝。

图 2 还展示了剪枝前后查找表的变化。使用行重要性值,推理剪枝算法确定最不重要的索引,并在将完整更新发布到服务器之前将其剪枝。出于操作目的,原始索引值会被重新映射到新的索引。新索引会简单地按照它们在原始表中的出现顺序递增。

需要注意的是,在本文中,完整模型更新指的是执行推理剪枝后的模型快照。

3 动机

在本节中,我们通过真实世界的数据来展示开发 QuickUpdate 的动机。首先,我们展示了当模型一小时或更长时间未更新时,准确性如何显著下降。接着,我们讨论了模型规模扩大带来的影响。如果不修改模型发布方法,我们只能选择接受更长的更新延迟和逐渐下降的准确性,或者大量投资基础设施以保持更新延迟的一致性。最后,我们强调了无损模型更新的局限性,强调了优先更新的必要性。

准确性增益

更新完整的服务模型是一个耗时的过程,可能需要数小时。因此,用户的最新行为和兴趣(例如发布新动态或与特定内容互动)在几小时内不会反映在服务模型中,这可能会降低模型的准确性。

图片名称

图 3 展示了在 Meta 的一个大规模模型中,随着模型更新延迟(1 到 7 小时),准确性如何下降。它将陈旧服务模型的准确性损失与完全新鲜模型进行了比较。结果显示,当模型更新延迟时,准确性损失显著增加,7 小时后损失超过 0.6%。

减少更新规模有助于加速模型更新并提高服务模型的准确性。

模型规模

近年来,DLRM 的规模显著增加。这些模型利用大量数据和参数来更好地理解用户兴趣和产品特征,从而提高准确性。这一进展催生了具有数万亿参数 [15] 和数 TB 模型大小 [5] 的复杂模型。此外,这一趋势预计在未来仍将持续。

随着模型规模的增加,由于传输所需的带宽增加,模型更新延迟也随之延长。如果不加以解决,预计这将导致未来模型新鲜度的下降。鉴于模型规模的持续扩大,单纯增加基础设施并不是一个可行的长期解决方案。因此,对大规模 DLRM 进行部分更新似乎是一个有前景的策略,旨在减少更新延迟,而无需增加更多基础设施。

无损模型更新

为了更好地理解模型随时间变化的比例,我们监控了更新的嵌入行,并据此计算了模型中被修改的平均比例。图 4 显示了模型随时间更新的百分比。很明显,模型的大部分在短时间内被更新。例如,在短短 10 分钟的时间间隔内,58% 的模型被更新。更新 58% 的模型是资源密集型的,需要比每小时更新完整模型更多的基础设施。这促使我们探索一种优先更新的方法,以显著减少更新规模。

图片名称

图 4

4 系统概述

图 5 提供了 QuickUpdate 架构的概览。DLRM 系统由训练节点、服务节点和用于保存模型快照的远程存储组成。QuickUpdate 的发布逻辑主要在 UpdateSelectorUpdatePatcher 代理中实现,这两个代理分别部署在训练节点和服务节点中。UpdateSelector 负责决定模型的哪一部分应该更新,并在保存到远程存储之前对其进行量化。UpdatePatcher 根据执行的更新类型实现不同的修补策略。以下部分提供了更多详细信息。

图片名称

图 5

4.1 更新什么

QuickUpdate 专注于对嵌入表执行部分更新,这些表通常占深度学习推荐模型的绝大部分(在我们的工作负载中超过 99%)。在这些模型中,每个表表示一个分类特征(例如用户、视频),表中的每一行对应于与该特征相关的特定 ID。

在我们的探索中,我们考虑了两种更新嵌入表的选项:

  1. 更新选定表的所有行。
  2. 更新所有表中的选定行(不同表的选定行索引可能不同)。

我们发现,以行级粒度进行更新可以在最小化整体更新规模的同时提高准确性。因此,QuickUpdate 决定服务端需要更新表中的哪些特定行。这种方法使 QuickUpdate 能够优先更新更有可能提高准确性的内容或用户 ID,从而确保更新策略的高效性和有效性。对于模型中的稠密层,QuickUpdate 执行完整更新。这是因为这些层的更新规模相对较小,针对这些层的任何优化对整体更新过程的影响不大。

4.2 UpdateSelector

QuickUpdate 的 UpdateSelector 组件在训练集群中实现。这是因为它需要从训练器中获取某些模型信息(例如参数值)以准备模型更新。

在在线训练期间,训练器以批次间隔运行。在每个训练间隔结束时,训练器将模型状态和优化器状态共享给 UpdateSelector。模型状态包括分片的嵌入表和稠密参数值,而优化器状态包括梯度值及其动量。这些状态从 GPU 内存复制到主机 CPU 内存中。

UpdateSelector 使用优化器状态对 CPU 中的模型副本执行以下两项任务:

  1. 优先参数选择:此任务的主要目标是仅更新模型参数的一小部分,同时最小化准确性的下降(与完整更新相比)。在此阶段,QuickUpdate 根据优化器状态值选择嵌入行,优先选择那些可能对准确性提升较大的行。
  2. 推理剪枝:此任务在发布完整模型时执行。推理剪枝专注于稀疏嵌入表,旨在减少完整模型更新的规模。在此阶段,QuickUpdate 识别低尾优化器状态值,并剪枝值接近零的嵌入行。这些行对模型准确性的影响可以忽略不计。

一旦更新(无论是完整还是部分)准备就绪,它们会经过量化以减少其大小。量化作为一种压缩方法,对模型准确性的影响可以忽略不计。量化后的更新随后存储在远程存储中,准备用于更新过程。

4.3 UpdatePatcher

UpdatePatcher 负责加载发布的快照并更新服务模型。它对部分和完整模型更新都采用了一种高效的非原子更新方法。在非原子更新过程中,多个线程可以访问模型参数,并逐步将参数修补到服务器中。这种方法允许多个线程并发修补参数,而无需锁定服务器或模型。因此,服务器可以在应用更新的同时继续对传入流量进行推理。这种方法确保了在更新过程中实时流量的高效且不间断的服务。

4.4 工作流程

图 6 展示了 QuickUpdate 的工作流程。为简化说明,我们仅展示了训练器、UpdateSelector 和一个服务节点中的时间尺度。模型的演化是一个可重复的模式,因此我们专注于一个周期,该周期进一步分为多个间隔。在周期 ( c ) 的每个间隔 ( i ) 开始时,UpdateSelector 可以访问完整模型 ( F_{c,i} ) 以确定模型的哪一部分应该更新。具体来说,首先会发布一个完整快照(即 ( F_{c,1} ))并加载到服务器中,然后连续的部分更新(( P_{c,i} ) 其中 ( i > 1 ))会被发布并修补到完整快照中,以创建服务快照 ( S_{c,i} )。

图片名称

图 6

将更多部分更新与服务模型合并可能会导致服务模型 ( S_{c,i} ) 与当前训练器状态 ( F_{c,i} ) 之间的偏差增大。这种偏差可能会导致准确性下降。因此,另一个完整的新鲜快照(即 ( F_{c+1,1} ))将被发布到服务集群,标志着当前周期的结束。服务端的模型演化可以表示如下:

[ S_{c,1} = F_{c,1} ] [ S_{c,i} = M(S_{c,i-1}, P_{c,i}) \quad \text{对于} \quad 1 < i \leq I ]

其中,( I ) 是一个周期中的间隔数,( M ) 是合并操作符。合并操作符简单地复制 ( P_{c,i} ) 的参数值并将其更新到 ( S_{c,i-1} ) 中。

5 设计

在本节中,我们讨论了设计选项及其对准确性指标的影响。我们首先定义了指导设计和评估的具体准确性指标。通过在整个设计过程中优先考虑准确性,我们的目标是创建一个有效的系统,在解决网络和存储带宽瓶颈的同时,提供高服务准确性。需要注意的是,QuickUpdate 是可配置的,并在生产环境中进行监控,以应对罕见的准确性下降情况。

5.1 准确性指标

二元交叉熵(Binary Cross Entropy)或熵(Entropy)[17] 是评估广告模型准确性的一个众所周知的综合指标。在本研究中,我们使用归一化熵(Normalized Entropy, NE),其定义为二元交叉熵除以一个常数。为了理解部分更新相对于完全新鲜快照和过时模型的表现,我们计算了 NE 的以下变体。为简化说明,我们从符号中省略了周期下标 ( c )。

  1. NE 损失:它表示使用模型 ( S_i ) 而不是相应的完全新鲜模型 ( F_i ) 运行推理时的准确性下降。 [ \text{NE}{\text{loss}}(S_i) = \frac{\text{NE}{S_i} - \text{NE}{F_i}}{\text{NE}{F_i}} \times 100 \quad (1) ] 其中,( \text{NE}{S_i} ) 和 ( \text{NE}{F_i} ) 分别表示模型 ( S_i ) 和 ( F_i ) 的归一化熵。

  2. NE 增益:它表示如果使用 ( S_i ) 进行推理而不是过时模型,可以预期的准确性提升: [ \text{NE}{\text{gain}}(S_i) = \frac{\text{NE}{S_i} - \text{NE}{\text{stale}}}{\text{NE}{\text{stale}}} \times 100 \quad (2) ] 过时模型被认为是最近发布的完整模型 ( F_1 )。

  3. NE 恢复:它表示模型 ( S_i ) 已达到的最大 NE 增益的百分比。我们假设如果可以使用完全训练的模型 ( F_i ) 进行推理,则可以实现最大 NE 增益。因此,NE 恢复定义为: [ \text{NE}{\text{recovery}}(S_i) = \frac{\text{NE}{\text{gain}}(S_i)}{\text{NE}_{\text{gain}}(F_i)} \times 100 \quad (3) ]

5.2 选择标准

为了优先更新能够带来更大准确性增益的行,我们需要一个在训练过程中保持稳定的可靠指标。虽然梯度向量可以作为标准,但其在正值和负值之间的振荡引入了数值不稳定性。相反,我们可以使用优化器状态向量(也称为动量),它提供了更稳定的度量。优化器状态向量表示特定行的历史梯度的平均平方和。通过将 ( \text{OS}^r_{c,i} ) 表示为模型在间隔 ( i ) 时行 ( r ) 的优化器状态向量,并将 ( \overline{\text{OS}^r_{c,i}} ) 表示为其元素的平均值,我们可以利用该度量作为行重要性的指示。

直观上,具有较大 ( \overline{\text{OS}^r_{c,i}} ) 值的行更有可能提高准确性。例如,这些行可能代表频繁使用平台点击广告的特定用户,或者代表具有高访问率的特定视频。除了给定间隔的 ( \overline{\text{OS}^r_{c,i}} ) 的大小外,跟踪其随时间的变化也可能很重要。这对于我们更倾向于优先选择相对于旧版本发生变化的参数的情况可能具有潜在的信息价值。基于这些直觉,我们评估以下选择标准:

  1. 绝对优化器状态: [ \text{abs}(\overline{\text{OS}^r_{c,i}}) \quad \text{对于} \quad i > 1 \quad (4) ]

  2. 增量优化器状态: [ \text{abs}(\overline{\text{OS}^r_{c,i}} - \overline{\text{OS}^r_{c,i-1}}) \quad \text{对于} \quad i > 1 \quad (5) ]

选择使用绝对优化器状态还是增量优化器状态作为选择标准取决于它们各自的优势和权衡。虽然绝对优化器状态提供了行对准确性影响的稳定和综合度量,但增量优化器状态捕捉了与前一个间隔相比影响的变化。然而,使用增量优化器状态需要额外的内存来存储前一个间隔的优化器状态。为了评估这些标准的影响,我们进行了实验,间隔长度为 30 分钟,更新规模为 10%。在发布完整快照并再训练一小时后,我们根据这两个标准发布了更新规模为 10% 的部分快照。然后,我们评估了与完全新鲜模型相比的服务准确性。表 1 中的结果(在多次此类实验中一致)表明,增量优化器状态实现了 100% 的 NE 恢复,而绝对优化器状态实现了 70% 的 NE 恢复。这意味着基于增量优化器状态选择行可以减少服务模型与相应完整快照之间的差异。

5.3 增量选择的基线

增量优化器状态是基于基线计算的。在计算增量优化器状态时,我们考虑了两种选择基线的方法:

  1. 上一次更新时的模型状态:此选项将上一次更新时的模型状态作为基线。这与上一节中增量优化器状态的定义相同。

  2. 上一次完整更新时的模型状态:如第 5.6 节所述,QuickUpdate 还利用间歇性完整更新。在此基线选项中,将上一次间歇性完整更新时的模型状态用作增量。在这种情况下,增量优化器状态定义为: [ \text{abs}(\overline{\text{OS}^r_{c,i}} - \overline{\text{OS}^r_{c,1}}) \quad \text{对于} \quad i > 1 \quad (6) ]

对于第一种选项,需要在每个训练间隔结束时保存基线,而对于第二种选项,只需在周期的第一个间隔中保存一个基线。因此,第一种选项提供了更新鲜的基线,但需要额外的计算资源将其保存在内存中。

我们通过实验检查了不同基线对服务准确性的影响,每个间歇性完整更新后跟随四个部分更新。我们评估了与完全新鲜模型相比的服务准确性(NE 恢复)。表 2 中的结果显示,使用上一次间隔的基线可以实现 3.11%(95.94% 对比 99.05%)更高的 NE 恢复。这表明,使用上一次更新的模型状态作为基线可以更好地反映最近的用户兴趣,因为它在每个更新间隔中都会刷新。此外,使用完整更新作为基线可能会优先选择在前一个间隔中重要但不再对准确性有贡献的参数。随着时间的推移,这些参数的优化器状态可能达到平稳状态,但由于其较大的增量优化器状态值,完整更新基线可能仍然会考虑它们。更频繁地刷新基线有助于消除对此类参数的优先选择,转而优先选择最近变化的参数,这些参数更有可能对准确性提升有贡献。

5.4 实时推理剪枝

如第 2.4 节所述,推理剪枝有助于减少服务模型的大小和所需的 GPU 数量。它实际上会剪枝那些不再活跃或对准确性影响可以忽略的行(或 ID),以减少嵌入表的大小。然后,剪枝后的表以 GPU 访问友好的方式紧凑地存储,以进一步减少服务集群中的大小。

剪枝仅在完整模型发布到服务集群时实施。对于后续的间隔,我们希望部分更新能够与完整模型更新中的剪枝表兼容。理想情况下,部分更新中的行 ID 应存在于剪枝表中。这有助于我们简单地更新现有行的值,而无需重新构建 GPU 中的表。然而,情况并非总是如此。由于部分更新的训练数据与完整模型更新不同,可能会出现某些行 ID 在部分更新中变得重要,而这些 ID 在服务端的剪枝表中不存在的情况。当发生这种情况时,一种简单的实现方法是将缺失的行插入服务端的剪枝表中,但这可能是资源密集型的,并且可能需要重新调整所有 GPU 上的嵌入表以确保可访问性和效率(例如,避免内存碎片)。

为了避免嵌入表的密集重新调整,我们探索了两种与部分更新兼容的推理剪枝策略:

  1. 固定索引剪枝(见图 7a):在此策略中,QuickUpdate 执行优先参数选择以选择要更新的候选行索引。然而,仅更新嵌入表中已存在的行,而剪枝的行保持不变。

  2. 固定剪枝比例(见图 7b):在此策略中,每次完整更新时从嵌入表中剪枝固定比例的行。当 QuickUpdate 执行优先参数选择时,它最多选择 ( X ) 个索引进行更新,其中 ( X ) 是服务平台上给定表中的总行数。这确保了表中的行数保持一致。

图片名称

图 7

第一种策略避免了重新调整,因为只会进行行更新操作,而不会向嵌入表中插入新行。第二种策略通过使用行更新和索引重映射操作来避免重新调整。由于嵌入表的大小在第二种策略中不会改变,因此也避免了在 GPU 之间重新分片嵌入表的需要。

为了评估这两种剪枝策略,我们考虑了三种训练场景:1-无剪枝,2-固定剪枝索引,3-每个表固定剪枝比例。

我们的实验表明,剪枝导致的 NE 损失实际上可以忽略不计(<0.001%),且两种剪枝策略之间没有准确性差异。考虑到实现需求,我们选择了固定剪枝索引策略,因为其实现更简单。与固定剪枝比例策略不同,它不需要在每次新更新时更新索引映射。

6 评估

我们在 Meta 部署的最大推荐模型之一上评估了 QuickUpdate,使用真实世界的数据,并在类似于 [15] 的生产训练集群上进行训练。该模型是 [16] 中提出的 DLRM 模型的扩展,但其规模显著更大,达到 TB 级别。我们在所有实验中使用相同的预记录数据流,使实验可重复且可比较,并消除了由于时间数据变化导致的潜在结果偏差。模型最初使用几周的真实世界数据进行训练作为预热期,以达到稳定状态。对于准确性评估,我们评估了在训练数据之后的时间段内数据流的服务预测(即推理期间评估的数据未在之前的训练中使用)。

6.1 准确性

在本节中,我们比较了不同更新粒度对准确性的影响,并推导出最小完整快照频率,以确保 NE 损失不超过 0.01%。在这些实验中,我们在开始时发布一个完整快照,并继续发布具有不同粒度的部分更新。这些部分更新应用于完整服务快照之上,并使用相同的记录数据集进行准确性评估。

6.1.1 与过时模型相比的 NE 增益

我们首先比较 QuickUpdate 与过时模型的准确性,以量化准确性增益并验证在完整快照之上应用部分更新不会对准确性产生负面影响。这里的过时模型指的是最初发布的完整快照。图 8 显示了不同更新粒度(且无间歇性完整模型更新)相对于过时模型的 NE 增益。所有更新规模的 NE 增益均高于过时模型,并且 NE 增益随时间增加。5% 和 10% 的更新提供了非常相似的 NE 增益,但 1% 的更新返回的 NE 增益较少,表明一些重要的行未包含在 1% 的更新中。总体而言,这些趋势表明,即使在应用部分更新超过 10 小时后,也没有负面影响,并且与过时模型相比,准确性提高了 0.7%。

图片名称

图 8

6.1.2 与完全新鲜模型相比的 NE 损失

在本节中,我们研究了使用部分更新发布的 QuickUpdate 模型的 NE 损失,与理想的完全新鲜服务模式进行比较。图 9 中的结果显示,使用 10% 更新时,NE 损失在整个 10 小时内低于 0.005%。使用 5% 更新时,NE 损失始终高于 10% 更新,但在超过 6 小时内仍低于 0.01%。随着训练周期的增加,NE 损失增加,因为服务模型与相应训练模型之间的差异增加。结果还展示了采用不同更新粒度对完整模型发布延迟的影响,同时确保 NE 损失保持在可接受的 0.01% 阈值以下。通过采用 10% 的粒度,我们可以有效地将完整模型发布的需求延迟超过 10 小时。同样,当使用 5% 的粒度时,我们可以将完整模型发布延迟 6 小时,同时仍将 NE 损失保持在可接受范围内。这突显了 5% 粒度下部分更新在捕获重要更新并在相当长的时间内保持模型准确性和新鲜度方面的有效性。

图片名称

图 9

6.1.3 短期内的 NE 损失

为了分析短期内的 NE 损失,我们进行了一项评估,涉及四个连续的 10 分钟更新。检查的更新粒度为 5%、3% 和 1%。每次更新后,使用未见过的数据测量与完全新鲜模型相比的 NE 损失。图 10 显示了不同 10 分钟间隔内的变化,强调了流数据的波动性。然而,当在多个短时间间隔内平均时,NE 损失趋于稳定。正如预期的那样,结果显示,随着粒度的增加,NE 损失减少。最后一列显示的平均 NE 损失证实,5% 的粒度在我们的工作负载中会返回可接受的 NE 损失(平均而言)。

图片名称

图 10

6.1.4 结论

准确性结果证明了 QuickUpdate 在采用 5% 更新粒度长达 6 小时的有效性,同时保持与完全新鲜模型相当的准确性水平,并确保 NE 损失低于 0.01% 的阈值。

此外,使用 QuickUpdate 的 5% 更新粒度允许在需要发布完整模型之前延迟 6 小时。这种延迟之所以可能,是因为部分更新成功捕获并整合了重要变化,从而生成了准确且最新的模型。

基于这些发现,QuickUpdate 默认每 6 小时触发一次间歇性完整模型发布,从而优化了准确性与更新频率之间的平衡。

6.2 分析长期行收敛性

在之前的分析中,我们的重点是基于准确性指标最小化部分更新粒度,并确定间歇性完整更新的适当频率。结果表明,使用 5% 粒度的部分更新持续 6 小时可以达到令人满意的准确性。

在本实验中,我们的目标是探索部分更新更新了模型中多少百分比的重要行。

为了确定重要行的代理,我们训练模型 6 小时(即与满意准确性相同的持续时间)。我们将重要行定义为训练模型中排名前百分之几的行,使得在 6 小时结束时发布这些行(而不是整个模型)将返回令人满意的准确性(即与完全新鲜模型相比差异低于 0.01%)。

图 11 显示了在 6 小时训练后,不同大小的单次更新与完全新鲜模型相比的 NE 损失。可以看出,单次 5% 的部分更新不足以将 NE 损失降低到可接受的 0.01% 阈值以下。然而,10% 的部分更新证明足以将 NE 损失降低到可接受的水平。这表明排名前 10% 的嵌入行是此时间窗口内重要行的良好代理。

图片名称

图 11

为了了解这些重要行中有多少百分比被多个较小的 5% 更新覆盖,我们运行了 QuickUpdate 6 小时,并使用多个 5% 粒度的部分更新。在将所有这些更新合并为一个联合集后,我们观察到该集合涵盖了上述重要行的 70%,并总体覆盖了模型中所有行的 7.3%。因此,大部分重要行被连续的较小部分更新所覆盖。

6.3 带宽使用

在 QuickUpdate 中,更新大小是带宽使用的代理。带宽使用量取决于粒度、更新间隔和间歇性完整模型更新的频率。通常,这些参数是可配置的,并可能根据 DLRM 的类型和所需的准确性而变化。在本节中,我们评估了基于发布模型百分比的不同策略的带宽使用情况。详细信息如下并在图 12 中展示:

图片名称

图 12

  1. 基线 1:每小时发布一次完整模型。
  2. 基线 2:每 10 分钟发布一次完整模型(未在图中显示)。
  3. 5% 更新(默认策略):每 10 分钟发布一次部分更新,粒度为 5%,每 6 小时发布一次间歇性完整更新(如 6.1 节所述)。
  4. 10% 更新:与之前的策略类似,每 10 分钟发布一次部分更新,但粒度为 10%。每 6 小时发布一次间歇性完整更新。

为了比较这些策略,我们平均了消耗的带宽。结果显示,默认策略(5% 更新粒度,6 小时间歇性完整更新间隔)平均每小时写入模型大小的 43.6%,而策略 3(10% 更新)为 68.2%,基线 1 为 100%。基线 2 提供了与策略 2 和 3 相当的准确性,但需要每小时发布模型大小的 600%。

总体而言,使用默认策略,QuickUpdate 能够将消耗的带宽比基线 1 减少 2.3 倍,同时提供与完全新鲜模型相当的更好准确性。与基线 2 相比(由于网络和存储带宽限制,无法大规模实施),QuickUpdate 能够将所需带宽减少超过 13 倍,同时仍提供相当的准确性。

6.4 宽松一致性

传统上,服务模型以原子方式更新以保持一致的推理。这涉及将所有模型权重加载到缓冲节点中,这些节点随后成为计算推理的服务节点。然而,这种方法由于使用缓冲节点而资源密集。为了解决这个问题,QuickUpdate 放宽了一致性要求,并在执行推理查询的同时直接在服务节点中更新参数。

我们评估了在 QuickUpdate 中间歇性完整模型更新期间的 NE 恢复(与完全新鲜模型相比),作为已更新权重百分比的函数。如图 13 所示,放宽一致性可以在加载期间提高生产中的准确性。随着更多参数的加载,NE 恢复增加。我们的数据显示,通过修补 30% 的参数,我们可以捕获约 54% 的 NE 恢复。在修补仅 70% 的参数后,NE 恢复达到约 94%。

图片名称

图 13

宽松一致性允许早期服务新鲜行(而不是等待整个模型更新),从而整体提高准确性。尽管在加载期间表的视图不一致(意味着不同的行可能属于不同的状态),服务一部分新鲜行已经导致准确性增加。NE 恢复随着时间的推移继续增长,直到整个模型更新完毕。

7 相关工作

异步或部分更新策略已在少数实时 DLRM 中实施 [13,18,21]。在 Kraken [21] 中,稠密参数每隔几秒批量更新一次,而稀疏参数在训练器中值发生变化时更新。这是一种无损参数更新,对于具有 1000-10000 亿参数 [15] 和地理分布式服务器的大型模型,可能会产生大量流量。Monolith [13] 主要专注于开发具有无冲突嵌入表的稀疏特征系统。稀疏参数可以在训练时以分钟级粒度更新,其值自上次同步以来发生变化。与 Kraken 类似,这是一种无损更新,可能会产生巨大的流量。总体而言,无损模型更新可能非常资源密集,如第 3 节所述。为了克服这个问题,QuickUpdate 可以执行优先参数选择,从而减少约 78% − 92% 的带宽,并且准确性损失可以忽略不计(< 0.01%)。在另一项研究中,Ekko [18] 被设计为一个高效的系统,用于将更新从训练模型广播到所有服务推理节点。为了快速更新服务模型中的较大嵌入表,他们使用了嵌入表更新中的稀疏性和时间局部性。Ekko 系统与 QuickUpdate 正交,两者可以一起实施。在 QuickUpdate 中,我们优化了设计元素,如发布间隔、更新粒度和参数选择标准,以实现所需的准确性并最小化完整模型的发布。优先参数选择是我们在本文中使用的技术之一。在以往的研究中(例如 [1,2,12]),基于梯度的参数选择已在分布式训练系统中探索。Ekko [18] 进一步扩展了这一标准,并额外考虑了每个参数的请求频率和参数新鲜度作为选择标准。在 QuickUpdate 中,我们决定选择梯度动量的增量,这是一个比梯度本身更稳定的度量,并且它发布的参数能够返回与基线快照相比的最高准确性。

8 结论

QuickUpdate 是一个支持在线训练执行低延迟部分更新的系统,同时提供与完全新鲜模型相当的服务准确性。它为实时服务生产规模的 DLRM 提供了一个可扩展的解决方案。这一点尤其有价值,因为由于网络和存储带宽的限制,大规模实时服务此类模型具有挑战性。

QuickUpdate 通过利用创新技术实现了其可扩展性和准确性目标。其中一项技术是选择性发布每次更新的最重要部分,从而在保持准确性的同时减少整体更新规模。此外,QuickUpdate 以低频率结合间歇性完整模型更新,以确保长期准确性。这种选择性部分更新和间歇性完整更新的结合使 QuickUpdate 能够在低延迟服务和长期保持准确性之间取得平衡。

我们使用大规模个性化广告模型的真实世界数据对 QuickUpdate 进行了评估,结果表明 QuickUpdate 能够提供与完全新鲜模型相当的服务准确性,同时将所需的写入带宽减少超过 13 倍。

附录

摘要

观看时间是视频推荐系统中衡量用户满意度的重要指标。然而,将观看时间作为目标变量进行预测常常受到其高度不平衡分布的阻碍,对于较大的目标值观察稀缺,而对于小值样本过多。最先进的观看时间预测模型将连续的观看时间离散化为一组桶,以考虑观看时间的分布。然而,如何从连续的观看时间分布中创建这些离散桶的问题尚未得到充分研究,现有的离散化方法要么存在较大的学习误差(learning error),要么存在较大的恢复误差(restoration error)。为了解决这一挑战,我们提出了一个带有错误自适应离散化(CREAD)的分类-恢复框架,以准确预测观看时间。所提出的框架包含一个离散化模块、一个分类模块和一个恢复模块。它通过多个分类问题来预测观看时间。离散化过程是CREAD框架的关键贡献。我们从理论上分析了离散化对学习误差和恢复误差的影响,然后提出了错误自适应离散化(EAD:error-adaptive discretization)技术,以更好地平衡这两种误差,这比传统的离散化方法实现了更好的性能。我们在公共数据集和工业数据集上进行了详细的离线评估,两者都显示出所提出方法的性能提升。此外,我们已经将我们的框架全面推广到快手应用,这是一个在线视频平台,通过A/B测试,用户的视频观看时间显著增加了0.29%。这些结果突出了CREAD框架在视频推荐系统中预测观看时间的有效性。

1 引言

推荐系统在匹配用户感兴趣的item方面取得了巨大成功(Herlocker 等人,2004)。其中最受欢迎的应用之一是短视频社交媒体(Tang 等人,2017;Wu, Rizoiu, 和 Xie 2018),如 TikTok 和 Instagram Reels,用户屏幕上会出现短视频,而无需任何主动操作,例如点击。因此,传统的指标如点击率不再适用。直观地说,观看时间(watch time)成为衡量用户参与度的关键指标(Covington, Adams, 和 Sargin 2016)。为确保最佳的用户体验,准确预测在线推荐系统中的观看时间至关重要。通过这样做,这些平台可以更好地了解用户偏好,并根据他们的兴趣提供个性化的视频推荐。大量研究(Zhan 等人,2022;Gong 等人,2022;Lin 等人,2022;Wang 等人,2022;Cai 等人,2023;Zhao 等人,2023)致力于开发神经网络模型,并显著提高了传统回归方法的预测准确性。

由于用户观看时间值的连续性和广泛性,观看时间的预测提出了一个回归问题,这增加了对异常值的敏感性和潜在预测偏差。如图1所示,短视频的观看时间分布是右偏的,大量的集中在短时间内:30% 的观看时间在 3 秒内,80% 在 32 秒内。这种分布给早期的观看时间预测尝试(Zhan 等人,2022;Covington, Adams, 和 Sargin 2016)带来了挑战,它们忽视了回归问题的长尾特性,因此对于尾部实例产生了次优结果。此外,在推荐系统中,预测之间的序数关系起着关键作用,以观看时间为视频比较的指标,突出了序数排序的重要性。然而,标准的回归损失如 ℓ1 和 ℓ2 并不考虑排序比较,只关注差异的大小。

图片名称

图1 观看时间的概率密度图

因此,在不平衡的连续标签分布中保持实时推荐系统中的预测准确性和排序效率面临巨大挑战。

为了解决这个问题,我们引入了一个有效的基于分类-恢复(classification-restoration)的框架,用于从现实世界中的不平衡连续目标中学习。该框架包含三个关键组件:

  • 一个有效的离散化:将连续标签转换为序数区间,
  • 一个分类模块:训练多个二元分类器跨越这些段以确保排序准确性,
  • 一个恢复模块:用于根据这些分类器的预测预测观看时间

这种方法的挑战在于从连续分布中创建离散类别的模糊性。这涉及到解决两种误差类型:

  • 与样本桶计数相关的学习误差
  • 影响从离散化预测中估计观看时间的恢复误差

平衡这些误差证明是复杂的;较窄的桶间隔通过降低样本概率降低了学习误差,而较宽的间隔减少了信息并提高了恢复误差。我们检查了离散化对学习和恢复误差的影响,并提出了一种错误自适应离散化(EAD)方法,以在实际分布中协调这些误差。

我们全面的框架,命名为带有 EAD 的 Classification-Restoration(CREAD),提供了一个适用于现有学习方法(如 D2Q)的多功能扩展。

总之,我们的主要贡献是:

  • 我们提出了一个用于学习观看时间的序数信息的通用分类-恢复框架,以及减少分类和恢复误差的训练算法。
  • 我们分析了离散化引入的误差界限,并提出了一种新的离散化方法,根据现实数据集分布平衡学习误差和恢复误差。

现实大规模数据集的离线和在线实验表明,我们的框架与最先进的方法相比取得了竞争性的结果。

2 相关工作

2.1 观看时间预测

观看时间预测的任务是:预测用户在给定用户画像、互动历史和一系列候选短视频的情况下的观看时间。

  • VR:值回归(Value Regression)直接预测观看时间的绝对值,其中学习函数的准确性通过均方误差来评估。
  • WLR:Covington, Adams 和 Sargin (2016) 将观看时间作为样本权重纳入(WLR)印象深刻的视频的逻辑回归中,将直接回归观看时间转化为学习视频点击率的概率。然而,这种假设仅在展示率较低时成立,而不适用于短视频设置中自动播放的视频。
  • D2Q:最近,Zhan 等人(2022)研究了视频推荐中观看时间预测的持续时间偏差(D2Q),通过基于持续时间的分箱数据去除不需要的偏差。尽管他们基于等频的方法去除了偏差,但他们忽略了观看时间不平衡分布对长尾样本的影响,导致与头部样本相比准确性较低。尽管有效,但他们没有利用在离散化过程中丢失的额外桶内信息,而我们在建模过程中施加了一个错误自适应框架

2.2 通过分类进行回归

最近,有一种趋势是将回归问题表述为一组分类问题,这在直接回归上取得了显著改进。第一个相关工作是序数回归(OR: Ordinal Regression)。它最初用于因变量表现出相对排序的分类问题,后来扩展到包括年龄估计(Niu 等人,2016;Beckham 和 Pal,2017)和深度估计(Diaz 和 Marathe,2019)等多个领域。

OR的一个关键问题是:从分布中创建离散类别的模糊性。大多数工作使用固定标准方法,如等宽或等频离散化来划分连续变量,而其他人则手动选择多个阈值(Crammer 和 Singer,2001;Shashua 和 Levin,2002)作为超参数。正如第 4 节所分析的,这些方法引入了较大的离散化误差,特别是当数据遵循不平衡分布时。相比之下,我们的方法通过提出一种自适应离散化方法来最小化总误差,从而缓解了这个问题。

3 方法

记号。设: ${(x_i, y_i)}^N_{i=1}$ 为训练集,

其中:

  • $y_i \in Y \subset \mathbb{R}^+$ :是对应的真实观看时间(ground truth)
  • $x_i \in \mathbb{R}^d$: 表示第 $i$ 个输入,包括与用户相关的特征(如人口统计特征和浏览历史)和与视频相关的特征(如标签和转发计数)。

不失一般性,我们假设:目标变量的值域通过 $T_{\text{max}} \in \mathbb{R}^+$ 来限制。

我们使用 $M-1$ 个阈值 $ \lbrace t_m \rbrace_{m=1}^{M-1} $ 将值域划分为$M$个离散桶 $ D \equiv \lbrace d_m \rbrace^M_{m=1} $,其中:

  • 第 $m$ 个桶 $d_m = [t_{m-1}, t_m)$ 对于 $m = 1, \cdots, M$,并且 $t_0 = 0$,$t_M = T_{\text{max}}$。
  • 设 $\widehat{y}_i$ 表示 $x_i$ 的预测观看时间。

设:

  • $1(\cdot)$ 表示指示函数。

为了简化,当我们不特指某个样本时,我们省略下标 $i$。

3.1 整体框架

CREAD框架,如图2 所示,包括三个模块,即离散化、分类和恢复。以下,我们解释每个组件的设计。

图片名称

图2 CREAD框架

离散化(Discretization)

这个模块是一个独立的预处理模块,与训练和评估过程无关。它根据数据分布获得阈值 ${t_m}{m=1}^{M-1}$,并将目标域 $Y$ 分割成 $M$ 个不重叠的桶 $D \equiv {d_m = [t{m-1}, t_m)}^M_{m=1}$。这些桶用于将观看时间 $y$ 转换为 $m$ 个离散标签:

\[y_m = 1(y > t_m). \quad (1)\]

离散化策略对预测精度至关重要,我们将在第 4.3 节详细讨论。

分类(Classification)

训练 $M$ 个分类器来预测观看时间 $y$ 是否大于第 $m$ 个阈值 $t_m$,即方程 (1) 中的 $y_m$,并输出一系列概率:

\[\widehat{\phi}_m(x_i; \Theta_m) = P(y > t_m | x_i), \quad 1 \leq i \leq N. \quad (2)\]

分类器是具有可学习参数 $\Theta_m$ 的神经网络。我们在第 3.2 节介绍如何训练这些模型。

恢复(Restoration)

给定 $\lbrace \widehat{\phi}m \rbrace^M{m=1}$,我们能够恢复预测的观看时间。恢复基于以下期望的事实:

\[\begin{align} E(y | x_i) & = \int_{t=0}^{t_M} tP(y = t | x_i)dt \\ & = \int_{t=0}^{t_M} P(y > t | x_i)dt \\ & \approx \sum_{m=1}^M P(y > t_m | x_i) (t_m - t_{m-1}). \end{align} \quad (3)\]

根据方程 (2) 中的 $\widehat{\phi}_m$ 的定义,我们可以从这些离散预测 $\widehat{\phi}_m$ 重建预测的观看时间:

\[\widehat{y} = \sum_{m=1}^M \widehat{\phi}_m (t_m - t_{m-1}). \quad (4)\]

3.2 模型训练

这里,我们提供了 $M$ 个分类器训练中的loss函数。损失函数包含三部分,其中:

第一部分是:通过标准分类的cross-entropy loss。

\[L_{ce} = \sum_{m=1}^M -y_m \log(\widehat{\phi}_m) - (1 - y_m) \log(1 - \widehat{\phi}_m). \quad (5)\]

第二部分是:restore loss,以减少方程 (4) 中重建观看时间的误差:

\[L_{restore} = \ell(\widehat{y}, y), \quad (6)\]

其中:

  • $\ell$ 是衡量 $\widehat{y}$ 到 $y$ 偏差的损失函数。

我们发现使用 Huber 损失 (Huber 1992) 作为 $L_{restore}$ 是有益的,这将在第 5.3 节详细分析。

第三部分是:通过序数先验的正则化项。根据定义,$M$ 个分类器的输出 $\lbrace \widehat{\phi}m \rbrace{m=1}^M$ 有一个先验,即 $\widehat{\phi}_m$ 随着 $m$ 的增长而单调递减。因此,我们通过最小化以下正则化项将先验纳入所提出的框架:

\[L_{ord} = \sum_{m=1}^{M-1} \max(\widehat{\phi}_{m+1} - \widehat{\phi}_m, 0). \quad (7)\]

总之,最终的优化目标是:

\[L_{CREAD} = \lambda_{ce}L_{ce} + \lambda_{restore}L_{restore} + \lambda_{ord}L_{ord}, \quad (8)\]

其中:

  • $\lambda_{ce}$、$\lambda_{restore}$ 和 $\lambda_{ord}$ 是超参数。

3.3 离散化的挑战

在 CREAD 框架中,一个关键模块是离散化模块,离散化方法在很大程度上影响最终预测精度。如图3 所示,离散化引入了两种误差:

图片名称

图3 离散化中的两种error

  • 学习误差:由于每个桶中的实例数量是有限的,$M$ 个分类器不能无限精确。随着我们增加桶的数量 $M$,落入每个桶的实例数量减少,从而限制了分类性能
  • 恢复误差:方程 (4) 中的恢复是期望的一个近似函数,省略了每个桶 [$t_{m-1}$, $t_m$] 中的详细概率密度,这也会引入误差。

不幸的是,这两种误差不能同时减少。为了减少学习误差,需要更大的桶宽度,导致更大的恢复误差(见图 3)。现有方法通常使用等宽或等频方法 (Gai 等人,2017) 来启发式地设置离散化集 $D$。我们将在第 4 节展示等宽和等频方法都不能很好地平衡这两种误差,并提出我们的 EAD 方法。

4 在离散化中平衡误差

本节旨在平衡离散化过程中引入的误差。我们首先提供对离散化过程中引入的学习误差和恢复误差的理论分析,然后提出EAD方法来有效平衡这两种误差。

4.1 离散化误差的分解

假设:训练数据集 $\lbrace (x_i, y_i)\rbrace^N_{i=1} \sim \mu(x, y) = \mu(x)\mu(y \mid x)$ 是独立同分布的。设:

  • $p_m(x) = P(y \in d_m \mid x)$: 表示标签 $y$ 属于第 $m$ 个桶 $d_m$ 给定 $x$ 的概率。
  • $v_m(x) = E(y \mid x, y \in d_m)$: 是样本 $x$ 的观看时间的期望值,假设它属于第 $m$ 个桶。
  • $w_m = E_{x \sim \mu(x)}v_m(x)$: 表示区间 $d_m$ 中观看时间的期望值

我们添加帽子上标来表示预测值,例如:

  • $\widehat{p}_m(x)$ 作为 $p_m(x)$ 的预测
  • $\widehat{w}_m$ 作为 $w_m$ 的预测。

然后我们可以将观看时间表示为:

\[\widehat{y} = \sum_m \widehat{p}_m(x) \widehat{w}_m.\]

注意,这种形式等同于方程 (4) 中的累积形式,其中:

\[\widehat{p}_m = \widehat{\phi}_m - \widehat{\phi}_{m-1}\]

现在我们的目标是:估计预测观看时间 $\widehat{y}$ 和真实值 $y$ 之间的误差界限。为了实现这一点,我们首先提供一个误差分解:

引理 4.1。假设 $\widehat{p}_m(x)$ 和 $\widehat{w}_m$ 分别是 $p_m(x)$ 和 $w_m$ 的无偏估计,我们有:

\(E(\widehat{y} - y)^2 = V_p + V_w + V_b + V_y,\) …(9)

其中:

\[V_p = E_x[E_{\widehat{p}}E_{\widehat{w}}\sum_m (\widehat{p}_m(x) - p_m(x)) \widehat{w}_m]^2,\] \[V_w = E_x[E_{\widehat{w}}\sum_m p_m(x) (\widehat{w}_m - w_m)]^2,\]

\(V_b = E_x[\sum_m p_m(x) (w_m - v_m(x))^2],\) \(V_y = E_{x,y}[\sum_m p_m(x)v_m(x) - y]^2.\)

详细证明请参见附录 A。直观上,

  • $V_p$ 由学习误差决定,即 $y$ 落入每个桶的概率 $p_m(x)$。
  • $V_w$ 描述了学习误差对代表性值 $\widehat{w}_m$ 的影响,
  • $V_b$ 是由离散化重建观看时间引起的误差,
  • $V_y$ 是观看时间 $y$ 的内在方差。

两个预测误差 $V_p$ 和 $V_w$ 受到学习算法误差的影响。因此,这两个误差项对应于学习误差。相比之下,$V_b$ 对应于与具体学习算法无关的恢复误差。最后,$V_y$ 与学习或离散化过程无关,后续不再讨论。

4.2 离散化的误差界限

本节分析离散化过程如何影响误差界限。为了理论分析的简便,我们只考虑表格输入的情况,并假设 $\mu(x, y)$ 足够平滑。但我们强调,受理论分析启发的离散化方法在现实世界设置中也将有效。

定理 4.2。假设输入 $x$ 从有限集合 $X$ 中采样。此外,假设 $\widehat{p}_m(x)$,$x \in X$ 和 $\widehat{w}_m$ 从最大似然估计中获得。此外,假设 $\mu(x, y)$ 具有有界的二阶偏导数。那么我们有:

\(V_p \leq V_p \triangleq \frac{C_p |X|}{N} \cdot A_p(D),\) \(V_w \leq V_w \triangleq \frac{C_w}{N} \cdot A_w(D),\) \(V_b \leq V_b \triangleq C_b \cdot A_b(D),\)

其中 $C_p$,$C_w$ 和 $C_b$ 是与离散化 $D$ 无关的常数,$A_p$,$A_w$,$A_b$ 是 $D$ 的函数:

\(A_p(D) = M E_{y \sim {\Psi}} y^2,\) \(A_w(D) = \sum_{m \in M} [\Psi(t_m) - \Psi(t_{m-1})]^2 \cdot \sum_{m \in M} \frac{(t_m - t_{m-1})^2}{\Psi(t_m) - \Psi(t_{m-1})},\) \(A_b(D) = \sum_{m \in M} [\Psi(t_m) - \Psi(t_{m-1})]^2 \cdot \sum_{m \in M} (t_m - t_{m-1})^2,\)

其中 $\Psi$ 是观看时间 $y$ 的累积分布函数(CDF):

\[\Psi(t) \triangleq P\{y \leq t\} = E_x \int_0^t \mu(y|x)dy.\]

证明。见附录 B。

因此,我们发现预测误差受到仅依赖于观看时间分布 $\Psi$ 和离散化 $D$ 的几个函数 $A_p$,$A_w$ 和 $A_b$ 的限制。现在我们提供一些直观的解释。

讨论 不同离散化方法对每个误差项的影响是什么?这里我们主要讨论误差项 $A_w$ 和 $A_b$,因为它们依赖于 $D$ 的分割点 ${t_m}_{m=1}^M$。我们考虑一个在 $[0, 1]$ 上截断的指数分布,即 $\Psi(t) = (1 - e^{-5t})/(1 - e^{-5})$,由 10 个桶离散化。表 1 显示了等宽和等频离散化的不同项。结果表明,等宽方法导致较低的 $A_b$,而等频方法导致较低的 $A_w$。这个结果有一个非常直观的解释,显示了 $A_b$ 和 $A_w$ 的含义:

  • 学习误差:学习误差由 $A_w$ 显示,受每个桶中的样本数量影响。具体来说,$A_w$ 的分母中存在一个 $\Psi(t_m) - \Psi(t_{m-1})$ 项。因此,如果某些桶中的样本很少,相应的概率 $\Psi(t_m) - \Psi(t_{m-1})$ 将很小,导致较大的误差。
  • 恢复误差:$A_b$ 显示恢复误差界限。它包含一个 $t_m - t_{m-1}$ 项作为乘数。当某些 $m$ 的 $t_m - t_{m-1}$ 较大时,误差项将增加,这与较大的桶宽度将导致较大的恢复误差的直觉一致。

图片名称

图4

现在我们再次讨论离散化引入的误差困境:学习误差和恢复误差通常相互矛盾。如果我们要减少学习误差,我们需要增加每个桶中的样本数量,但较大的桶宽度会导致较大的恢复误差。正式地,桶概率 $\Psi(t_m) - \Psi(t_{m-1})$ 通常与桶宽度 $t_m - t_{m-1}$ 正相关。根据上述讨论,我们即将提供 EAD 方法来平衡这两种误差。

4.3 EAD 方法

这里我们主要讨论给定桶的数量 $M$ 时的离散化策略 $D$。我们不讨论 $M$ 的选择,因为它是一个单一变量,可以被视为超参数。根据第 4.2 节,离散化策略 $D$ 需要平衡学习误差 $A_w$ 和恢复误差 $A_b$。因此,EAD 的离散化策略最小化以下目标:

\[\min_D J(D) = A_w(D) + \beta A_b(D),\]

其中:

  • $\beta$ 根据定理 4.2 由 $C_w$,$C_b$ 和 $N$ 确定。

由于 $C_w$ 和 $C_b$ 依赖于数据集的特征,无法从理论上获得,我们将 $\beta$ 视为超参数。

方程 (21) 是一个维度为 $M - 1$ 的优化问题。找到最优离散化策略是具有挑战性的,因为 $M$ 通常是几十或几百。这里我们提出一个更轻量级的方法。

图片名称

图5

我们首先正式表达等宽和等频离散化方法。具体来说,等宽方法写作:

\[t_m = \frac{m}{M} T_{\text{max}},\]

这保证了固定的 $\Delta t_m = \frac{T_{\text{max}}}{M}$,但在长尾桶中导致 $\Delta \Psi(t_m)$ 太小(见图 4(a))。相比之下,等频方法写作:

\[t_m = \Psi^{-1}\left(\frac{m}{M}\right),\]

这保证了固定的 $\Delta \Psi(t_m) = \frac{1}{M}$,但在长尾桶中导致 $\Delta t_m$ 太大(见图 4(b))。

关键是通过以下方式重写方程 (22) 和 (23):

\[t_m = \Psi^{-1}\left(\gamma\left(\frac{m}{M}\right)\right),\]

其中 $\gamma$ 是一个校准函数 $\gamma: [0, 1] \rightarrow [0, 1]$,满足 $\gamma(0) = 0$,$\gamma(1) = 1$。注意,当 $\gamma(z) = \Psi(z T_{\text{max}})$ 时,我们得到方程 (22);而当 $\gamma(z) = z$ 时,我们得到方程 (23)。

因此,方程 (24) 包含了离散化方法的两个极端情况。这启发我们通过适当地选择校准函数 $\gamma$ 在真实分布 $\Psi$ 和均匀分布之间,可以获得任何中间的分桶策略。图 4(c) 显示了校准函数 $\gamma$ 对离散化过程的影响。

根据上述讨论,我们将 $\gamma$ 设置为一组函数 $\gamma(\cdot; \alpha)$,由 $\alpha$ 参数化,然后可以通过网格搜索在方程 (21) 的优化问题下找到最优的 $\gamma$。

作为一个示例,我们使用与第 4.2 节讨论 2 相同的设置,并将 $\gamma$ 设置为 $\gamma(z; \alpha) = \frac{1 - e^{-\alpha z}}{1 - e^{-\alpha}}$,参数 $\alpha$ 从 0 到 5,并设置 $\beta = 50/100/200$。具体来说,$\alpha = 0$ 降级为等频方法,而 $\alpha = 5$ 降级为等宽方法。图 5 显示了在 $\alpha$ 和 $\beta$ 下的目标函数 $J(D)$(方程 (21)),这表明:

  • 超参数 $\beta$ 允许我们灵活地平衡学习误差和恢复误差。
  • 通过将最优的 $\alpha$ 与等频方法($\alpha = 0$)和等宽方法($\alpha = 5$)进行比较,表明通过适当地选择校准函数 $\gamma$,可以找到比传统的等频和等宽方法更合适的分桶策略。

#

https://arxiv.org/pdf/2401.07521

meta在《Understanding Scaling Laws for Recommendation Models》讨论了推荐系统中的scaling law问题。

摘要

规模(scale)一直是提高机器学习性能的主要驱动力,理解规模法则(scaling laws)对于可持续的模型质量性能增长的战略规划、长期资源规划以及开发支持大规模模型的高效系统基础设施至关重要。在本文中,我们研究了DLRM风格的推荐模型的经验规模法则,特别是点击率(CTR)。我们观察到模型质量与模型大小、数据大小和训练所用计算量呈幂律加常数的规模。我们通过比较这些轴上的不同规模方案,对数据、参数和计算三个不同的资源维度的规模效率进行了表征。我们展示了参数规模对于所研究的模型架构已经力不从心,而在出现更高性能的模型架构之前,数据规模是前进的道路。本研究解决的关键研究问题包括:

  • 推荐模型是否如规模法则预测的那样可持续地规模?
  • 我们是否远离规模法则的预测?
  • 规模的极限是什么?
  • 规模法则对长期硬件/系统开发有何影响?

1. 引言

在过去十年中,深度学习总体上,特别是基于深度学习的推荐模型(DLRM),在数据集规模、模型规模和系统资源方面经历了指数级的增长(Elkahky等人,2015年;Covington等人,2016年;Sullivan,2016年;Liu等人,2017年;Yi等人,2018年;Zhou等人,2019年;Zhao等人,2019年;Naumov等人,2020年;Zhao等人,2020年;Lui等人,2021年;Acun等人,2021年;Steck等人,2021年;Lian等人,2021年),将人工智能行业推向了万亿参数时代。实现万亿参数模型需要在人工智能系统基础设施上进行大量投资(Mudigere等人,2022年)。从系统设计的角度来看,主要问题/关注点是:

  • 如何扩展?
  • 哪种扩展方案提供更好的投资回报率(ROI)?
  • 如何战略性地结合不同的扩展方案以提供更好的ROI?

图1显示了在5年时间(2016-2021)内,语言建模任务和DLRMs的模型规模增长了10000倍。这些结果只反映了已发布模型的增长。我们预计DLRMs的增长速度甚至更快。推荐系统是许多互联网公司的主要收入来源。因此,这些模型的细节通常是保密的。最近的研究表明,在仅仅2年多的时间里(2019-2021),Facebook的推荐模型在参数数量上增长了20倍,在训练集大小上增长了2.4倍,系统基础设施增长了2.5-2.9倍(Wu等人,2021年;Mudigere等人,2022年),并且超过50%的数据中心AI训练周期都致力于推荐模型(Acun等人,2021年)。尽管它们很重要,但对于DLRM模型如何扩展,人们的认识有限。识别和理解模型的扩展属性对于设计服务于这些模型的人工智能系统和基础设施至关重要。我们的论文是首次尝试解决这一差距。

图片名称

图1 深度学习总体上,特别是基于深度学习的推荐模型近年来在参数规模上经历了指数级的增长(Sevilla等人,2021年;Mudigere等人,2022年;Lian等人,2021年)。请注意不同领域增长趋势的差异。

最近的工作(Hestness等人,2017年;Kaplan等人,2020年;Hernandez等人,2021年;Henighan等人,2020年;Gordon等人,2021年;Zhai等人,2021年;Brown等人,2020年;Hestness等人,2019年;Prato等人,2021年;Bahri等人,2021年)显示,在包括语言建模、机器翻译、视觉变换器、迁移学习和其他自回归模型在内的广泛领域中,高度可预测的扩展趋势。然而,推荐系统如何扩展尚不清楚

此外,先前的研究在他们的扩展分析中没有包括embedding参数。embedding参数占推荐模型容量的大部分(>90%),因此,研究它们对模型质量性能扩展的影响至关重要。

我们在这项工作中的目标是表征深度学习推荐模型的扩展规律,特别是点击率(CTR)预测模型。CTR模型是推荐系统中最重要的机器学习任务之一,为数十亿用户提供个性化体验。通过研究许多不同模型规模N(跨越三个数量级)、计算预算C(跨越五个数量级)和数据集规模D(跨越三个数量级),我们展示了一个简单的幂律加常数可以解释CTR模型在一个周期内的性能与N、D和C之间的关系。

图11概述了一个典型的DLRM架构。在高层次上,有两个主要组件可以扩展:嵌入表和多层感知器(MLP)。

图片名称

图11 深度学习模型架构的示意图。

  • 嵌入表(embedding table)可以通过垂直扩展(增加每个表的嵌入行数)或水平扩展(扩展嵌入的维度)来扩展。
  • MLP层可以通过加宽或加深层来扩展。

我们研究了在四种扩展方法上的推荐系统的经验扩展规律:扩展嵌入表(垂直和水平)、扩展顶层MLP层(我们称之为总架构层)以及扩展所有MLP层(包括通过增加宽度来扩展密集层、总架构层和密集-稀疏交互层)。

1.1 摘要

我们对CTR预测模型的关键发现如下:

幂律加常数:我们观察到,在训练一个周期后,推荐模型的性能(测试损失)与资源投入遵循幂律加常数关系(αx−β + γ)(见图2)。资源包括数据集大小、模型大小和计算浮点运算量。幂律加常数函数中的常数γ标识了扩展的极限:即我们假设可以无限扩展资源时能达到的最佳水平。表1显示了不同扩展方案和不同资源投入情景下经验收集的α、β和γ值。

图片名称

图2 推荐系统的性能随着数据规模、模型规模以及训练计算量(FLOPs)的增加而呈现出幂律增长加上一个常数的特性:

  • (a) 通过增加多层感知机(MLP)层的宽度来扩展模型规模。
  • (b) 通过增加顶层网络层的宽度来扩展模型规模。
  • (c) 通过增加嵌入表的维度来扩展模型规模。
  • (d) 通过增加嵌入表中的行数来扩展模型规模。

幂律函数的两个阶段:如图3所示,幂律函数可以被一个高回报阶段和随后的低回报/饱和阶段所特征化。收益递减点是过渡发生的地方。如果使用幂律函数来比较两种扩展方案的效率,需要关注幂律函数的指数(β)以及操作阶段。指数较大且衰减更快的幂律函数更适合扩展。然而,处于饱和阶段的操作方案无论其指数如何,都不如非饱和方法。

图片名称

图3 幂律函数特征曲线

性能强烈依赖于数据集大小和计算能力,而与模型参数大小关系较弱:模型性能强烈依赖于训练集中的样本数量(D)和计算浮点运算量(C),而与参数数量(P)关系较弱。

扩展的极限:幂律趋势中的常数(γ)捕获了不可减少的错误。这意味着通过扩展资源(模型参数、数据大小和/或计算浮点运算)到无限大所能达到的最佳归一化测试损失将饱和在0.98。

数据扩展效率:所有扩展方案的数据扩展效率相似(β在[0.09, 0.12]范围内),并且对模型大小不敏感。所有扩展方案都处于高回报阶段。根据图4中显示的幂律指数,可以看出垂直扩展嵌入表(V)比水平扩展嵌入表(H)更好,而水平扩展嵌入表又比顶层MLP层扩展(O)更好,后者又比MLP层扩展(M)在数据扩展效率方面更好。这意味着在固定参数预算下,通过同时扩展数据集大小和模型大小来扩展模型性能,对参数扩展方法有些敏感。

图片名称

图4 不同模型扩展方案中的数据扩展效率。尽管每条线显示了在固定模型规模下的数据扩展趋势,每个图表中的虚线及其对应的方程捕捉了帕累托最优曲线。如图所示,不论扩展方案如何,当模型和数据一起扩展时,所有模型或多或少具有相同的幂律扩展特性(幂指数为-0.1),这意味着所有模型扩展方案中的数据扩展效率是相同的。

计算扩展效率:所有扩展方案的计算扩展效率相似(β在[0.12, 0.15]范围内)。所有扩展方案都处于高回报阶段。根据图5中显示的幂律指数,可以看出MLP扩展比顶层扩展更计算效率高,顶层扩展又略比嵌入维度扩展更计算效率高。

图片名称

图5 计算扩展效率 - 两种视角:(a) 同时扩展计算量(FLOPs)和数据集规模 (b) 同时扩展计算量(FLOPs)和模型规模。

参数扩展效率:不同扩展方案的参数扩展效率不同(α在[0.4, 7.6]范围内)。然而,所有扩展方案都处于饱和阶段(见图6)。对于一个工业级模型,所有参数扩展技术在参数扩展效率方面相似。这意味着在固定数据预算下,通过增加模型中的参数数量来扩展模型性能,对参数扩展方法不敏感。

图片名称

图6 不同参数扩展方案中的参数扩展效率。在所有扩展方案中可见的模式是,准确性与参数规模之间的弱依赖性。

2. 扩展效率

在给定固定预算/资源的情况下,主要问题是哪种扩展方案可以提供更好的投资回报率(ROI)。我们针对三种不同的资源,即数据、参数和计算浮点运算量,对扩展效率进行了表征。我们展示了所有扩展方案在数据扩展和计算扩展效率上都相似,并且仍有改进空间。另一方面,参数扩展效率非常低,因为它已经超出了收益递减点。

2.1 数据扩展效率

为了研究数据扩展效率,我们在广泛范围内(三个数量级)扩展数据集大小,同时保持模型大小不变。从概念上讲,线的斜率捕捉了模型在面对问题时吸收新信息的有效性。结果如图4所示。每个图表捕捉了不同的模型扩展方案(垂直嵌入、水平嵌入、顶层和MLP扩展)。

正如所有扩展策略所示,推荐系统的性能强烈依赖于数据集大小,而与参数/模型大小关系较弱。这是违反直觉且非常有趣的。我们继续看到在过去5年中嵌入表的大小和嵌入表的数量不断增长。这些结果意味着工业级模型在过拟合范围内运行。

虽然图4中的每条线显示了固定模型大小的数据扩展趋势,但每个图表中的虚线捕捉了帕累托前沿线。如图所示,无论扩展方案如何,所有模型都有类似的幂律趋势。这意味着所有模型扩展方案的数据扩展效率相似。

摘要 推荐系统的性能强烈依赖于数据大小,而与参数/模型大小关系较弱。与大规模语言模型(Hestness等人,2017年;Kaplan等人,2020年)相比,其中性能与模型大小强烈相关,推荐系统对模型大小的敏感性较弱,这在设计下一代推荐系统时需要考虑。所有扩展方案的数据扩展效率相似。这意味着所研究的模型以相同的速率从新数据中吸收信息,无论其背后的扩展方案如何。输入粒度/词汇量大小对扩展趋势没有显著影响。

2.2 计算扩展效率

我们的目标是表征捕捉模型质量性能与计算浮点运算量之间关系的线的斜率。从概念上讲,线的斜率捕捉了模型在面对问题时对新计算浮点运算量吸收新信息的速度。在计算效率分析中,我们保持数据(或模型大小)不变,同时扩展模型大小(或数据大小)。当我们扩展模型大小或数据大小时,我们间接地增加了计算浮点运算量。还有另一种方法可以在不改变数据大小或模型大小的情况下扩展计算浮点运算量,那就是训练更长时间的模型。我们留待未来的工作。

图5显示了这种扩展的结果。每个图表捕捉了不同的模型扩展方案(水平嵌入、顶层和MLP扩展。注意我们没有显示垂直扩展的计算扩展,因为增加行数对计算浮点运算量没有任何影响。)如图所示,所有扩展策略中,推荐系统的性能强烈依赖于计算浮点运算量的数量。我们以两种不同的方式呈现相同的结果:(1)通过模型扩展增加计算浮点运算量,同时保持数据大小不变(图5,顶行)。(2)或者,我们通过数据扩展增加计算浮点运算量,同时保持模型大小不变(图5,底行)。

图片名称

图7 何时选择垂直扩展(Vertical Scaling)与水平扩展(Horizontal Scaling)?

图片名称

图8 何时选择顶层网络扩展(Over-arch Scaling)与多层感知机扩展(MLP Scaling)?

图片名称

图9 嵌入维度对表大小的敏感性:每条线展示了不同的垂直扩展因子(VSF)。大的蓝色圆圈显示了每条线的最小损失。然而,曲线的拐点在64处始终如一地出现。

同时扩展计算和数据 图5顶行显示了通过扩展模型大小对性能的计算浮点运算量扩展影响。在每条线内,我们保持数据大小不变,同时通过模型大小扩展增加计算浮点运算量。注意不同扩展方案的幂律方程的幂之间的轻微差异。看来,MLP扩展略优于顶层扩展,顶层扩展又略优于嵌入维度扩展,在相同增加的计算预算下提高模型准确性(0.15对-0.14对-0.12)。此外,如图所示,在固定的计算预算下,更大的数据集大小会带来更好的性能。同时,在固定的准确性目标下,更小的数据集大小更具计算效率。

同时扩展计算和模型大小 图5底行显示了通过扩展数据大小对性能的计算浮点运算量扩展影响。在每条线内,我们保持模型大小不变,同时通过扩展数据集大小增加计算浮点运算量。如图所示,在固定的计算预算下,更大的模型获得更低的性能。同时,在固定的准确性目标下,更小的模型大小更具计算效率。虚线捕捉了在每个计算预算下获得最佳性能的最佳模型大小。图5(a)和(b)基本上是同一组点,从两个不同的视角呈现(一次基于数据集大小对点进行分组,一次基于模型大小进行分组),因此,帕累托最优线(虚线)将是相同的。

摘要 在固定的计算预算下,需要在在更大的数据集大小上训练模型或训练具有更多参数的模型之间做出权衡。我们观察到,在固定的计算预算下,具有更多参数的模型显示出更低/更差的性能,而用更大的数据集大小训练的模型显示出更好的性能。从计算效率的角度来看,我们观察到,在第一个周期,MLP扩展优于顶层扩展,顶层扩展优于水平扩展嵌入表。注意,垂直扩展嵌入表对计算浮点运算量没有任何影响。

3. 敏感性分析

3.1 如何有效地按行数扩展嵌入维度?

图9展示了随着我们在表中增加行数(增加垂直扩展因子)时最佳嵌入维度的变化情况。如图所示,随着垂直扩展因子的增大,最佳嵌入维度趋于变小(对于0.125×和0.25×的垂直扩展因子,256是最佳嵌入维度,而对于0.5×、1×和2×的垂直扩展因子则是128)。然而,最佳性能和最具资源效率的嵌入维度并不一定是相同的。如图所示,曲线的拐点(收益递减点)对于所有表大小在嵌入维度=64左右开始出现。这意味着从资源效率的角度来看,嵌入维度的资源高效设计点对垂直扩展因子的依赖性较弱。这一结果暗示,从资源效率的角度来看,超过64将不会提供高投资回报率。

3.2 训练与测试

如图10所示,训练数据的学习曲线比测试数据的学习曲线更陡峭(-0.20对比-0.12)。两条曲线都捕捉了在相同数据上训练的相同模型的扩展,但在两个不同的数据集上进行了评估。左侧的曲线在训练集的数据点上进行了评估,右侧的模型在测试集上进行了评估。这种差距意味着模型从额外的训练点吸收的信息在预测来自相同分布(训练分布而非测试分布)的数据时更有效,这是意料之中的。

图片名称

图10 training loss与testing loss上的数据扩展效率。请注意训练曲线和测试曲线之间幂律指数的差异。

4. 讨论

特征化不同扩展方案的幂律曲线提供了每种扩展技术的数据效率、参数效率和计算效率的见解。人们可以通过比较它们在三个不同轴(数据、计算、参数)上的幂律曲线,潜在地比较任何成对扩展技术的效率。表2显示了这种比较的结果。如图所示,没有单一的扩展技术在所有扩展效率维度上都脱颖而出。例如,水平嵌入扩展(H)在数据效率方面优于MLP扩展(M),但在计算效率方面则较差。

最近的分析显示,在短短5年多的时间里,工业级推荐模型增长了四个数量级(Mudigere等人,2022年;Lian等人,2021年)。幂律分析支持了过去的趋势。当按幂律趋势近似时,参数扩展的指数幅度最大。然而,工业级推荐模型已经过于庞大且饱和,因此进一步的参数增长不会从资源效率的角度提供高投资回报率。

与此同时,数据扩展和计算扩展仍然处于高收益递减的范围内。这意味着在更好的模型架构出现之前,应该将数据扩展视为一流的扩展方法。话虽如此,我们应该意识到,由于数据保留的限制,数据扩展从长远来看(以原始形式)并不是一种可持续的方法。

为了克服这一点,我们需要考虑替代方案。以下是一些建议,其中一些我们将作为下一步探索:(1) 记录更多数据,特别是通过记录更多负样本和减少正样本下采样;(2) 探索使用历史数据作为教师模型来训练模型,以合成从历史数据中学习到的有价值信息,供更近期的模型使用;(3) 水平扩展数据量而不是垂直扩展,即增加更多特征而不是增加更多行。

扩展法则也可以用来指导长期硬件开发。硬件设计通常提前3-5年开始,依靠对未来3-5年模型增长的准确预测。我们的分析表明,展望未来,硬件不需要增长来支持更大的模型。相反,我们需要设计硬件/系统来支持使用更大的数据集进行训练。

另一个关键的收获是,幂律加常数方程中的常数在0.98(以归一化熵度量的损失)处有界。这个常数捕获了在无限扩展极限下模型的准确性,可以用作衡量工业级模型与无限极限的距离的指南。在NLP领域的先前分析表明,模型架构的创新(例如,从LSTM过渡到Transformer)可以改善幂律的系数(即α.x−β + γ中的α),并向下移动曲线,但它们对幂律的指数(β)几乎没有影响(Hestness等人,2017年;Brown等人,2020年)。这表明模型架构探索是性能增长的短期解决方案。长期解决方案将需要改善幂律趋势的指数。至今,是什么控制了幂律的斜率仍然是一个开放的研究问题。幂律曲线的斜率似乎对每个领域都是独特的,与模型架构无关(Hestness等人,2017年;2019年)。先前的分析表明,改善数据分布可以改善幂律的指数(Bahri等人,2021年)。最近的工作表明,通过有效的数据修剪,我们可以打败幂律并实现指数级扩展(Sorscher等人,2022年)。

https://arxiv.org/pdf/2208.08489

kuaishou在《Conditional Quantile Estimation for Uncertain Watch Time in Short-Video Recommendation》提出了CQE预估模型。

摘要

准确预测观看时间(watch time)对于优化短视频平台的推荐和用户体验至关重要。然而,现有方法通常估计单一的平均观看时间(average watch time),往往无法捕捉用户参与模式固有的不确定性和多样性。在本文中,我们提出了条件分位数估计(Conditional Quantile Estimation, CQE)框架来模拟观看时间的全部条件分布。利用分位数回归,CQE为每对用户-视频对表征复杂的观看时间分布,提供了一种灵活全面的了解用户行为的方法。我们进一步设计了多种策略来结合分位数估计,以适应不同的推荐场景和用户偏好。大量的离线实验和在线A/B测试证明了CQE在观看时间预测和用户参与建模方面的优越性。特别是,CQE在一个服务数亿日活跃用户的短视频平台上的在线部署,已经产生了关键评估指标的显著改进,包括活跃天数、活跃用户数、参与持续时间和视频观看次数。这些结果突出了我们提出的方法在增强用户体验和短视频推荐系统整体性能方面的实际影响。代码将在发表后发布。

1 引言

在线视频平台的快速增长彻底改变了用户消费数字内容的方式,短视频已成为最受欢迎的格式之一[3, 9, 10, 23]。推荐系统在这些平台中扮演着至关重要的角色,通过提供个性化的内容推荐来增强用户参与度和满意度。与传统的推荐问题(例如,电子商务和新闻推荐)不同,在短视频推荐中,衡量用户兴趣和参与度的关键指标是观看时间,它全面反映了用户的偏好和参与度。因此,准确预测观看时间对于优化推荐策略和改善用户体验至关重要。

然而,由于用户行为固有的不确定性和异质性,预测观看时间仍然是一个具有挑战性的任务。在现实世界场景中,通常不可能在相同条件下获得同一用户-视频对的多次观看时间观察,因为用户很少在完全相同的情境下多次观看同一视频。这一限制使我们无法直接从数据中估计真实的条件观看时间分布。

现有方法[16, 20–22]通常专注于预测观看时间的单点估计(例如,均值或中位数),忽视了观看时间分布的复杂性和多样性。这些方法未能充分捕捉不同用户-视频对之间的行为差异,导致推荐性能受限。使用单一平均值来表征这些复杂分布模式的不足,突出了对观看时间的全部条件分布进行建模的必要性。

图片名称

图1 条件观看时间分布和一些个性化推荐策略的示意图。

  • 图(a) CQE模型为不同的用户-视频对预测的条件观看时间分布,展示了用户参与模式的异质性和复杂性。
  • 图(b) 保守估计策略在预期观看时间相似时优先选择具有较高下分位数的视频,以提高用户满意度。
  • 图(c) 动态分位数组合策略适应用户流失风险和视频新颖性,对高流失风险用户或不熟悉的视频使用较低分位数,对低流失风险用户或熟悉的视频使用较高分位数。
  • 图(d) 期望估计策略通过考虑整个观看时间分布,提供全局优化视角。

为了应对这些挑战,我们提出了条件分位数估计(Conditional Quantile Estimation, CQE)框架,该框架学习预测给定用户-视频对及其相关上下文,观看时间的条件分布。如图2所示,CQE利用分位数回归技术估计观看时间分布的多个分位数,提供了一个全面了解潜在用户参与模式的视角。如图1(a)所示,我们的CQE模型预测的不同用户-视频对的条件观看时间分布,在形状、峰值位置和离散水平上表现出显著的多样性。这种异质性反映了用户偏好和参与在不同情境下固有的不确定性和可变性。

图片名称

图2 提出的条件分位数估计(CQE)模型及其训练损失的示意图。

  • 图2左侧:CQE模型架构,它以用户、视频和上下文特征为输入,并输出观看时间的多个分位数估计。
  • 图2右侧:用于模型训练的PinBall loss函数,展示了其对于不同分位数水平($\tau$)的不对称性质,允许模型在整个分布中学习到稳健的分位数估计。

建模观看时间的条件分布对于理解用户参与模式、以及设计有效的推荐策略至关重要。通过考虑观看时间分布的详细特征,我们可以深入了解不同用户群体的多样化观看行为。这种细粒度的理解使我们能够为不同情境和用户偏好量身定制推荐策略。

基于CQE模型,我们设计了三种主要的推荐策略。

  • 保守估计策略(图1(b)):通过在预期观看时间(expected watch times)相似时选择具有较高下分位数(lower quantiles)的视频,优先考虑用户满意度,减少用户参与度下降的风险。
  • 动态分位数组合策略(图1(c)):根据用户流失风险和视频新颖性等因素调整分位数的选择。
    • 对于高流失风险用户或新颖视频,它更多地赋予低分位数权重,确保令人满意的体验,
    • 对于低流失风险用户或熟悉视频,则更多地赋予高分位数权重,可能提供更具吸引力的推荐。
  • 期望估计策略(图1(d)):提供了一个全局优化视角,旨在考虑整个观看时间分布,最大化整体用户参与度。这些策略的多样性使我们的推荐系统能够适应不同的场景和用户需求,提高个性化推荐和用户体验的质量。

本文的主要贡献如下:

  • 我们提出了CQE框架,采用分位数回归技术模拟短视频推荐中观看时间的条件分布,为捕捉用户行为的不确定性提供了一种有原则的方法。
  • 我们设计了多种策略来结合CQE的分位数估计,适应不同的推荐场景和用户偏好,增强了推荐系统的个性化和多样性。
  • 我们进行了广泛的离线实验和在线A/B测试,证明了CQE在观看时间预测和用户参与建模方面的优越性,显著提升了关键评估指标,包括活跃天数、活跃用户数、参与持续时间和视频观看次数。

2 相关工作

2.1 视频推荐和观看时间预测

视频推荐系统已经发展到满足个性化内容传递的日益增长的需求。随着YouTube和TikTok等在线视频平台的出现,准确推荐视频非常重要,因为它对用户留存和满意度有着重大影响[3, 9, 10, 16, 23]。 在视频推荐系统的领域中,准确预估在观看时间上的用户参与度是一个关键挑战。观看时间作为衡量用户对推荐视频兴趣和参与度的关键指标。

  • 最初的研究[2]集中在增强YouTube平台的视频推荐,引入了加权逻辑回归(WLR)技术来预测观看时间。这种方法自此被认为是该领域的先进方法。然而,WLR的适用性并不直接适用于全屏视频推荐系统,并且可能会遇到由于其加权计算系统而产生的显著偏差问题。
  • D2Q[20]通过实施后门调整和在不同持续时间组下建模观看时间分位数来减轻持续时间偏差。
  • $D^2Co$[21]通过使用纠正持续时间偏差和嘈杂观看的模型来解决视频推荐观看时间的偏差问题,提供更准确的用户兴趣度量。
  • DVR[22]引入了一种称为WTG(观看时间增益)的新指标,并使用对抗学习来学习无偏的用户偏好。我们的方法可以无缝集成到各种持续时间去偏差方法中,从而显著提高它们的预测准确性。
  • TPM[8]将任务分解成一系列以树状结构排列的相互连接的分类问题。尽管TPM考虑了观看时间的变异性,但它没有像我们的方法那样捕捉到观看时间分布的全部范围。

观看时间预测任务还面临物理时长偏差(duration bias)的关键问题[8, 20–22]。这种偏差表明,用户更愿意花更多时间观看更长物理时间的视频(longer-duration videos),这使得平均观看时间偏向更长的内容。这种偏好使得在预测用户参与度时,比起更短的替代品,更复杂的任务变得更加复杂。我们的方法可以无缝集成到大多数持续时间去偏差方法中,显著提高它们的预测能力,如表3所示。

表3

2.2 分位数回归(Quantile Regression)

分位数回归是一种在统计学、计量经济学和生态学中广泛使用的回归分析类型[7]。与传统的均值/线性回归(专注于估计平均结果)不同,分位数回归(Quantile Regression)旨在估计随机变量的条件中位数和其他分位数。这一灵活的特性提供了对变量分布效应的更全面理解,这些效应可能是均值回归可能忽视的[1, 18, 19]。在机器学习的背景下,分位数回归已经超越了线性模型。

  • 代表性方法[13, 14, 17]将分位数回归整合到神经网络中,提供了在非线性和高维环境中预测条件分位数的手段。
  • QRF[11]进一步在随机森林中部署分位数回归,进一步展示了其适应性和在不同模型中增强预测能力。

本文提出的解决方案旨在将分位数回归的原则整合到视频推荐系统的领域。通过使这种统计方法适应观看时间的不确定性和可变性,我们提出了一种新颖的应用,增强了推荐系统的预测性能。这一进步促进了对用户参与度的更细致的理解,朝着更个性化和令人满意的用户体验发展。

3 方法

3.1 问题阐述

在视频推荐系统中,我们的主要目标是预测用户参与度,通常以观看时间来衡量。设:

  • $(u, v)$ 表示在上下文c下的一对用户-视频。
  • $ \phi(u, v, c) $,定义一个特征映射函数,它提取一个 $ n $ 维特征向量 $ x \in \mathbb{R}^n $。这个向量包含了用户特征、视频属性、上下文信息和历史交互数据。
  • $ W $ 为表示观看时间的随机变量

我们的目标是:估计给定输入特征下,$W$的概率分布:

\[P(W | x) = P(W | \phi(u, v, c))\]

…(1)

与传统方法[2, 16, 20–22]不同,这些方法专注于估计单一的点(例如,期望观看时间 $ E[W \mid x] $),我们的目标是表征整个条件分布。这使我们能够捕捉用户参与模式固有的不确定性和可变性,提供对潜在用户行为更全面的理解。

3.2 条件分位数估计模型

为了捕捉观看时间的全部分布,我们提出了条件分位数估计(Conditional Quantile Estimation, CQE)模型。如图2的左半部分所示,这种方法允许我们同时估计观看时间分布的多个分位数,提供对潜在用户参与的更全面视图。

设:

  • $ {\tau_1, \tau_2, …, \tau_N} $ 是一组预先定义的 $ N $ 个分位数水平,其中 $ \tau_i = \frac{i}{N+1} $。

我们的CQE模型旨在估计给定输入特征 $ x $ 的每个分位数水平对应的观看时间值 $ {t_{\tau_1}, t_{\tau_2}, …, t_{\tau_N}} $:

\[\{t_{\tau_1}, t_{\tau_2}, ..., t_{\tau_N}\} = \psi(x; \theta)\]

…(2)

其中:

  • $ \psi(\cdot) $ 是一个由 $ \theta $ 参数化的神经网络。

为确保分位数估计的单调性,我们实现了以下架构:

\[h = f(x; \theta_f) \\ d = \text{ReLU}(g(h; \theta_g)) \\ t_{\tau_i} = \sum_{j=1}^{i} d_j, \quad \text{对于} \ i = 1, ..., N\]

…(3)

这里:

  • $ f(\cdot) $ 和 $ g(\cdot) $ 是神经网络组件,
  • $ h $ 是中间隐藏表示,
  • $ d $ 是一个非负元素向量。

最终的分位数估计 $ t_{\tau_i} $ 通过累积求和获得,自然地强制执行排序约束:

\[t_{\tau_1} \leq t_{\tau_2} \leq ... \leq t_{\tau_N}\]

这种公式允许我们的模型捕捉输入特征和观看时间分位数之间的复杂非线性关系,同时保持分位数函数的单调性属性。

为了清晰概述我们的CQE方法,我们在算法1中展示了算法伪代码。

图片名称

算法1

CQE模型的计算复杂度与传统的点估计方法相当,仅因估计多个分位数而略有增加。在大规模推荐系统中,去重用户(unique user)和item的数量经常达到数亿甚至数十亿。这些用户和item通常由高维嵌入表示,这些嵌入使用它们各自的ID检索。相比之下,有效估计所需的分位数数量通常在100左右。因此,CQE的额外计算成本与处理大量特征所需的大量计算相比可以忽略不计。

3.3 训练目标

为了有效地训练我们的CQE模型,我们采用了适合分位数回归任务的PinPall loss函数。对于单一分位数水平 $ \tau $,PinPall loss定义为:

\[L_\tau(y, t_\tau) = \begin{cases} \tau (y - t_\tau) & \text{if } y \geq t_\tau \\ (1 - \tau) (t_\tau - y) & \text{otherwise} \end{cases}\]

…(4)

其中:

  • $ y $ 是实际观看时间
  • $ t_\tau $ 是预测的第 $ \tau $ 个分位数。

正如图2的右半部分所示,PinBall loss函数具有几个关键属性:

  • 不对称性:loss围绕真实值$y$是不对称的,不对称的程度由 $ \tau $ 决定。
  • 线性:loss随着预测值和实际值之间的距离线性增加,但在 $ y $ 的两侧斜率不同。
  • 分位数特定的惩罚:对于 $ \tau > 0.5 $,过高估计比过低估计受到更重的惩罚,反之亦然 $ \tau < 0.5 $。

这些属性使得PinBall loss特别适合分位数估计。对于我们的多分位数模型,我们聚合了所有分位数水平上的PinBall loss:

\[L_{QR} = \sum_{i=1}^{N} L_{\tau_i}(y, t_{\tau_i})\]

…(5)

这个聚合的损失函数鼓励模型在整个分布中学习准确的分位数估计,捕捉每对用户-视频的潜在观看时间的全谱(full spectrum)。

3.4 推理策略(Inference)

一旦我们训练了CQE模型来估计观看时间分布的多个分位数,我们就可以采用不同的推理策略。我们提出了三种主要方法:保守估计、动态分位数组合和条件期望。每种策略都提供了不同的优势,并适用于特定的推荐场景。

3.4.1 保守估计(Conservative Estimation)

在用户满意度至关重要且高估成本较高的环境中,我们采用保守估计(CSE)策略。这种方法侧重于观看时间分布的下分位数,以确保令人满意的用户体验。

如图1(b)所示,当预期观看时间相似时,我们通过选择具有较高下分位数的视频来优先考虑用户满意度。这种策略有助于降低用户因过于乐观的推荐而失望的风险。

正式地,我们选择一个较低的分位数 $ \tau_{\text{low}} $(例如 $ \tau_{\text{low}} = 0.25 $),并使用其对应的观看时间预测:

\[\widehat{y}_{\text{CSE}} = t_{\tau_{\text{low}}}\]

这种策略有助于降低用户因过于乐观的推荐而失望的风险,因为实际观看时间很可能超过这个保守估计。

3.4.2 动态分位数组合(Dynamic Quantile Combination)

为了适应不断变化的用户偏好和内容特征,我们提出了一种动态分位数组合(DQC)策略。这种方法根据上下文因素结合不同分位数的预测。

如图1(c)所示,DQC策略根据用户的流失风险和视频新颖性调整分位数的选择。

  • 对于高流失风险用户或新颖视频,它更多地赋予低分位数权重,确保令人满意的体验,
  • 对于低流失风险用户或熟悉的视频,则更多地赋予高分位数权重,可能提供更具吸引力的推荐。

这种动态方法允许系统根据用户当前状态和内容熟悉度,在安全推荐和可能更具回报的推荐之间进行平衡。

设 $ k \in [0, 1] $ 为上下文依赖的混合参数。我们计算最终预测为:

\[\widehat{y}_{\text{DQC}} = k \cdot t_{\tau_{\text{low}}} + (1 - k) \cdot t_{\tau_{\text{high}}}\]

…(7)

其中:

  • $ t_{\tau_{\text{low}}} $ 和 $ t_{\tau_{\text{high}}} $ 分别代表保守和乐观的分位数预测。

混合参数$k$可以根据用户风险档案、视频新颖性或平台目标等因素进行调整。例如,对于新用户或新颖内容,我们可能使用较高的 $ k $(倾向于保守估计),对于老用户或熟悉的内容类型,则使用较低的 $ k $。

3.4.3 条件期望

在我们旨在优化预期观看时间的场景中,我们采用条件期望策略。这种方法通过在预测的分位数之间进行插值来估计平均观看时间。

如图1(d)所示,条件期望估计(CDE)策略提供了一个全局优化视角,旨在通过考虑整个观看时间分布来最大化整体用户参与度

如图2左半部分所示,这些输出的观看时间值示例化了观看时间的分布。为了通过条件期望恢复平均估计,我们面临没有两个连续分位数之间 $ \tau \in (\tau_i, \tau_{i+1}) $ 的输出值的挑战。为了解决这一信息缺失问题,我们使用插值方法来近似条件分布。

我们采用连续分位数之间的线性插值,因此 $ \tau_i $ 和 $ \tau_{i+1} $ 之间的预期观看时间变为 $ (t_{\tau_i} + t_{\tau_{i+1}}) / 2(N + 1) $。对于两个端点,我们假设 $ t_0 = t_{\tau_1} $ 和 $ t_1 = t_{\tau_N} $。然后,我们可以近似整体观看时间的期望为:

\[\widehat{y}_{\text{CDE}} = \frac{1}{2(N + 1)} \left[(t_{\tau_1} + t_{\tau_1}) + (t_{\tau_1} + t_{\tau_2}) + (t_{\tau_2} + t_{\tau_3}) + \ldots + (t_{\tau_{N-2}} + t_{\tau_{N-1}}) + (t_{\tau_{N-1}} + t_{\tau_N}) + (t_{\tau_N} + t_{\tau_N})\right] \\ = \frac{1}{N + 1} \left(\sum_{i=1}^{N} t_{\tau_i} + \frac{t_{\tau_1} + t_{\tau_N}}{2}\right)\]

…(8)

从理论上讲,这种期望通常提供最准确的预测,并且在 $ N \to \infty $ 时将实现最优预测。实证上,我们将在第4.2节的实验分析中验证其优越性。然而,我们提醒读者,这种策略可能不适用于用户对不良推荐不宽容的场景,或者推荐系统需要动态控制的场景

每种推理策略都提供了独特的好处,允许推荐系统适应不同的目标和用户环境。通过利用我们的CQE模型提供的丰富信息,我们可以做出更明智和灵活的推荐决策。

4 实验和结果

在这一部分,我们通过在线A/B测试和离线实验,全面评估了我们提出的条件分位数估计(Conditional Quantile Estimation, CQE)框架。我们的实验设计旨在解决几个相互关联的研究问题:

  • RQ1: 不同的CQE策略在现实世界场景中的表现如何?
  • RQ2: CQE与最先进的方法在观看时间预测和用户兴趣建模方面的比较如何?
  • RQ3: 分位数数量对CQE性能的影响是什么?

通过探讨这些问题,我们希望提供CQE能力的全面视图,它的实际影响,以及它在不同推荐情境中的泛化潜力。

4.1 在线实验(RQ1)

为了验证我们条件分位数估计(CQE)框架在现实世界中的影响,我们在拥有数亿用户的短视频平台上进行了广泛的在线A/B测试。这些实验使我们能够在拥有庞大用户基础的实时环境中,评估所有三种CQE策略的实际有效性。

4.1.1 实验设置

用户被随机分配到对照组和实验组,确保实验组至少分配到每日用户流量的10%,以确保统计显著性。每次在线A/B测试运行时间超过一周,为数据收集和可靠结果分析提供了充足的时间。

推荐系统采用两阶段流程:候选检索后跟排序。我们将CQE模型整合到排序阶段,以预测观看时间,这是推荐过程中的关键组成部分。

我们使用四个关键指标评估推荐系统的性能:

  • 每用户平均观看时间:这个核心指标通过量化用户观看推荐视频的平均时间,直接衡量用户参与度。
  • 总播放次数:这个指标统计所有用户的累计视频播放次数,反映用户与推荐内容的交互频率。
  • 每用户活跃天数:这个指标衡量用户与平台交互的天数,表明用户留存情况。
  • 每日活跃用户数:这个指标表示与平台交互的独特用户数量,反映系统维持和增长其用户群的能力。

4.2 离线实验(RQ2 和 RQ3)

虽然我们的在线A/B测试展示了CQE在现实世界场景中的实际影响,但离线实验允许我们对我们的方法进行更受控和详细的分析。我们的离线实验专注于两个密切相关的任务:观看时间预测和用户兴趣预测。这两项任务共同为评估CQE框架在推荐系统中的有效性提供了全面视角。

观看时间预测直接捕获用户与内容的互动持续时间,这是用户参与度的关键指标。然而,仅预测观看时间可能无法完全捕捉用户兴趣。因此,我们引入了用户兴趣预测任务,它结合观看时间和视频时长,提供对用户兴趣更微妙的度量。这两项任务相辅相成:观看时间预测提供直接的行为预测,而用户兴趣预测帮助我们理解这些行为背后的动机。

4.2.1 观看时间预测

在这个任务中,我们的主要目标是准确预测用户观看时间的持续时间

数据集

遵循TPM[8],我们使用了两个公共数据集:

  • Kuaishou(收集自快手App1)和CIKM16(来自CIKM16杯2)进行我们的实验。虽然CIKM16主要是一个电子商务搜索查询数据集,但我们包括它是为了展示我们的CQE方法在不同推荐情境下的潜在泛化能力。电子商务页面停留时间的预测在模拟用户参与持续时间方面与视频观看时间预测有相似之处,尽管我们承认内容类型和用户行为模式存在差异。在CIKM16数据集中,会话中的每个项目被用作输入的单一特征。

  • Kuaishou数据集包含7,176个用户、10,728个项目和12,530,806次展示;CIKM16数据集包含310,302个会话和122,991个项目,每个会话的平均长度为3.981。

指标。我们使用两个指标来评估模型的性能:平均绝对误差(MAE)和XAUC[20]。

  • MAE:这是评估回归准确性的典型测量方法。表示预测值为 $ \widehat{y} $,真实观看时间为 $ y $,MAE 定义为:
\[\text{MAE} = \frac{1}{N} \sum_{i=1}^{N} \| \widehat{y}_i - y \|\]

…(9)

  • XAUC:评估两个样本的预测是否与它们的真实观看时间顺序相同。它与推荐系统的排序性质很好地对齐。在实践中,预测的相对顺序通常比它们的绝对值更重要,这使得XAUC与我们的研究目标特别相关。它帮助我们评估CQE能否有效捕捉不同内容项目中用户参与度的微妙差异。

基线

为了比较,我们选择了四种最先进的观看时间预测方法,包括WLR(加权逻辑回归)[2]、D2Q(持续时间去混杂分位数)[20]、OR(序数回归)[12]和TPM(基于树的渐进回归模型)[8]。前三种方法是确定性的,而后者引入了不确定性因素,提供了均值和方差的估计。

4.2.2 用户兴趣预测

这个任务结合观看时间和视频时长,提供了一个更全面的用户兴趣指标。通过这样做,我们不仅考虑用户观看视频的时间长度,还考虑这个时间与视频总长度的关系,从而更准确地反映用户真正的兴趣水平。遵循D2Co[21],具体来说,我们定义给定用户-视频对 $(u, v)$ 的用户兴趣为:

\[x = \begin{cases} 1, & \text{if } (d \leq 18s \text{ and } w = d) \text{ or } (d > 18s \text{ and } w > 18s); \\ 0, & \text{otherwise}; \end{cases}\]

…(10)

其中:

  • $ d $ 是视频时长,
  • $ w $ 是观看时间。

我们采用了与D2Co相同的训练配置,并使用了经典的深度推荐模型DeepFM [5]和最先进的推荐模型AutoInt [15]作为我们的底层推荐模型。

数据集。遵循D2Co,我们利用了两个公开可用的真实世界数据集:WeChat3和KuaiRand4。这些数据集来源于著名的短视频平台,即微信看一看和快手。微信数据集包含20,000个用户、96,418个项目、7,310,108次互动。该数据集通过2021年微信大数据挑战赛提供,涵盖了为期两周的微信看一看日志。KuaiRand数据集是新发布的一款来自快手的顺序推荐数据集。如[4]所建议,我们在本研究中使用了其中一个子集KuaiRand-pure。它包含26,988个用户、6,598个项目和1,266,560次互动。

指标。GAUC(Group Area Under Curve)[24]和nDCG@k(排名前k的归一化折扣累积增益)[6]被用作推荐性能的评估指标。

  • GAUC:这个指标是通过在不同用户组之间加权平均ROC曲线下面积(AUC)来计算的,反映了模型对项目进行准确排名的能力。
  • nDCG@k:这个指标基于item的相关性和它们在前k名的位置来衡量推荐列表的增益,提供了对推荐列表顶部item及其排序质量的洞察。

基线。我们使用了D2Co中定义的加权二元交叉熵损失和均方误差损失(MSE)作为我们的基线。二元交叉熵损失定义为

\[L_{CE} = -r \log[\sigma(f(x))] - (1 - r) \log[1 - \sigma(f(x))]\]

其中:

  • $ \sigma $ 是Sigmoid函数,
  • $ r $ 是用户兴趣,由PCR、WTG [22]或D2Co [21]定义。

遵循D2Co,在PCR和WTG中,我们将观看时间少于5秒的所有样本在计算标签值后视为0值。这有助于去除观看时间的噪声。

**默认情况下,我们将:

  • 分位数的数量 $ N $ 设置为100。
  • $ \tau_{\text{low}} $ 的值从0.2、0.25和0.3中经验性选择。
  • 同样,$ \tau_{\text{high}} $ 的值从0.6、0.7和0.8中经验性选择。

4.2.3 实验结果。

我们总结结果如下:

CQE、CDE与其他方法的比较:我们比较了不同方法在观看时间预测任务中的表现,结果列在表4中。TPM和CQECDE在MAE和XAUC指标上都优于其他方法,从而突显了将不确定性纳入模型的重要性。此外,我们的方法在两个指标上与TPM相比表现出更优越的性能,从而强调了采用分位数建模技术的优越性。此外,MAE和XAUC指标之间的一致行为也验证了观看时间估计作为排名指标的可行性。至于用户兴趣预测任务,我们在不同的框架(DeepFM和AutoInt)和各种标签设计(PCR、WTG和D2Co)之间进行比较,结果列在表3中,我们提出的CQECDE在所有情况下一贯优于替代方案,表明CQECDE的鲁棒性和有效性。在优化框架方面,CE通常比MSE表现更好,表明将序数分类信息作为指导的正确性。而且CQECDE可以在所有用户兴趣度量设计(PCR、WTG和D2Co)上改善CE,这意味着所提出的框架可以推广到不同的标签设置。

CQE、CDE中超参数的影响:为了更好地研究提出的CQE框架的特性,我们进一步对分位数数量 $ N $ 进行消融研究,将其值从1变化到500。从理论上讲,更大的 $ N $ 生成更精确的真实期望近似,从而通常实现更好的推荐性能。这归因于更多分位数产生的分布更接近实际分布。在观看时间预测任务的背景下,如图4所示,模型性能随着预测分位数的增加而提高。相反,对于用户兴趣预测任务,观察到(如图5所示)当分位数数量少于10时模型性能相对较弱。超过10之后,结果在0.663左右波动。有趣的是,与观看时间预测任务不同,更多的分位数并不一定带来更好的结果。这种差异表明训练目标与测试集中定义的用户兴趣标签之间存在差距。总的来说,在条件期望策略下增加 $ N $ 可能会提高预测准确性。

总结来说,我们的离线实验通过这两项互补的任务全面展示了CQE方法在预测用户行为和兴趣方面的优越性。观看时间预测任务验证了CQE在直接行为预测方面的准确性,而用户兴趣预测任务进一步证明了CQE有效捕捉更复杂用户偏好的能力。这些任务的结合不仅验证了我们方法的有效性,还突出了CQE框架在解决推荐系统中不同但相关挑战的灵活性和适应性。

#

https://arxiv.org/pdf/2407.12223