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

摘要

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

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

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

1.介绍

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

图片名称

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

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

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

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

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

2.背景

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

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

…(1)

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

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

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

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

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

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

3.方法

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

3.1 Contrastive Training

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

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

…(2)

其中:

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

…(3)

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

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

…(4)

其中:

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

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

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

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

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

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

…(5)

其中:

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

在公式(5)中,

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

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

其它

#

摘要

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

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

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

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

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

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

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

1.介绍

。。。

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

。。。

3.CDN(Cross Decoupling Network)

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

图片名称

图2 Cross Decoupling Network (CDN)

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

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

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

3.1 Item Memorization 和 Generalization Decoupling

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

3.1.1 用于memorization和generalization的features

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

Memorization features

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

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

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

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

Generalization features

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

3.1.2 Item representation learning

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

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

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

…(3)

其中:

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

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

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

3.2 User Sample Decoupling

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

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

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

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

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

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

…(4)

其中:

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

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

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

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

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

3.3 Cross Learning

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

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

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

predicted logit可以被公式化为:

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

…(5)

其中:

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

…(6)

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

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

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

…(7)

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

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

…(8)

其中:

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

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

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

…(9)

以便获得在softmax中的logits。

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

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

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

#

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

#