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)。

#

#

ali在《AutoDebias: Learning to Debias for Recommendation》提出了一种autodebias的思想:

摘要

推荐系统依赖于用户行为数据(如评分和点击)来构建个性化模型。然而,收集到的数据是观测性而非实验性的,这导致了数据中的各种偏差,显著影响了学到的模型。大多数现有的推荐去偏差(debias)工作,如逆概率评分(inverse propensity scoring)和插值法(imputation),仅专注于一两种特定的偏差,缺乏能够解释数据中混合甚至未知偏差的通用能力。

针对这一研究空白,我们首先从风险差异(risk discrepancy)的角度分析了偏差(bias)的来源,风险差异代表了期望经验风险和真实风险之间的差异。值得注意的是,我们推导出一个通用的学习框架,通过指定通用框架的一些参数,很好地总结了大多数现有的去偏差策略。这为开发通用的去偏差解决方案提供了宝贵的机会,例如通过从数据中学习去偏差参数。然而,训练数据缺乏关于数据如何有偏差以及无偏差数据是什么样子的的重要信号。为了推进这个想法,我们提出了AutoDebias,它利用另一个(小的)均匀数据集,通过解决具有meta-learning的双层优化(bi-level optimization)问题来优化去偏差参数。通过理论分析,我们推导出了AutoDebias的泛化界,并证明了其获得适当去偏差策略的能力。在两个真实数据集和一个模拟数据集上的大量实验证明了AutoDebias的有效性。

1.介绍

能够为每名用户提供个性化建议的推荐系统(RS)已在无数在线应用中得到广泛应用。近年来,关于推荐的出版物如雨后春笋般涌现,其中大多数旨在发明机器学习模型以拟合用户行为数据[17, 44, 52]。然而,在现实世界的RS中,这些模型的性能可能会下降,因为行为数据通常充满偏差。在实践中,数据是观测性的而非实验性的,并且经常受到许多因素的影响,包括但不限于:

  • 用户的自我选择(选择偏差:selection bias)[19, 33]
  • 系统的曝光机制(曝光偏差:exposure bias)[34, 47]
  • 公众舆论(从众偏差:conformity bias)[25, 29]
  • 展示位置(位置偏差:position bias)[22, 23]

这些偏差使数据偏离了反映用户真实喜好的状态。因此,如果不考虑数据偏差而盲目地拟合数据,将会产生意想不到的结果,例如放大长尾效应(long-tail effect)[1]和放大之前模型偏差(previous-model bias)[28]

鉴于数据偏差的广泛存在及其对所学模型的巨大影响,我们无论如何强调实际RS中适当去偏差的重要性都不为过。现有的关于推荐(或学习排名)偏差的工作可以分为三大类:

  • 1)数据填充(data imputation)[19, 42],为缺失数据分配伪标签以减少方差;
  • 2)逆概率评分(IPS)[39, 47],一种反事实(counterfactual)技术,重新衡量收集到的数据以实现期望无偏学习;
  • 3)生成式建模(generative modeling)[27],假设数据的生成过程并相应地减少偏差。

尽管它们在某些场景中有效,但我们认为它们存在两个局限性:

  • 缺乏普适性。这些方法是为解决特定场景中的一种或两种偏差而设计的,例如IPS用于选择偏差[39],点击模型用于位置偏差[12]。因此,在面对通常包含多种类型偏差的真实数据时,这些方法将无法胜任。
  • 缺乏自适应性。这些方法仅在去偏差(debiasing)配置(例如伪标签、倾向得分或数据生成过程)得到正确指定的情况下才有效。然而,获得这样的正确配置相当困难,需要深入了解数据中的偏差以及它们如何影响模型的领域专家。更糟糕的是,随着新用户/item/交叉的出现可能改变数据分布,最优配置可能会随时间演变,这已成为实践者不断手动调整配置的噩梦。

考虑到现有工作的不足,我们认为开发一种通用的去偏差解决方案至关重要,它不仅应考虑到多种偏差及其组合,还应解放人力来识别偏差和调整配置。为实现这一目标,我们首先回顾了常见的偏差和去偏差策略,得出了两个重要见解:

  • (1)尽管不同偏差具有不同的来源和性质,但它们都可以被表述为经验风险和真实风险之间的风险差异,这是由于收集训练数据所用的分布与用于无偏测试的分布不一致所致;
  • (2)最近大多数去偏差策略的成功可以归因于它们为抵消模型训练中的差异而采取的具体配置。

基于这些见解,我们提出了一个通过降低风险差异来概括大多数去偏差策略的通用去偏差框架——每种策略都可以通过指定框架的参数来恢复。这个框架为开发通用的推荐去偏差解决方案提供了一个宝贵的机会——我们可以通过学习框架的去偏差参数来进行自动去偏差。

现在的问题是如何优化去偏差参数。显然,有偏的训练数据缺乏关于数据如何有偏以及无偏数据是什么样子的的重要信号。为了解决这个问题,我们建议利用另一个均匀数据(uniform data)来监督去偏差参数的学习。假设均匀数据是通过随机logging policy[39]收集的,以无偏的方式反映用户偏好。我们充分利用了这一重要证据,通过最小化均匀数据上的loss来优化去偏差参数。具体而言,我们将这一过程表述为一个双层优化(bi-level optimization)问题,其中去偏差参数作为学习推荐模型的超参数,并通过元学习(meta-learning)技术[14]优化去偏差参数。我们对学习框架进行了理论分析,证明了:

  • (1)在这种目标下学到的最优解近似于正确纠正偏差的最佳情况;
  • (2)即使是在少量均匀数据上训练,它也能学到令人满意的去偏差策略。

最后,在利用均匀数据进行推荐方面,最相关的工作是最近提出的KDRec[28]。然而,我们认为它没有充分挖掘均匀数据的优势。KDRec在均匀数据上训练一个单独的teacher模型,然后将模型的知识转移到有偏数据上的正常训练。由于均匀数据是以降低用户体验为代价收集的,其规模通常相当小。因此,在其上训练的模型存在高方差,降低了KDRec的有效性。更重要的是,它缺乏理论保证,teacher模型如何抵消偏差的内在机制尚未完全理解。与KDRec相比,我们的框架以更具有理论依据的方式利用均匀数据,并在实证上取得了显著的改进。

总之,这项工作做出了以下主要贡献:

  • 从风险差异的角度统一各种偏差,并开发了一个包含大多数去偏差策略的通用去偏差框架。
  • 提出了一种利用均匀数据学习具有理论保证的最优去偏差策略的新方法。
  • 在三种类型的数据(显式和隐式反馈,以及列表反馈的模拟数据)上进行实验,验证了我们提案的有效性。

2.预备知识

在本节中,我们从风险差异的角度对推荐任务和各种偏差进行了阐述。

2.1 任务表述

假设我们有一个包含user集U和item集I的推荐系统。

  • 𝑢(或𝑖):表示U(或I)中的用户(或item)
  • $r \in R$: 表示用户对item给出的反馈(如评分值、点击量和停留时间)
  • $D_T$:收集到的历史行为数据,可以表示为一个由未知分布$𝑝_T(u,i,r)$在user-item-label空间 $U×I×R$ 上生成的三元组集合$\lbrace (𝑢_𝑘, 𝑖_𝑘,𝑟_𝑘) \rbrace \mid 1≤𝑘 ≤ \mid 𝐷_𝑇 \mid$。

推荐系统的任务可以表述如下:从$𝐷_𝑇$中学习一个推荐模型,使其能够捕捉用户偏好并做出高质量的推荐。形式上,设:

  • $𝛿 (.,.)$:表示预测值与真实标签之间的误差函数

推荐的目标是:从可用的数据集$𝐷_𝑇$中学习一个参数函数 $𝑓_\theta: U×I→R$,以最小化以下真实风险(true risk):

\[𝐿(𝑓)=E_{𝑝_𝑈(𝑢,𝑖,𝑟)} [𝛿(𝑓(𝑢,𝑖), 𝑟)]\]

…(1)

其中:

  • $𝑓_𝜃$:可以由具有可学习参数𝜃的特定推荐模型实现。我们注意到,为了清晰表达,本文中的符号可能省略了子脚本“𝜃”。
  • $𝑝_𝑈 (𝑢,𝑖,𝑟)$:表示模型测试的理想无偏数据分布。该分布可以分解为user-item pair分布 $𝑝_𝑈 (𝑢,𝑖)$(通常假定为均匀分布)和每个user-item pair的事实偏好分布$𝑝_𝑈(𝑟 \mid 𝑢,𝑖)$

由于真实风险不可访问,学习是通过优化以下经验风险(empirical risk)在训练集$𝐷_𝑇$上进行的:

\[\widehat{𝐿}_𝑇(𝑓) = \frac{1}{|𝐷_𝑇|} \sum\limits_{k=1}^{|D_r|} 𝛿(𝑓(𝑢_𝑘, 𝑖_𝑘), 𝑟_𝑘)\]

…(2)

如果经验风险$\widehat{𝐿}𝑇(𝑓)$是真实风险$𝐿(𝑓)$的无偏估计,即$E{𝑝_𝑇}[𝐿_𝑇(𝑓)]=𝐿(𝑓)$,那么PAC学习理论[16]指出,如果有足够多的训练数据,我们学到的模型将接近最优。

2.2 推荐中的偏差

然而,由于实际数据收集中存在各种偏差,训练数据分布$𝑝_𝑇$通常与理想的、无偏的分布$𝑝_𝑈$不一致。训练数据只能给出用户偏好的一种有偏差的快照,使得推荐模型陷入次优结果。图1说明了这种现象。红色曲线表示真实风险函数,而蓝色曲线表示有偏的经验风险函数的期望值$E_{𝑝_𝑇}[𝐿_𝑇(𝑓)]$。

… 图1

由于这两种风险是在不同的分布下预期的,因此即使在它们的最优点(即$𝑓^$与$𝑓^𝑇$)处,它们的行为也会有很大差异。这意味着即使提供了足够大的训练集,并且模型达到了经验最优点$𝑓^𝑇$,仍然存在一个差距Δ𝐿,位于最优解$𝐿(𝑓^)$和经验解$𝐿(𝑓^𝑇)$之间。

以上分析揭示了偏差对推荐的影响:偏差(bias)会导致真实风险和预期经验风险之间的差异。如果不考虑风险差异,盲目地拟合推荐模型将导致性能较差。最近的研究已经在推荐中识别出了各种偏差。在本小节中,我们将从风险差异的角度回顾这些偏差,以帮助读者更好地理解它们的性质和负面影响。我们参考[5],并将数据偏差分为以下四类:

  • 选择偏差(Selection bias):发生在用户可以自由选择给哪些item评分时,因此观察到的评分不是所有评分的代表性样本[5]。从风险差异的角度可以很容易地理解选择偏差——它使实际的user-item pair分布$𝑝_𝑇(𝑢,𝑖)$偏离了理想的均匀分布$𝑝_𝑈(𝑢,𝑖)$。通常,$𝑝_𝑇(𝑢,𝑖)$倾向于评级值较高的pair。在这样的有偏数据下学习推荐模型,很容易高估用户对物品的偏好。

  • 从众偏差(Conformity bias):发生在用户倾向于与群体中的其他人行为相似,即使这样做违背了自己的判断[5]。从众偏差扭曲了标签分布$𝑝_𝑇(𝑟 \mid 𝑢,𝑖)$,使其符合公众意见,使得反馈并不总是代表用户的真实偏好,即$𝑝_𝑇(𝑟 \mid 𝑢,𝑖) \neq 𝑝_𝑈(𝑟 \mid 𝑢,𝑖)$。

  • 曝光偏差(Exposure bias):发生在隐式反馈数据中,因为用户只接触到特定item的一部分[5]。从上述定义中可能很难理解曝光偏差,但从风险差异的角度来看就很直观。一方面,用户在接触到的item上产生行为,使得观察到的user-item分布$𝑝_𝑇(𝑢,𝑖)$偏离了理想分布$𝑝_𝑈(𝑢,𝑖)$。另一方面,隐式反馈数据只有正反馈被观察到$𝑝_𝑇(𝑟=1 \mid 𝑢,𝑖)=1$。这种只有正的数据会导致未观察到的交互的解释产生歧义——它们可能是由于未曝光或者不喜欢造成的

  • 位置偏差(Position bias):发生在用户倾向于与推荐列表中较高位置的item进行交互时[5]。在位置偏差下,训练数据分布$𝑝_𝑇(𝑢,𝑖,𝑟)$将对item显示位置敏感,无法忠实地反映用户偏好。一方面,排序位置将影响item展示给用户的机会[34],即$𝑝_𝑇(𝑢,𝑖) \neq 𝑝_𝑈(𝑢,𝑖)$。另一方面,由于用户通常信任推荐系统,他们的判断也会受到位置的影响,即$𝑝_𝑇(𝑟 \mid 𝑢,𝑖) ≠ 𝑝_𝑈(𝑟 \mid 𝑢,𝑖)$。一般来说,上述偏差可以归纳为一种风险差异——它们导致训练数据分布$𝑝_𝑇(𝑢,𝑖,𝑟)$偏离理想的、无偏的分布$𝑝_𝑈(𝑢,𝑖,𝑟)$。这种洞察促使我们开发一个强大的框架,直接克服风险差异,实现对数据中混合的上述偏差甚至未知偏差的消除。

3.通用去偏差框架

在本节中,我们提供了一个通用的去偏差框架,可以处理推荐数据中的各种偏差。然后,我们讨论它如何包含大多数现有的去偏差策略。

3.1 去偏差经验风险

第2.2节中的分析表明,各种偏差导致了风险差异。为了实现无偏学习,我们需要重新设计经验风险函数,使其在带有偏差的训练分布下的期望与真实风险一致。通过比较$𝐿(𝑓)$和$E_{𝑝_𝑇}[\widehat{𝐿}_𝑇(𝑓)]$,我们可以看到差异源于数据分布,其中每个数据点在经验风险中的作用已经发生偏斜。为了解决这个问题,我们可以对训练数据进行重新加权,得到一个加权的经验风险函数:

\[\widehat{𝐿}_𝑇(𝑓|𝑤(1)) = \frac{1}{|𝐷_𝑇|} * \sum\limits_{𝑘=1}^{|𝐷_𝑇|} 𝑤(1)^𝑘 * 𝐿(𝑓(𝑢_𝑘,𝑖_𝑘), 𝑟_𝑘)\]

…(3)

当参数$𝑤(1)$被正确指定时,即$𝑤(1)^𝑘 =\frac{𝑝_𝑈(𝑢_𝑘,𝑖_𝑘,𝑟_𝑘)} {𝑝_𝑇(𝑢_𝑘,𝑖_𝑘,𝑟_𝑘)}$,每个采样的训练数据的偏度都被纠正了。这样的经验风险$\widehat{𝐿}_𝑇(𝑓 \mid 𝑤(1))$似乎是真实风险的无偏估计,因为:

\[𝐸_{𝑝_𝑇}[\widehat{𝐿}_𝑇(𝑓|𝑤(1))] = 𝑆_1 \in 𝑆(𝑢,𝑖,𝑟) 𝑝_𝑈(𝑢,𝑖,𝑟) 𝛿(𝑓(𝑢,𝑖), 𝑟)\]

… (4)

其中:

  • 𝑆1:表示满足$𝑝_𝑇(𝑢,𝑖,𝑟) > 0$且$𝑝_𝑈(𝑢,𝑖,𝑟) > 0$的user-item-label子空间,即:$𝑆1 ≡ \lbrace(𝑢,𝑖,𝑟) \in U × I × R : 𝑝𝑇(𝑢,𝑖, 𝑟) > 0, 𝑝𝑈(𝑢,𝑖, 𝑟) > 0 \rbrace$。

然而,$E_{𝑝_𝑇}[\widehat{𝐿}_𝑇(𝑓 \mid 𝑤(1))]$与$𝐿(𝑓)$实际上并不相等。如图2所示,训练数据分布$𝑝_𝑇$仅覆盖了$𝑝_𝑈$支持的一部分区域(即$𝑆_1$),而在其他区域($𝑆0 ≡ \lbrace(𝑢,𝑖, 𝑟) ∈ 𝑈 × 𝐼 × 𝑅 : 𝑝𝑇(𝑢,𝑖, 𝑘) = 0, 𝑝𝑈(𝑢,𝑖, 𝑘) > 0 \rbrace$)没有概率。这意味着即使有足够多的训练数据可用,它仍然只提供部分user-item pair,而忽略了其余部分。当$𝑆_0$和$𝑆_1$表现出不同的模式时,仅在$𝑆_1$上学习会受到特别大的影响。这种情况在实践中很常见:系统倾向于展示热门item[24],而相当多的冷门item几乎没有机会被展示。为了解决这个问题,我们需要向空白区域填充伪数据。实际上,𝐿(𝑓)的等效变换是:

\[𝐿(𝑓) = 𝑆1∈𝑆(𝑢,𝑖,𝑟) 𝑝𝑈(𝑢,𝑖, 𝑟)𝛿(𝑓(𝑢,𝑖), 𝑟) + 𝑆0∈𝑆(𝑢,𝑖,𝑟) 𝑝𝑈(𝑢,𝑖, 𝑟)𝛿(𝑓(𝑢,𝑖), 𝑟) = 𝐸𝑝𝑇[1 / |𝐷𝑇| * ∑𝑘=1^|𝐷𝑇| 𝑤(1)^𝑘 * 𝛿(𝑓(𝑢𝑘,𝑖𝑘), 𝑟𝑘)] + 𝑆𝑢∈U,𝑖 ∈I 𝑤(2)^𝑢𝑖 * 𝛿(𝑓(𝑢,𝑖),𝑚𝑢𝑖)\]

…(5)

当参数𝜙 ≡ {𝑤(1),𝑤(2),𝑚}设置为:

𝑤(1)^𝑘 = 𝑝𝑈(𝑢𝑘,𝑖𝑘, 𝑟𝑘) / 𝑝𝑇(𝑢𝑘,𝑖𝑘, 𝑟𝑘) 𝑤(2)^𝑢𝑖 = 𝑆𝑟 ∈R 𝑝𝑈(𝑢,𝑖, 𝑟)I[𝑝𝑇(𝑢,𝑖, 𝑟) = 0] 𝑚𝑢𝑖 = 𝐸𝑝𝑈(𝑟 𝑢,𝑖)[𝑟I[𝑝𝑇(𝑢,𝑖, 𝑟) = 0]],(6)

则等式成立。

在这个上下文中,”where I[.] denotes indicator function”表示I[.]是一个指示函数。在这里,我们将𝛿(., .)的期望吸收到伪标签中,即E[𝛿(., .)] = 𝛿(., E[.])。这适用于许多常用的损失函数,如L2、L1和交叉熵。因此,我们定义以下经验风险函数:

𝐿ˆ𝑇(𝑓|𝜙) = 1 |𝐷𝑇| | Õ 𝐷𝑇| 𝑘=1 𝑤(1) 𝑘 𝛿(𝑓(𝑢𝑘,𝑖𝑘), 𝑟𝑘) + Õ 𝑢∈U,𝑖 ∈I 𝑤(2) 𝑢𝑖 𝛿(𝑓(𝑢,𝑖),𝑚𝑢𝑖), (7)

当参数正确指定时,这是真实风险的无偏估计器。我们注意到可能存在多个𝜙的解,但至少有一个(即方程(6))使得方程𝐿ˆ𝑇(𝑓 𝜙) = 𝐿(𝑓)成立。这个通用的经验风险函数为实现自动去偏差提供了一个宝贵的机会——通过学习去偏差参数𝜙来实现。

3.2 与相关工作的联系 为了展示我们框架的广泛性,我们回顾了代表性的去偏差策略,并讨论了框架如何包含它们。

选择偏差。现有的方法主要有三种类型: (1) 逆概率得分(IPS)[39]对收集到的数据进行重新加权以实现无偏学习,定义经验风险为: Lˆ𝐼𝑃𝑆(𝑓) = 1 |U||I| | Õ 𝐷𝑇| 𝑘=1 1 𝑞𝑢𝑘𝑖𝑘 𝛿(𝑓(𝑢𝑘,𝑖𝑘), 𝑟𝑘), (8) 其中𝑞𝑢𝑘𝑖𝑘定义为倾向,用于估计数据被观察到的概率。通过设置𝑤(1)𝑘 = |𝐷𝑇|𝑞𝑢𝑘𝑖𝑘|U| |I|,𝑤(2)𝑘 = 0,框架可以恢复它。

(2) 数据插补[19]为缺失数据分配伪标签,并优化以下风险函数: 𝐿ˆ𝐼𝑀(𝑓) = 1 |U||I| ( | Õ 𝐷𝑇| 𝑘=1 𝛿(𝑓(𝑢𝑘,𝑖𝑘), 𝑟𝑘) + Õ 𝑢∈U,𝑖 ∈I 𝜆𝛿(𝑓(𝑢,𝑖),𝑚𝑢𝑖), (9) 其中𝑚𝑢𝑖表示插补的标签,可以通过启发式方法[21]或专用模型[7, 32, 37]进行指定。𝜆用于控制插补数据的贡献。如果设置𝑤(1)𝑘 = |𝐷𝑇||U| |I|,𝑤(2)𝑢𝑖 = 𝜆|U| |I|,它就是框架的一个特例。

(3) 双重稳健性[48]将上述模型结合起来以获得更高的鲁棒性——即如果插补数据或倾向中的任何一个准确,都能保持无偏性。它优化了以下风险函数: 𝐿ˆ𝐷𝑅(𝑓) = 1 |U||I| Õ 𝑢∈|U|,𝑖 ∈|I|  𝛿(𝑓(𝑢,𝑖),𝑚𝑢𝑖) + 𝑂𝑢𝑖𝑑𝑢𝑖 𝑞𝑢𝑖  , (10)

其中 𝑑𝑢𝑖 = 𝛿 (𝑓 (𝑢,𝑖), 𝑟𝑜 𝑢𝑖) − 𝛿 (𝑓 (𝑢,𝑖), 𝑟𝑖 𝑢𝑖) 表示预测误差与插补误差之间的差异。𝑟 𝑜 𝑢𝑖 表示观察到的评分值。𝑂𝑢𝑖 表示(𝑢,𝑖)交互是否被观察到。我们的框架可以通过设置 𝑤 (1) 𝑘 |𝐷𝑇 | 𝑞𝑢𝑘 𝑖𝑘 |U | |I | , 𝑤 (2) 𝑢𝑖 = 1 |U | |I | − 𝑂𝑢𝑖 𝑞𝑢𝑖 |U | |I | 来恢复这个值。从众偏差。从众效应可以通过优化 [29, 31] 来抵消: 𝐿ˆ𝑂𝐹 𝐹 (𝑓 ) = 1 |𝐷𝑇 | | Õ 𝐷𝑇 | 𝑘=1 (𝛼𝑟𝑘 + (1 − 𝛼)𝑏𝑢𝑘𝑖𝑘 − 𝑓 (𝑢𝑘 ,𝑖𝑘 ))2 , (11) 其中 𝑏𝑢𝑘𝑖𝑘 表示引入的偏差项,可以将其指定为所有用户的平均评分[29]或社交朋友[31]。𝛼 控制从众效应的影响。我们的框架通过设置 𝑤 (1) 𝑘 = 1,𝑤 (2) 𝑢𝑖 = 𝑂𝑢𝑖(1 − 𝜆),𝑚𝑢𝑖 = −𝑏𝑢𝑖 来包含它。曝光偏差。现有的方法主要有两种类型: (1) 负加权,将未观察到的交互视为负数并降低它们的贡献 [21]: 𝐿ˆ𝑁𝑊 (𝑓 ) = 1 |𝐷𝑇 | | Õ 𝐷𝑇 | 𝑘=1 𝛿 (𝑓 (𝑢𝑘 ,𝑖𝑘 ), 𝑟𝑘 ) + Õ (𝑢,𝑖) ∈U×I:𝑂𝑢𝑖=0 𝑎𝑢𝑖𝛿 (𝑓 (𝑢,𝑖), 0), (12) 其中参数 𝑎𝑢𝑖 表示项目被用户接触的可能性,可以用启发式方法指定[21]或者通过曝光模型[6, 9, 27]指定。我们可以通过设置 𝑤 (1) 𝑘 = 1, 𝑤 (2) 𝑢𝑖 = 𝑎𝑢𝑖(1 − 𝑂𝑢𝑖), 𝑚𝑢𝑖 = 0 来恢复这种方法。 (2) IPS 变体,重新权衡观察到的数据并插补缺失的数据 [38]: 𝐿ˆ 𝐼𝑃𝑆𝑉 (𝑓 ) = | Õ 𝐷𝑇 | 𝑘=1 1 𝑞𝑢𝑘𝑖𝑘 𝛿 (𝑓 (𝑢𝑘 ,𝑖𝑘 ), 𝑟𝑘 ) + Õ 𝑢∈U,𝑖 ∈I (1 − 𝑂𝑢𝑖 𝑞𝑢𝑖 )𝛿 (𝑓 (𝑢,𝑖), 0)。 (13)

我们可以通过设置 𝑤 (1) 𝑘 |𝐷𝑇 | 𝑞ˆ𝑢𝑘 𝑖𝑘 |U | |I | , 𝑤 (2) 𝑢𝑖 = 1 |U | |I | − 𝑂𝑢𝑖 𝑞𝑢𝑖 |U | |I | , 𝑚𝑢𝑖 = 0 来恢复它。值得一提的是,Variant IPS 的无偏性条件是训练分布 𝑝𝑇 覆盖了 𝑝𝑈 的整个支撑集,然而这在实践中很少成立。位置偏差。最流行的策略是 IPS [3],它使用一个位置感知分数 𝑞ˆ𝑡𝑘 对收集到的数据进行重新加权: 𝐿ˆ 𝐼𝑃𝑆 (𝑓 ) = 1 |𝐷𝑇 | | Õ 𝐷𝑇 | 𝑘=1 𝛿 (𝑓 (𝑢𝑘 ,𝑖𝑘 ), 𝑟𝑘 ) 𝑞𝑡𝑘 。 (14) 可以通过设置 𝑤 (1) 𝑘 1 𝑞𝑡𝑘 , 𝑤 (2) 𝑢𝑖 = 0 来恢复它。

4.自动去偏差(AutoDebias)算法

我们现在考虑如何优化上述框架。由于训练数据缺乏关于数据如何偏差以及无偏差数据是什么样子的的重要信号,因此无法从这样的数据中学习到适当的去偏差参数。为了解决这个问题,我们引入了另一个均匀数据$𝐷_𝑈$来监督去偏差参数的学习。均匀数据包含一系列三元组 $\lbrace(𝑢_𝑙 ,𝑖_𝑙 , 𝑟_𝑙) \rbrace \mid 1≤𝑙≤\mid 𝐷_𝑈 \mid$ ,假设这些数据是通过随机logging policy收集的,为无偏推荐性能提供了黄金标准证据。我们充分利用这一证据,优化𝜙以便在均匀数据上获得更好的性能。具体而言,学习过程可以表示为一个元学习过程,包括:

4.1 base learner

基于当前的去偏差参数𝜙,在训练数据上优化base推荐模型:

\[\theta^*(𝜙) = \underset{𝜃}{argmin} \ \widehat{𝐿}_𝑇(𝑓_\theta |𝜙)\]

…(15)

其中:

  • debias参数 𝜙 可以被视为base learner的超参数。

4.2 meta learner

给定通过超参数𝜙,从训练数据中学到的base推荐模型 $𝜃^*(𝜙)$,在均匀数据上优化 𝜙 以便获得更好的推荐效果:

\[𝜙^* = \underset{\phi}{argmin} \ \frac{1}{|𝐷_𝑈|} \sum\limits_{𝑙=1}^{|D_U|} \sigma(𝑓_{𝜃^*(𝜙)} (𝑢_𝑙 ,𝑖_𝑙), 𝑟_𝑙)\]

… (16)

为了更好地描述,我们将均匀数据上的经验风险(empirical risk )标记为: $\widehat{𝐿}_𝑈(𝑓_𝜃)$,即 $\widehat{𝐿}_𝑈 (𝑓_𝜃)= \frac{1}{ 𝐷_𝑈 } \sum\limits_{𝑙=1}^{ 𝐷_𝑈 } 𝛿(𝑓_𝜃(𝑢_𝑙,𝑖_𝑙), 𝑟_𝑙)$。

由于均匀数据通常是小规模收集的,直接从其中学习𝜙中的所有参数会导致过拟合。为了解决这个问题,可以使用简洁的元模型(meta model)对𝜙进行重新参数化。这种处理可以减少参数的数量,并将有用的信息(例如,用户ID、观察到的反馈)编码到debias中。在本文中,我们简单地选择线性模型(linear model)进行实现,如下所示:

\[𝑤_𝑘^{(1)} = exp(𝜑_1^𝑇 [x_{𝑢_𝑘} \circ x_{𝑖_𝑘} \circ e_{𝑟_𝑘}]) \\ 𝑤_{ui}^{(2)} = exp(𝜑_2^T [x_𝑢 \circ x_𝑖 \circ e_{𝑂_{𝑢𝑖}}]) \\ 𝑚_{𝑢𝑖}=\sigma(𝜑_3^T [e_{𝑟_{𝑢𝑖}} \circ e_{𝑂_{𝑢𝑖}} ])\]

…(17)

其中:

  • $x_𝑢$ 和 $x_𝑖$:分别表示用户𝑢和物品𝑖的特征向量(例如,其ID的一维向量);
  • $e_𝑟、e_{𝑂_{𝑢𝑖}} $:是 𝑟 和 $𝑂_{𝑢𝑖}$ 的一维向量;
  • $\circ$:表示连接操作;
  • $𝜑 ≡ {𝜑_1, 𝜑_2, 𝜑_3}$ 是待学习的代理参数;
  • $\sigma(\cdot)$表示激活函数,用于控制插补值的比例,例如 $𝑡𝑎𝑛ℎ(\cdot)$

有人可能会担心,使用元模型对 𝜙 进行建模可能会引入归纳偏差,限制 𝜙 的灵活性,使其无法达到全局最优。实际上,我们的框架对这种归纳偏差相对稳健,这一点已在第5节中得到验证。

模型学习

请注意,获得最优$𝜙^∗$涉及到嵌套的优化循环——向前更新𝜙一步需要完整训练𝜃的一个循环,这是昂贵的。为了解决这个问题,我们考虑在循环中交替更新𝜃和𝜙。也就是说,对于每个训练迭代,我们使用当前的𝜙对推荐模型进行尝试性更新,并在均匀数据上检查其性能。均匀数据上的损失将给出反馈信号以更新元模型。确切地说,如图3所示,我们在每次迭代中执行以下训练过程:

• 假设𝜃更新。如图3中的黑色箭头所示,我们对𝜃进行假设性更新:

\[𝜃′(𝜙) = 𝜃 − \eta_1 \nabla_{\theta} \widehat{𝐿}_𝑇(𝑓_{\theta} | \phi)\]

…(18)

我们使用学习率为$\eta_1$的梯度下降法更新𝜃。

• $𝜙(𝜑)$的更新。如图3中的蓝色箭头所示,我们在具有$\widehat{𝐿}_𝑈$的一致性数据上测试$𝜃′(𝜙)$。loss函数给出一个反馈信号(梯度)来更新元模型𝜑:

\[𝜑 ← 𝜑 − 𝜂_2 \nabla_{𝜑} \widehat{𝐿}_𝑈(𝑓_{𝜃′(𝜙)})\]

…(19)

可以通过沿着链 $\widehat{𝐿}𝑈(𝑓{\theta’}(\phi)) \rightarrow \theta’(\phi) \rightarrow \nable_{\theta} \widehat{𝐿}𝑇(𝑓{\theta} \mid \phi)) \rightarrow \phi \rightarrow \varphi$ 反向传播来计算梯度。

• 𝜃的更新。给定更新的𝜙,我们实际上更新$\theta$如下:

\[\theta \leftarrow \theta − \eta_1 \nabla_{\theta} \widehat{𝐿}_𝑇(𝑓_{\theta} | \phi))\]

…(20)

虽然这种替代优化策略不能保证找到全局最优解,但它在经验上很好地解决了双层优化问题[14]。

https://dl.acm.org/doi/pdf/10.1145/3404835.3462919

OpenAI等人在《Evolution Strategies as a Scalable Alternative to Reinforcement Learning》中提出了Evolution Strategies的并行实现:

1.介绍

开发一个可以完成在复杂、不确定environments中的任务挑战的agents,是AI的一个核心目标。最近,分析该问题的大多数流行范式已经使用许多基于Markov Decision Process(MDP)公式、以及value functions的RL算法。这些方法的成功包括了:从像素中学习玩Atari的系统【Mnih. 2015】、执行直升机动作【2006】或者玩专级业的围棋【2016】。

求解RL问题的一个可选方法是:使用黑盒最优化(black-box optimization)。该方法有名的有:direct policy search [Schmidhuber, 1998]、或者neuro-evolution,当应用到neural network时。在本paper中,我们研究了Evolution Strategies (ES)【Rechenberg, 1973】,在该类别中一种特殊的最优化算法集合。我们展示了:ES可以可靠训练nueral network policies,并能很好地扩展到现代分布式计算机系统中,用来控制在MuJoCo物理模拟器中的机器人【Todorov 2012】,并能玩具有pixel输入的Atari游戏。我们的关键发现如下:

  • 1.我们发现:使用virtual batch normalization和其它关于neural network policy的再参数化(reparameterizations),可以极大改进evolution strategies的可靠性。如果没有这些方法,在我们的实验中ES会被证明非常脆弱;但有这些reparameterizations方法,我们可以在大多数environments中达到很强的结果
  • 2.我们发现:evolution strategies方法可以高度并行化:通过引入一个基于公共随机数的新通信机制,当使用上千台workers时,可以在runtime上达到线性加速。特别的,使用1440 workers,我们已经能在10分钟内求解MujoCo 3D拟人任务。
  • 3.evolution strategies的数据效率惊人的好:在大多数Atari environments上,当使用在3x和10x倍间的数据时,我们能匹配A3C的最终效果。在数据效率上的轻微减少,…

2.Evolution Strategies

Evolution Strategies (ES)是一类黑盒最优化算法,它是一种受天然进化(natural evolution)启发的启发搜索过程(heuristic search procedures):

在每次iteration (一代:“generation”),一群参数向量(基因型:“genotypes”)会被扰动(突变:“mutated”),它们的目标函数值(适应度:“fitness”)会被评估。具有最高得分的参数向量会接着重组(recombine)来形成下一代的群组(polulation),该过程会一直迭代,直到objective被完全最优化。

这类算法在关于他们表示群组、以及如何执行变异和重组上是有区别的。ES中最广为人知的是:【CMA-ES:covariance matrix adaptation evolution strategy,它表示了通过一个full-covariance multivariate Gaussian的群组。CMA-ES已经被广泛用于求解在低维、中维的最优化问题。

在本工作中,我们使用的ES版本,属于natural evolution strategies (NES)【Wierstra 2008】,并与Sehnke et al. [2010]的工作相近。假设:

  • F表示在参数\(\theta\)上的objective function

NES算法:

  • \(p_{\phi}(\theta)\)(通过\(\phi\)进行参数化):使用该参数分布来表示群组(population)

通过SGA(随机梯度上升)搜索\(\phi\)的方式,来最大化在群组上的平均目标值:

  • \(E_{\theta \sim p_{\phi}} F(\theta)\):表示在群组上的平均目标值

特别的,对于和REINFORCE[Williams 1992]相似的方式使用score function estimator来计算\(\nabla_{\phi} F(\theta)\)。NES算法会以如下estimator来更新在\(\phi\)上的gradient steps:

\[\nabla_{\phi} E_{\theta \sim p_{\phi}} F(\theta) = E_{\theta \sim p_{\phi}} \lbrace F(\theta) \nabla_{\phi} log p_{\phi}(\theta) \rbrace\]

对于特例,其中:\(p_{\phi}\)是factored Gaussian,生成的gradient estimator也被称作:simultaneous perturbation stochastic approximation [Spall, 1992], parameterexploring policy gradients [Sehnke et al., 2010], or zero-order gradient estimation [Nesterov and Spokoiny, 2011]。

在本工作中,我们关注于RL问题,因而:

  • \(F(\cdot)\):会是由一个environment提供的随机返回
  • \(\theta\):是一个deterministic 或 stochastic plicy \(\pi_\theta\)的参数,描述了在该environment(被离散或连续actions控制)中的一个agent

在RL算法中的许多创新,关注于应对environment或policy的不可导问题。这种非平滑性(non-smoothness)可以使用ES来解决。我们会:将种群分布\(p_{\phi}\)实例化成一个具有均值为\(\phi\)和固定方差\(\sigma^2 I\)的isotropic multivariate Gaussian,它允许我们以平均参数向量\(\theta\)直接写出\(E_{\theta \sim p_{\phi}} F(\theta)\):我们设置:

\[E_{\theta \sim p_{\phi}} F(\theta) = E_{\epsilon \sim N(0, I)} F(\theta + \sigma \epsilon)\]

在该setup下,我们的stochastic objective可以被看成是一个关于原始objective F的Gaussian-blurred版本,免于非平滑性可以由environment或由policy选中的潜在离散actions被引入。接着在第3节讨论,ES和policy gradient方法是如何应对non-smoothness的。

我们的objective以\(\theta\)来定义,我们会直接在\(\theta\)上对score function estimator使用SGA最优化:

\[\nabla_{\theta} E_{\epsilon \sim N(0, I)} F(\theta + \sigma \epsilon) = \frac{1}{\sigma} E_{\epsilon \sim N(0, I)} \lbrace F(\theta + \sigma \epsilon) \epsilon \rbrace\]

它可以使用样本来近似。生成的算法(1)会重复执行两个阶段:

  • 1)随机扰动关于policy的参数,并通过运行在environment中的一个episode来评估生成的参数
  • 2)组合这些episodes的结果,计算一个随机梯度估计(stochastic gradient estimate),并更新参数

图片名称

算法1

2.1 扩展(Scaling)和并行化(parallelizing)ES

ES可以很好地扩展到许多并行workers上:

  • 1)它在完整的episodes上操作,因此仅需要很少的workers间通信
  • 2)每个worker获得的信息只是一个由单个episode返回的scalar;如果在最优化前,我们在workers间同步随机种子(random seeds),每个worker会知道其它workers使用什么扰动(perturbations),因此每个worker只需要与其它worker通信一个scalar,在参数更新上达成一致。因此,对比起policy gradient方法(需要workers间通信整个gradients),ES需要极低的带宽。
  • 3)它不需要值函数近似(value function approximations)。具有value function estimation的RL是天然有顺序的:为了在一个给定policy上提升,value function的多次更新通常是需要获得足够的信号。每次该policy显著发生变化,对于value function estimator的多次迭代是必须的,以便捕获信号。

一个ES的简单的并行版本如算法2所示。主要的创新点是:该算法会利用共享的random seeds,它可以弹性地减小在workers间通信所需的带宽。

图片名称

算法2

实际上,我们通过在训练开始时,每个worker会实例化一大块Gaussian noise的方式来实现sampling;接着在每次iteration时通过添加对这些noise variables的一个随机索引subset,来对这些参数进行扰动。尽管该意味着:扰动在跨各次迭代间不是严格独立的,在实操中我们并不认为这是个问题。使用该策略,我们可以发现:算法2的第二部分(9行-12行)只会花费少部分的总时间,即使时当使用达到1440并行workers时。当使用更多workers时,或者当使用非常大的neural networks,我们可以减少算法该部分的计算开销,通过workers只用扰动参数\(\theta\)的一个子集,而非所有;在本case中,扰动分布\(p_{\phi}\)对应于一个混合高斯(a mixture of Gaussians),更新等式仍保持不变。在非常极端的情况下,每个worker只会扰动参数向量的单个坐标,这意味着我们会使用纯有限差分(pure finite differences.)

为了减小variance,我们使用对偶抽样(antithetic sampling) Geweke【1988】,也被称为 镜像抽样(mirrored sampling)【Brockhoff 2010】:也就是说,对于Gaussian noise vector \(\epsilon\), 我们总是评估扰动pairs:\(\epsilon, -\epsilon\)。我们发现,它对于执行fitness shaping很有用:在计算每个参数更新时,通过使用一个rank变换到returns中。这么做可以移除在每个种群(population)中的异类个体(outlier)的影响,为ES减少趋势,在训练时间时更早达到局部最优。另外,我们还对我们的policy network的参数使用weight decay:这可以防止参数增长到非常大(对比perturbations)。

不同于【Wierstra2014】,我们不会看到在训练期间对\(\sigma\)自适应的好处,因此我们将它看成是一个固定的超参数。我们会在参数空间直接执行最优化。。

上述提到的Evolution Strategies是在full-length episodes上工作的。在一些罕见的场景中,这会导致低CPU利用率,因此一些episodes会比另一些运行更多的steps。对于该原因,我们可以为所有workers限定长度为一个常数:m个steps,我们可以动态调节训练过程。例如,通过将m设置成每个episode的steps的均值的两倍,我们可以保证CPU利用率在最差时也会在50%之上。

2.2 网络参数的影响

像Q-learning和policy gradients的RL算法,会通过对来自一个stochastic policy的actions进行sampling来进行探索,Evolution Strategies会从policy参数的实例中进行sampling来学习信号。在ES中的探索(Exploration)是通过参数扰动( parameter perturbation)的方式驱动的。对于ES来说,在参数\(\theta\)之上进行提升,一些种群成员必须要比其它成员达到更好的return:例如,Gaussian perturbation vectors \(\epsilon\)偶尔会导致新的个体\(\theta + \sigma \epsilon\)具有更好的return。

对于Atari environments,我们发现:在DeepMind的convolutional架构上的 Gaussian parameter perturbations,不总是产生足够的探索(adequate exploration):对于一些environments,随机扰动参数会趋向于编码这样的policies:那些总是采用指定action,忽略掉state已给定作为input。然而,我们发现:对大多数游戏来说,在policy specification中使用虚拟batch归一化(virtual batch normalization),可以匹配policy gradient方法的效果。。。。

3.在parameter空间上的smoothing vs. 在action空间上的smoothing

3.1 什么时候ES要比policy gradients要好?

给定对decision问题进行smoothing的两个方法,你应该怎么使用?答案非常依赖于decision问题的结构,以及使用哪种类型的 Monte Carlo estimator来估计gradients \(\nabla_{\theta} F_{PG}(\theta)\)和\(\nabla_{\theta} F_{ES}(\theta)\)。假设:在return和单个actions间的相关性(correlation)很低(对于任何很难的RL问题来说都是true的)。假设:我们使用单个Monte Carlo (REINFORCE) 来近似这些gradients,我们有:

\[Var[\nabla_{\theta} F_{PG}(\theta)] \approx Var[R(a)] Var[\nabla_{\theta}] log p(a; \theta)] \\ Var[\nabla_{\theta} F_{ES}(\theta)] \approx Var[R(a)] Var[\nabla_{\theta} log p(\bar{\theta}; \theta)]\]

如果两种方法都执行相同数目的探索,\(Var[R(a)]\)对于两个表达式来说是相似的。因而在第二项上有会区别。这里我们有:\(\nubla_{\theta} log p(a; \theta) = \sum\limits_{t=1}^T \nabla_{\theta} log p(a_t; \theta)\)是一个关于T个不相关项的求和,因此policy gradient estimator的variance会随T接近线性增长。evolution stategies的对应项,\(\nabla_{\theta} log p(\bar{\theta}; \theta)\),与T相互独立。对于具有非常多time steps的长episodes,Evolution strategies会比policy gradients有优势。实际上,steps T的数目上通常在policy gradient方法中会通过discounting rewards而减小。如果actions的影响是短暂的,这允许我们动态减小在我们的gradient estimate中的variance,这在Atari games等应用中非常关键。然而,如果actions具有很长的影响,该discounting会造成gradient estimate有偏。减小T的有效值的另一个策略是:使用value function approximation。这也是有效的,但运行的风险仍是:对gradient estimates有偏。因而,如果没有合适的value function estimates提供,Evolution strategies是对于time steps T的数目过长、actions具有长持续效应时的一种更好选择。

3.2 问题维度

ES的梯度估计可以被解释成:在高维空间中的一个随机有限差分。确实,使用事实 \(E_{\epsilon \sim N(0,I)} \lbrace F(\theta) \epsilon / \sigma \rbrace = 0\),我们得到:

\[\nabla_{\theta} \eta(\theta) = E_{\epsilon \sim N(0,I)} \lbrace F(\theta + \sigma \epsilon) \epsilon / \sigma \rbrace = E_{\epsilon \sim N(0, I)} \lbrace F(\theta + \sigma \epsilon) - F(\theta)) \epsilon / \sigma \rbrace\]

很明显的是,ES可以被看成是:计算在一个随机选中方向上的一个有限差分导数估计,特别是\(\sigma\)会变小。ES与有限差分的相似性(resemblance),会建议该方法会与参数\(\theta\)的维度进行较差扩展。理论分析确实展示了:对于通用的非平滑最优化问题,最优化的steps数据随维度线性扩展。然而,很重要的是:这并不意味着:当使用ES最优化时,更大的neural networks会要比更小的networks效果更差:重要的是最优化问题的难度,或固有维度。为了看到:我们模型的维度可以被完全独立于最优化问题的有效维度,考虑一个回归问题:其中我们使用一个线性模型\(\hat{y} = x \cdot w\)来近似一个单变量y:如果我们质疑在该模型中的features和参数数目,通过将x与自身进行拼接,该问题不会变得更复杂。ivv应用到更高维问题时,ES算法会做完全相近的事情,只要我们将noise的标准差除以2,同时learning rate也除以2.

实际上,我们观察到:当使用ES到更大networks上时,会有稍微更好的结果。例如,我们同时尝试:使用A3C的更大网络和更小网络来学习Atari 2600游戏,使用更大network来平均获得更好结果。我们假设:这是因为相同效应,会做出关于大的neural networks标准的gradient-based最优化,比小网络更容易:大网络具有更少的局部最小值。

3.3 不计算gradients的优点

除了很方便并行化外,在长action序列和delayed reward的情形下,黑盒最优化算法(像ES)具有比计算gradients的RL技术具有其它优点。分布式实现ES的通信开销,要低于完全RL的方法(比如:policy gradients和Q-learning),因为在进程间通信的信息只有scalar return和用于生成扰动\(\epsilon\)的random seed,而非一个完整的梯度(full gradient)。同时,ES可以最大化处理sparse和delayed rewards;只要一个episode的总return被使用,而其它方法会使用独立rewards、以及准确的timing。

由于不需要backpropagation,黑盒优化器(black box optimizers)会将每个episode的计算量减少两三倍,内存则更多。另外,不需要显式计算一个分析梯度,可以避免梯度爆炸的问题(这在RNN中很常见)。通过对在parameter空间中的cost function进行smoothing,我们可以减小造成这些问题的病理骨折:将cost functions限定为足够平滑,不会有梯度爆炸。极端上,ES允许我们将非微分元素包含到我们的框架中,比如:使用hard attention的模块。

黑盒最优化方法(Black box optimization)是唯一适合低精度硬件进行深度学习的。低精度计算(Low precision arithmetic),比如在binary neural networks,要比高精度成本便宜很多。当最优化这样的低精度结构时,当使用gradient-based方法时,有偏的低精度梯度估计可能是个问题。相似的,对于neural network inference的指定硬件(比如:TPUs),当使用ES最优化时可以被直接使用,而它们有限的内容通常会让backpropagation不可能。

通过在参数空间进行扰动(而非action空间),黑盒优化器天然对于agent在environment中的动作频率是不变的。对于MDP-based的RL算法,另一方面,frameskip是一个很重要的参数,对于最优化的成功来说很重要【Braylan 2005】。而这对于游戏(只需要短期的planning和action)来说通常是一个可解问题,对于学习更长期的策略行为来说是个问题。对于这些问题,RL需要成功,当使用黑盒最优化时它不是必要的。

#

Frank S等人在《Parameter-exploring Policy Gradients》中提出了PEPG/PGPE算法:

1.介绍

Policy gradient方法,这么称呼是因为:他们可以在policy space中进行搜索,而非从一个value function上直接对policy进行派生。

2.方法

在本节中,我们源自于在Markovian environment中的关于情景强化学习(episodic reinforcement learning)的通用框架,提出PGPE算法。特别的,我们会强调下PGPE和其它policy gradient方法(比如:REINFORCE)之间的差异。在2.3节中,我们会引入symmetric sampling,并解释它会提升收敛速度。

2.1 Policy Gradients with Parameter-Based Exploration

考虑一个agent,它的action \(a_t\)是基于在time t时的state \(s_t\),产生在下一step中的state \(s_{t+1}\)。我们会对continuous state spaces和action spaces感兴趣,这对于大多数技术系统的控制来说是需要的。

我们假设:environment是Markovian,在下一states \(s_{t+1}\)上的条件概率分布,整体通过前一state-action pair来决定,即:

\[s_{t+1} \sim p(s_{t+1} \mid s_t, a_t)\]

我们也会假设这样的一个随机策略(stochastic policy),在actions上的分布依赖于当前state以及关于agent参数的real valued vector \(\theta\)

\[a_t \sim p(a_t \mid s_t, \theta)\]

最后,我们假设:每个state-action pair会生成一个Markovian reward标量

\[r_t(a_t, s_t)\]

我们将由一个agent产生的state-action pairs的长度为T的state-action pairs序列称为一个history(文献中的其它地方,这样的序列被称为 trajectories 或 roll-outs):

\[h = [s_{1:T}, a_{1:T}]\]

给定以上的公式,我们会使用每个history h与一个cumulative reward r进行关联,并对每个time step上的rewards进行求和:

\[r(h) = \sum\limits_{t=1}^T r_t\]

在这样的setting中,reinforcement learning的目标是:发现参数\(\theta\),最大化agent的expected reward:

\[J(\theta) = \int_H p(h | \theta) r(h) dh\]

…(1)

一个最大化\(J(\theta)\)的明显方法是:估计\(\nabla_{\theta} J\),并使用它来执行梯度下降最优化(gradient ascent optimization)。注意:对于一个特定的history的reward是与\(\theta\)独立的,我们可以使用标准恒等式 \(\nabla_x y(x) = y(x) \nabla_x logx\)来获取:

\[\nabla_{\theta} J(\theta) = \int_H p(h | \theta) \ \nabla_{\theta} log p(h | \theta)\ r(h)\ dh\]

…(2)

由于environment是马尔可夫过程(Markovian), 并且states是在给定agent的actions选择下给定参数下是条件独立的,我们可以写成:

\[p(h | \theta) = p(s_1) \prod\limits_{t=1}^T p(s_{t+1} | s_t, a_t) p(a_t | s_t, \theta)\]

将它代入到等式(2)生成:

\[\nabla_{\theta} J(\theta) = \int_H p(h | \theta) \sum\limits_{t=1}^T \nabla_{\theta} p(a_t | s_t, \theta) r(h) dh\]

…(3)

很明显,在histories的整个空间上进行积分是不可行的,我们因此对采样方法进行resort:

\[\nabla_{\theta} J(\theta) \approx \frac{1}{N} \sum\limits_{n=1}^N \sum\limits_{t=1}^T \nabla_{\theta} p(a_t^n | s_t^n, \theta) \ r(h^n)\]

…(4)

其中:

  • histories \(h^i\)会根据\(p(h^i \mid \theta)\)被选中。

接着该问题是:如何建模\(p(a_t \mid s_t, \theta)\)?

在policy gradient方法(比如:REINFORCE)中,参数\(\theta\)会被用于决定一个probabilistic policy:\(\pi_{\theta} (a_t \mid s_t) = p(a_t \mid s_t, \theta)\)。一个常见的policy model可以是一个参数化函数近似器,它的outputs定义了选中不同actions的概率。在本case中,通过在每个time step上根据policy分布选择一个action,来生成histories,接着,最终的gradient会通过对policy根据参数进行微分来计算。然而,在每个time step上从policy抽样,会导致在histories上的抽样具有一个高variance,因此会导致一个有噪声的gradient估计

PGPE通过使用一个在参数\(\theta\)上的概率分布来替换probibilistic policy,来解决variance问题,例如:

\[p(a_t | s_t, \rho) = \int_{\Theta} p(\theta | \rho) \sigma_{F_{\theta}(s_t), a_t} d\theta\]

…(5)

其中:

  • \(\rho\):是决定在\(\theta\)上分布的参数
  • \(F_{\theta}(s_t)\):是(deterministic) action,指在state \(s_t\)下被具有参数\(\theta\)的模型选中
  • \(\delta\):是狄拉克δ函数(Dirac delta function)

该方法的优点是:actions是deterministic,因此整个history可以从单个参数的样本来生成。这种在samples-per-history上的简化法,会减小在gradient estimate中的variance。作为一个辅加好处,参数梯度(parameter gradient)会通过直接参数扰动(perturbations)进行估计,无需对任何导数(derivatives)进行backpropagate,它会允许使用无微分的controllers。

对于一个给定\(\rho\)的期望收益(expected reward)是:

\[J(\rho) = \int_{\theta} \int_H p(h, \theta | \rho) r(h) dh d\theta\]

…(6)

对expected return根据\(\rho\)进行微分,并在之前应用log tricks,我们可以得到:

\[\nabla_{\rho} J(\rho) = \int_{\theta} \int_H p(h, \theta | \rho) \nabla_{\rho} log p(h, \theta | \rho) r(h) dh d\theta\]

…(7)

注意,h条件独立于\(\theta \mid \rho\),我们有:\(p(h, \theta \mid \rho) = p(h \mid \theta) p(\theta \mid \rho)\),因此:\(\nabla_{\rho} log p(h,\theta \mid \rho) = \nabla_{\rho} log p(\theta \mid \rho)\)。将它代入等式(7)生成:

\[\nabla_{\rho} J(\rho) = \int_{\theta} \int_H p(h, \theta) p(\theta | \rho) \nabla_{\rho} log p(\theta | \rho) r(h) dh d\theta\]

…(8)

接着再次使用抽样方法,这次首先从\(p(\theta \mid \rho)\)选择\(\theta\),接着运行agent来从\(p(h \mid \theta)\)来生成h。该过程会生成以下的gradient estimator:

\[\nabla_{\rho} J(\rho) \approx \frac{1}{N} \sum\limits_{n=1}^N \nabla_{\rho} log p(\theta | \rho) r(h^n)\]

…(9)

假设:\(\rho\)包含了一个关于均值 \(\lbrace \mu_i \rbrace\)、标准差\(\lbrace \sigma_i \rbrace\)的集合,它决定了在\(\theta\)中每个参数\(\theta_i\)的独立正态分布,对于\(log p(\theta \mid \rho)\)的导数会对\(\mu_i\)和\(\sigma_{i}\)分别求导:

\[\nabla_{\mu_i} log p(\theta | \rho) = \frac{\theta_i - \mu_i}{\sigma_i^2} \\ \nabla_{\sigma_i} log p(\theta | \rho) = \frac{(\theta_i - \mu_i)^2 - \sigma_i^2}{\sigma_i^3}\]

…(10)

它代入等式(9)中来逼近\(\mu\)和\(\sigma\)的gradients.

2.2 使用一个baseline来Sampling

给定足够的样本,等式(9)会决定reward gradient到任意accuracy。然而,每个样本需要rolling out一整个state-action history,它代价很高。根据Williams(1992),我们可以通过抽取单个样本\(\theta\)并将它的reward r与一个baseline reward b(通过在之前样本中给定的一个移动平均)进行对比,来获得一个成本更低的gradient estimate

直觉上,如果r>b,我们会调节\(\rho\),以便增加\(\theta\)的概率,当r < b时则相反。

如果我们在positive gradient的方向上使用一个step size \(\alpha_i = \alpha \sigma_i^2\)(其中:\(\alpha\)是个常数),我们会获得以下的参数更新等式

\[\Delta_{\mu_i} = \alpha (r-b)(\theta_i - \mu_i) \\ \Delta_{\sigma_i} = \alpha (r-b) \frac{(\theta_i - \mu_i)^2 - \sigma_i^2}{\sigma_i}\]

…(11)

2.3 对称采样(Symmetric sampling)

对于大多数场景,使用一个baseline采样很高效、并且是合理准确的,但它具有一些缺点。特别的,如果reward分布是非常倾斜的,那么在sample reward和baseline reward间的对比会误导向。一个更健壮的梯度近似法:可以通过测量在在当前均值两侧的两个symmetric samples间的reward差异来发现。

也就是说,我们:

  • 选择一个来自分布\(N(0, \sigma)\)的扰动(perturbation)\(\epsilon\)
  • 接着创建symmetric参数样本:\(\theta^+ = \mu + \epsilon\)和\(\theta^- = \mu - \epsilon\)
  • 定义:\(r^+\)为在给定\(\theta^+\)下的reward;\(r^-\)为给定\(\theta^-\)下的reward

我们可以将两个样本插入到等式(9)中,并利用等式(10)来获取:

\[\nabla_{\mu_i} J(\rho) \approx \frac{\epsilon_i (r^+ - r^-)}{2\sigma_i^2}\]

…(12)

它会对在有限差分法( finite difference methods)中使用的中心差分近似法(central difference approximation)进行重新组装。如同之前一样使用相同的step sizes,对于\(\mu\)项给出以下的更新公式:

\[\Delta \mu_i = \frac{\alpha \epsilon_i(r^+ - r^-)}{2}\]

…(13)

对于标准差来说,该更新会更关系密切些。由于\(\theta^+\)和\(\theta^-\)是在一个定给\(\sigma\)下通过相同概率构建得到,在它们间的difference不能被用来估计\(\sigma\) gradient。作为替代,我们会采用两个rewards的均值\(\frac{r^+ + r^-}{2}\),并将它对比baseline reward b。该方法会生成:

\[\Delta \sigma_i = \alpha (\frac{r^+ + r^-}{2} - b)(\frac{\epsilon_i^2 - \sigma_i^2}{\sigma_i})\]

…(14)

对比起第2.2节中的方法,symmetric sampling可以消除误导baseline的问题,因此,提升\(\mu\) gradient estimates。它也可以提升\(\sigma\) gradient estimates,因此,两个样本在当前概率下等概率,因此可以互相增强作为修改\(\sigma\)的受益的predictors。尽管symmetric sampling需要在每次update时有两倍的histories,我们的实验表明:它可以在收敛质量和时间上给出一个很好的提升

作为一个最终refinement,我们会通过引入一个normalization term,让step size与rewards的规模(可能未知)独立。假设:如果已知,m是agent可以接受到的最大reward;或者未知,则是至今接收到的最大reward。我们通过将它们除以在m和对称样本的平均reward间的difference归一化\(\mu\) updates;我们则通过除以在m和baseline b间的differnece来归一化\(\sigma\) updates。给定:

\[\Delta_{\mu_i} = \frac{\alpha \epsilon_i(r^+ - r^-)}{2m - r^+ - r^-} \\ \Delta_{\sigma_i} = \frac{\alpha}{m-b}(\frac{(r^+ + r^-)}{2} - b)(\frac{\epsilon^2 - \sigma_i^2}{\sigma_i})\]

…(15)

PGPE的伪代码如算法1所示。注意:出于简洁,reward normalizeation项已经被忽略。

图片名称

算法1

#