weibo在《MaskNet: Introducing Feature-Wise Multiplication to CTR Ranking Models by Instance-Guided Mask》中抽出了MaskNet。

摘要

点击率(CTR)预估已成为许多现实世界应用中最基本的任务之一,对于排序模型来说,有效捕捉复杂的高阶特征非常重要。浅层前馈网络在许多最先进的深度神经网络(DNN)模型中被广泛使用,例如FNN、DeepFM和xDeepFM,以隐式捕捉高阶特征交互。然而,一些研究已经证明,成瘾性特征交互(addictive feature interaction),特别是前馈神经网络,在捕捉常见特征交互方面是低效的。

为了解决这个问题,我们通过提出实例引导掩码(instance-guided mask),它引入了特定的乘法操作到DNN排序系统中,该掩码在特征嵌入和前馈层上执行逐元素乘积(element-wise product),由输入实例引导。

我们还通过在本文中提出MaskBlock,将DNN模型中的前馈层转变为成瘾性(addictive)和乘法特征交互的混合体。MaskBlock结合了层归一化(layer normalization)、实例引导掩码(instance-guided mask)和前馈层,并且是设计新排序模型的基本构建块,可在不同配置下使用。本文中由MaskBlock组成的模型称为MaskNet,提出了两种新的MaskNet模型,以展示MaskBlock作为组成高性能排序系统的基本构建块的有效性。

在三个真实世界数据集上的实验结果表明,我们提出的MaskNet模型显著优于DeepFM和xDeepFM等最先进的模型,这意味着MaskBlock是组成新的高性能排序系统的有效基本构建单元。

1 引言

点击率(CTR)预测是预测用户点击推荐item的概率。它在个性化广告和推荐系统中扮演着重要角色。许多模型已被提出来解决这个问题,例如逻辑回归(LR)[16]、多项式-2(Poly2)[17]、基于树的模型[7]、基于张量的模型[12]、贝叶斯模型[5]和领域感知分解机(FFMs)[11]。近年来,使用深度神经网络(DNN)进行CTR估计也成为该领域的研究趋势,一些基于深度学习的模型被引入,如分解机支持的神经网络(FNN)[24]、注意力分解机(AFM)[3]、宽与深(W&D)[22]、DeepFM[6]、xDeepFM[13]等。

特征交叉对于CTR任务至关重要,对于排序模型来说,有效捕捉这些复杂特征非常重要。大多数DNN排序模型,如FNN、W&D、DeepFM和xDeepFM,使用浅层MLP层以隐式方式建模高阶交互,并且它是当前最先进的排序系统的重要组成部分。

然而,Alex Beutel等人[2]已经证明,成瘾性特征交互,特别是前馈神经网络,在捕捉常见特征交叉方面是低效的。他们提出了一种简单但有效的方法,称为”隐式交叉(latent cross)“,这是RNN模型中上下文嵌入和神经网络隐藏状态之间的一种乘法交叉。最近,Rendle等人的工作[18]也表明,一个精心配置的点积基线在协同过滤中大大优于MLP层。虽然MLP理论上可以近似任何函数,但他们表明,使用MLP学习点积并非易事,并且对于一个相当大的嵌入维度,以高准确度学习点积需要大量的模型容量和许多训练数据。他们的工作还证明了MLP层在建模复杂特征交互方面的低效性

受到”隐式交叉”[2]和Rendle的工作[18]的启发,我们关注以下问题:我们能否通过引入特定的乘法操作来改进DNN排序系统,使其有效地捕捉复杂的特征交互?

为了克服前馈层捕捉复杂特征交叉的低效性问题,我们在本文中引入了一种特殊的乘法操作到DNN排序系统中。首先,我们提出了一个实例引导掩码,在特征嵌入和前馈层上执行逐元素乘(element-wise product)。实例引导掩码利用从输入实例收集的全局信息,以统一的方式动态突出特征嵌入和隐藏层中的信息元素。

采用实例引导掩码有两个主要优点:

  • 首先,掩码和隐藏层或特征嵌入层之间的逐元素乘积以统一的方式将乘法操作引入DNN排序系统,更有效地捕捉复杂特征交叉。
  • 其次,这是一种由输入实例引导的细粒度位级注意力(finegained b bitwise attention),既可以减弱特征嵌入和MLP层中的噪声影响,同时突出DNN排序系统中的信息信号。

通过结合实例引导掩码、前馈层和层归一化(layer norm),我们提出了MaskBlock,将通常使用的前馈层转变为成瘾性和乘法特征交互的混合体。

  • 实例引导掩码(instance-guided mask)引入了乘法交叉,
  • 前馈层(feed-forward layers)聚合了掩蔽信息,以更好地捕捉重要的特征交互
  • 层归一化(layer normalization)可以简化网络的优化

MaskBlock可以被视为在某些配置下设计新排序模型的基本构建块。本文中由MaskBlock组成的模型称为MaskNet,提出了两种新的MaskNet模型,以展示MaskBlock作为组成高性能排序系统的基本构建块的有效性。

我们工作的成果总结如下:

  • (1) 在这项工作中,我们提出了一个实例引导掩码,在DNN模型的特征嵌入和前馈层上执行逐元素乘积。实例引导掩码中包含的全局上下文信息被动态地整合到特征嵌入和前馈层中,以突出重要元素。
  • (2) 我们提出了一个名为MaskBlock的基本构建块,它由三个关键组件组成:实例引导掩码、前馈层和层归一化模块。通过这种方式,我们将标准DNN模型中广泛使用的前馈层转变为成瘾性和乘法特征交互的混合体。
  • (3) 我们还提出了一个新的排序框架,名为MaskNet,利用MaskBlock作为基本构建单元来组成新的排序系统。更具体地说,本文设计了基于MaskBlock的串行MaskNet模型和并行MaskNet模型。串行排序模型逐块堆叠MaskBlock,而并行排序模型在共享特征嵌入层上并行放置多个MaskBlocks。
  • (4) 在三个真实世界数据集上进行了广泛的实验,实验结果表明我们提出的两个MaskNet模型显著优于现有最先进模型。结果暗示MaskBlock确实通过实例引导掩码将乘法操作引入DNN模型,从而增强了DNN模型捕捉复杂特征交互的能力。

本文的其余部分组织如下。第2节介绍了与我们提出的模型相关的一些相关工作。第3节详细介绍了我们提出的模型。第4节展示了三个真实世界数据集上的实验结果并进行了讨论。第5节总结了本文的工作。

2.相关工作

3 我们提出的模型

在本节中,我们首先描述特征嵌入层。然后,将介绍我们提出的实例引导掩码、MaskBlock和MaskNet结构的细节。最后,将介绍作为损失函数的对数损失函数(log loss)。

3.1 嵌入层

CTR任务的输入数据通常包括稀疏和密集特征,其中稀疏特征大多是分类类型。这些特征被编码为one-hot向量,这通常会导致对于大词汇量来说特征空间维度过高。解决这个问题的常见方法是引入嵌入层。通常,稀疏输入可以表述为:

\[x = [x_1, x_2, ..., x_f] \quad (1)\]

其中:

  • f表示fields的数量
  • $ x_i \in \mathbb{R}^n $ 表示一个具有n个特征的categorical field的one-hot向量;对于一个numerical field,它是只有一个值的向量

我们可以通过以下方式为one-hot向量$x_i$获得特征嵌入$e_i$:

\[e_i = W_e x_i \quad (2)\]

其中:

  • $W_e \in \mathbb{R}^{k \times n} $ 是n个特征的嵌入矩阵,k是字段嵌入的维度。

数值特征 $x_j$ 也可以通过以下方式转换到相同的低维空间:

\[e_j = V_j x_j \quad (3)\]

其中:

  • $ V_j \in \mathbb{R}^k $是对应字段嵌入,大小为k。

通过上述方法,嵌入层应用于原始特征输入,将其压缩到低维、dense的实值向量。嵌入层的结果是宽连接向量:

\[V_{emb} = \text{concat}(e_1, e_2, ..., e_i, ..., e_f) \quad (4)\]

其中:

  • f 表示fields数量
  • $ e_i \in \mathbb{R}^k $表示一个字段的嵌入。

尽管输入实例的特征长度可能不同,但它们的嵌入长度相同,为$ f \times k $,其中k是字段嵌入的维度。

我们使用实例引导掩码将乘法操作引入DNN排序系统,这里的所谓”实例”在本文的后续部分指的是当前输入实例的特征嵌入层。

3.2 实例引导掩码

我们通过实例引导掩码从输入实例中收集全局信息,以动态突出特征嵌入(feature embedding)和前馈层(feed-forward layer)中的有信息的元素。对于特征嵌入,掩码强调具有更多信息的关键元素,以有效表示这一特征。对于隐藏层中的神经元,掩码通过考虑输入实例中的上下文信息,帮助重要的特征交互脱颖而出。除了这一优势外,实例引导掩码还将乘法操作引入DNN排序系统,以更高效地捕获复杂的特征交叉。

如图1所示,实例引导掩码中使用了两个具有恒等函数的全连接(FC)层。请注意,实例引导掩码的输入始终来自输入实例,也就是说,来自特征嵌入层。

图片名称

图1 Instance-Guided Mask的网络结构

第一层FC层称为“聚合层”,与第二层FC层相比,它是一个相对更宽的层,以便更好地收集输入实例中的全局上下文信息。聚合层有参数 $W_{d1}$,这里d表示第d个掩码。对于特征嵌入和不同的MLP层,我们采用具有其参数的不同实例引导掩码,以从输入实例中学习捕获每层的各种信息。

第二层FC层称为“投影层”,它将维度降低到与特征嵌入层$ V_{emb}$ 或隐藏层$V_{hid}$相同的大小,参数为$W_{d2}$。形式上,

\[V_{mask} = W_{d2}(\text{ReLU}(W_{d1} V_{emb} + \beta_{d1})) + \beta_{d2} \quad (5)\]

其中:

  • $ V_{emb} \in \mathbb{R}^{m=f \times k} $:指的是输入实例的嵌入层
  • $ W_{d1} \in \mathbb{R}^{t \times m}$ 和 $ W_{d2} \in \mathbb{R}^{z \times t}$ 是实例引导掩码的参数,
  • t和 z分别表示聚合层和投影层的神经元数量,
  • f表示字段数量,
  • k是字段嵌入的维度。
  • $ \beta_{d1} \in \mathbb{R}^{t \times m} $ 和 $ \beta_{d2} \in \mathbb{R}^{z \times t} $是两个FC层的学习偏置。

请注意,聚合层通常比投影层宽,因为投影层的大小需要与特征嵌入层或MLP层的大小相等。因此,我们定义了大小 $ r = t/z $ 作为缩减比率,这是一个超参数,用于控制两层神经元数量的比率。

逐元素乘积在此工作中被用来将实例引导掩码聚合的全局上下文信息整合到特征嵌入或隐藏层,如下所示:

\(V_{mask_{emb}} = V_{mask} \odot V_{emb} \\ V_{mask_{hid}} = V_{mask} \odot V_{hid}\) …(6)

其中:

  • $ V_{emb} $ 表示嵌入层
  • $ V_{hid} $ 表示DNN模型中的前馈层
  • $ \odot $ 表示两个向量之间的逐元素乘积,

如下所示:

\[V_i \odot V_j = [V_{i1} \cdot V_{j1}, V_{i2} \cdot V_{j2}, ..., V_{iu} \cdot V_{ju}] (7)\]

这里:

  • u 是向量 $V_i$ 和 $ V_j$的大小。

实例引导掩码可以被看作是一种特殊类型的位级注意力或门控机制,它使用输入实例中包含的全局上下文信息来指导训练期间的参数优化。$ V_{mask}$ 中的较大值意味着模型动态识别特征嵌入或隐藏层中的一个重要元素。它被用来增强向量 $ V_{emb}$ 或 $ V_{hid} $ 中的元素。相反,$ V_{mask} $中的较小值将通过减少对应向量 $ V_{emb} $或 $ V_{hid}$中的值来抑制信息较少的元素甚至噪声。

采用实例引导掩码的两个主要优点是:

  • 首先,掩码和隐藏层或特征嵌入层之间的逐元素乘积以统一的方式将乘法操作引入DNN排序系统,更有效地捕捉复杂特征交互。
  • 其次,这种由输入实例引导的细粒度位级注意力可以同时减弱特征嵌入和MLP层中的噪声影响,同时突出DNN排序系统中的信息信号。

3.3 掩码块

为了解决前馈层在深度神经网络(DNN)模型中捕捉复杂特征交互的效率问题,我们在这项工作中提出了一个名为掩码块(MaskBlock)的基本构建模块,用于DNN排序系统,如图2和图3所示。所提出的掩码块由三个关键组件组成:层归一化模块、实例引导掩码和前馈隐藏层。层归一化可以简化网络的优化。实例引导掩码为标准DNN模型的前馈层引入了乘法交互,并使前馈隐藏层聚合掩码信息,以更好地捕捉重要的特征交互。通过这种方式,我们将标准DNN模型中广泛使用的前馈层转变为一种成瘾性和乘法特征交互的混合体。

图片名称

图2

首先,我们简要回顾一下层归一化(LayerNorm)的公式。

层归一化

通常,归一化的目的是确保信号在通过网络传播时具有零均值和单位方差,以减少“协变量偏移”[10]。例如,层归一化(Layer Norm或LN)[1]被提出以简化循环神经网络的优化。具体来说,设 $ \mathbf{x} = (x_1, x_2, …, x_H) $ 表示大小为 H 的输入向量到归一化层。层归一化将输入 $ \mathbf{x} $ 重新中心化和重新缩放,公式如下: \(h = g \odot \mathcal{N}(x) + b, \quad \mathcal{N}(x) = \frac{x - \mu}{\delta}, \\ \mu = \frac{1}{H} \sum_{i=1}^{H} x_i, \quad \delta = \sqrt{\frac{1}{H} \sum_{i=1}^{H} (x_i - \mu)^2}\)

其中:

  • h是层归一化层的输出。
  • $\odot$是逐元素乘法操作。
  • $\mu$ 和 $\delta$ 分别是输入的均值和标准差。
  • 偏置b和增益g是具有相同维度H的参数。

作为掩码块(MaskBlock)的关键组件之一,层归一化可以应用于特征嵌入和前馈层。对于特征嵌入层,我们将每个特征的嵌入视为一个层,以如下方式计算LN的均值、标准差、偏置和增益:

\(\text{LN}_{\text{EMB}}(V_{\text{emb}}) = \text{concat} \left( \text{LN}(e_1), \text{LN}(e_2), ..., \text{LN}(e_i), ..., \text{LN}(e_f) \right)\) …(9)

对于DNN模型中的前馈层,LN的统计数据是在相应隐藏层中包含的神经元之间估计的,如下所示:

\[\text{LN}_{\text{HID}}(V_{\text{hidden}}) = \text{ReLU}(\text{LN}(W_i X))\]

其中:

  • $X \in \mathbb{R}^t$ 指的是前馈层的输入
  • $W_i \in \mathbb{R}^{m \times t}$ 是层的参数,
  • t和m分别表示输入层的大小和前馈层的神经元数量。

请注意,我们在多层感知器(MLP)上有两处可以放置归一化操作:一处是在非线性操作之前,另一处是在非线性操作之后。我们发现,在非线性之前进行归一化的性能始终优于在非线性之后进行归一化的性能。因此,在我们的论文中,MLP部分使用的所有归一化都放在非线性操作之前,如公式(4)所示。

特征嵌入上的掩码块

我们通过结合三个关键元素:层归一化、实例引导掩码和随后的前馈层,提出了掩码块。掩码块可以堆叠形成更深的网络。根据每个掩码块的不同输入,我们有两种掩码块:特征嵌入上的掩码块和掩码块上的掩码块。我们将首先介绍本小节中图2所示的特征嵌入上的掩码块。

特征嵌入 $ V_{\text{emb}} $ 是特征嵌入上掩码块的唯一输入。在对嵌入 $ V_{\text{emb}} $ 进行层归一化操作后,掩码块利用实例引导掩码通过逐元素乘法突出显示 $ V_{\text{emb}} $ 中的信息元素,形式上表示为:

\[V_{\text{maskedEmb}} = V_{\text{mask}} \odot \text{LN}_{\text{EMB}}(V_{\text{emb}})\]

其中:

  • $\odot$ 表示实例引导掩码和归一化向量 $ \text{LN}{\text{EMB}}(V{\text{emb}}) $ 之间的逐元素乘法,
  • $ V_{\text{maskedEmb}} $表示掩码特征嵌入。

请注意,实例引导掩码 $ V_{\text{mask}} $ 的输入也是特征嵌入 $ V_{\text{emb}} $。

我们引入了一个前馈隐藏层以及随后的层归一化操作到掩码块中,通过归一化的非线性变换更好地聚合掩码信息。掩码块的输出可以按以下方式计算:

\[V_{\text{out}} = \text{LN}_{\text{HID}}(W_i V_{\text{maskedEmb}}) = \text{ReLU}(\text{LN}(W_i (V_{\text{mask}} \odot \text{LN}_{\text{EMB}}(V_{\text{emb}})))))\]

其中:

  • $ W_i \in \mathbb{R}^{q \times n} $ 是第 i 个掩码块中前馈层的参数,
  • n表示 $ V_{\text{maskedEmb}} $ 的大小,
  • q表示前馈层的神经元数量。

实例引导掩码将逐元素乘法引入特征嵌入中,作为一种细粒度的注意力机制,而特征嵌入和隐藏层上的归一化都简化了网络优化。掩码块中的这些关键组件帮助前馈层更有效地捕获复杂的特征交叉。

掩码块上的掩码块

图片名称

图3

在这一部分,我们将介绍如图3所示的掩码块上的掩码块。这种掩码块有两种不同的输入:

  • 特征嵌入 $ V_{\text{emb}} $
  • 前一个掩码块的输出 $ V_{\text{out}}^{(p)} $

这种掩码块的实例引导掩码的输入始终是特征嵌入 $V_{\text{emb}}$。掩码块利用实例引导掩码通过逐元素乘法突出前一个掩码块输出 $ V_{\text{out}}^{(p)} $中的重要特征交互,形式上表示为:

\[V_{\text{maskedHid}} = V_{\text{mask}} \odot V_{\text{out}}^{(p)}\]

其中:

  • $ \odot $ 表示实例引导掩码 $ V_{\text{mask}} $ 和前一个掩码块的输出 $ V_{\text{out}}^{(p)} $ 之间的逐元素乘法
  • $ V_{\text{maskedHid}} $ 表示掩码隐藏层。

为了更好地捕获重要的特征交互,掩码块中又引入了另一个前馈隐藏层以及随后的层归一化。通过这种方式,我们将标准DNN模型中广泛使用的前馈层转变为一种成瘾性和乘法特征交互的混合体,以避免那些成瘾性特征交叉模型的无效性。掩码块的输出可以按以下方式计算:

\(V_{\text{out}} = \text{LN}_{\text{HID}}(W_i V_{\text{maskedHid}}) = \text{ReLU}(\text{LN}(W_i (V_{\text{mask}} \odot V_{\text{out}}^{(p)}))))\) …(14)

3.4 掩码网络(MaskNet)

基于掩码块(MaskBlock),根据不同的配置,可以设计出各种新的排序模型。由掩码块组成的排序模型在这项工作中被称为掩码网络(MaskNet)。我们还提出了两种使用掩码块作为基本构建模块的掩码网络模型。

序列掩码网络(Serial MaskNet)

我们可以将一个掩码块堆叠在另一个掩码块之后来构建排序系统,如图4左侧模型所示。第一个块是特征嵌入上的掩码块,所有其他块都是掩码块上的掩码块,形成更深的网络。预测层放置在最终掩码块的输出向量上。我们在论文中将这种序列配置下的掩码网络称为序列掩码网络(SerMaskNet)。每个掩码块中实例引导掩码的所有输入都来自特征嵌入层 $ V_{\text{emb}} $,这使得序列掩码网络模型看起来像是一个在每个时间步共享输入的RNN模型。

并行掩码网络(Parallel MaskNet)

我们提出另一种掩码网络,通过在共享的特征嵌入层上并行放置几个掩码块,如图4右侧模型所示。在这种配置下,每个块的输入仅是共享的特征嵌入 $ V_{\text{emb}} $。我们可以将这种排序模型视为像MMoE[15]那样由多个专家混合而成。每个掩码块关注特定类型的重要特征或特征交互。我们通过连接每个掩码块的输出来收集每个专家的信息,如下所示:

\(V_{\text{merge}} = \text{concatenate}(V_{\text{out},1}, V_{\text{out},2}, ..., V_{\text{out},i}, ..., V_{\text{out},u})\) …(14)

其中:

  • $ V_{\text{out},i} \in \mathbb{R}^q $ 是第i个掩码块的输出
  • q表示掩码块中前馈层的神经元数量
  • u是掩码块的数量。

为了进一步合并每个专家捕获的特征交互,多个前馈层堆叠在连接信息 $ V_{\text{merge}} $上。设 $ H_0 = V_{\text{merge}} $ 表示连接层的输出,然后 $H_0$ 被送入深度神经网络,前馈过程为:

\(H_l = \text{ReLU}(W_l H_{l-1} + \beta_l)\) …(16)

其中:

  • l是深度,
  • ReLU是激活函数。
  • $ W_l$,$ \beta_l $,$ H_l $ 分别是第l层的模型权重、偏置和输出。预测层放置在多个前馈网络的最后一层。

在本文的后续部分,我们称这个版本的掩码网络为“并行掩码网络”(ParaMaskNet)。

3.5 预测层

总结来说,我们给出了我们提出的模型输出的总体公式如下:

\(\hat{y} = \delta(w_0 + \sum_{i=1}^{n} w_i x_i)\) …(17)

其中:

  • $ \hat{y} \in (0, 1) $ 是预测的点击率(CTR)值,
  • $ \delta $ 是Sigmoid函数,
  • $ n $ 是最后一个掩码块的输出大小(序列掩码网络SerMaskNet)或前馈层(并行掩码网络ParaMaskNet),
  • $ x_i $ 是前馈层的位值,
  • $ w_i $ 是每个位值学习到的权重。

对于二元分类,损失函数是日志损失:

\(L = -\frac{1}{N} \sum_{i=1}^{N} y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i)\) …(18)

其中:

  • $ N $ 是训练实例的总数,
  • $y_i$ 是第i个实例的真实标签,
  • $\hat{y}_i $是预测的CTR。

优化过程是最小化以下目标函数:

\[\mathcal{E} = L + \lambda \| \Theta \|\]

其中:

  • $ \lambda $ 表示正则化项,
  • $ \Theta $ 表示参数集,包括特征嵌入矩阵中的参数、实例引导掩码矩阵中的参数、掩码块中的前馈层参数,以及预测部分的参数。

  • 1.https://arxiv.org/pdf/2102.07619

阿里在《Asymptotically Unbiased Estimation for Delayed Feedback Modeling via Label Correction》提出一种通过 Label Correction的方式对Delayed Feedback Modeling的渐近无偏估计建模:Defuse。

摘要

缓解延迟反馈问题是在线广告转化率(CVR)预测中至关重要的一环。以往的延迟反馈建模方法使用一个观察窗口(observation window)来平衡等待准确标签和利用新鲜反馈之间的权衡。此外,为了在观察到的但有偏的分布中估计CVR,广泛使用重要性采样来减少分布偏差。虽然有效,但我们认为以往的方法在重要性加权过程中错误地将假负样本视为真实负样本,并且没有充分利用观察到的正样本,导致性能次优。

在这项工作中,我们提出了一种新的方法,即带有无偏估计的延迟反馈建模(DEFUSE),旨在更细致地分别校正即时正样本、假负样本、真实负样本和延迟正样本的重要性权重。具体来说,我们提出了一种两步优化方法:

  • 首先在应用重要性采样之前推断观察到的负样本中假负样本的概率
  • 为了充分利用观察到的分布中的真即时正样本,我们进一步开发了一个双分布建模框架,联合建模无偏即时正样本和有偏延迟转化。

实验结果在公共和我们的工业数据集上验证了DEFUSE的优越性。代码可在 https://github.com/ychen216/DEFUSE.git 获取。

1.引言

在线广告已成为智能电子商务的主要商业模式,帮助广告商锁定潜在客户[3, 4, 14]。一般来说,每次行动成本(CPA)和每次点击成本(CPC)是两种广泛使用的支付选项,它们直接影响平台的收入和所有广告商的投资回报率(ROI)。作为两种定价竞价的基本部分,转化率(CVR)预测,专注于以ROI为导向的优化,始终是一个不可替代的组成部分,以确保一个健康的广告平台[12]。

流式学习(streaming learning)作为一种广泛使用的训练框架,会根据实时反馈不断微调模型,已在点击率(CTR)预测任务中显示出有希望的性能[13, 18, 21, 22]。然而,如表1所示,由于CVR预测普遍存在的延迟和长尾转化反馈,通过流式学习实现更好的结果并非易事。更具体地说,如图1所示,发生在时间 $ t_0 $ 的点击需要等待足够长的归因窗口 $ w_a $ 才能确定其实际label——只有在 $ t_0 + w_a $ 之前转化的样本才被标记为正样本。通常,不同商业场景中 $ w_a $ 的设置范围从一天到几周不等。问题在于,即使是一天这样短的归因窗口也太长,无法确保样本的新鲜度,这仍然是实现有效的流式CVR预测的主要障碍。

图片名称

图1 不同标签类型的说明。观察窗口 $ w_0 $表示点击时间和流式训练时间之间最小的时间间隔;而归因窗口 $ w_a $ 决定了实际的标签。

为了解决这一挑战,现有的努力集中在引入一个更短的观察窗口 $ w_o $,例如30分钟,允许在 $ t_0 + w_o $ 之后立即收集有观察到标签的点击并将其分发到训练流程中。优化 $ w_o $ 提供了利用更多新鲜样本和接受不太准确标签之间的权衡能力。这极大地提高了样本的新鲜度,同时在观察窗口内可接受地覆盖了转化,代价是暂时将长时间延迟的反馈标记为假负样本。因此,当前的工作主要集中在对观察到的但有偏的分布中的假负样本进行CVR估计。

由于使用标准的二元分类损失(例如交叉熵)很难实现无偏估计,当前的努力实施各种辅助任务来模拟转化延迟,以减轻由假负样本引起的偏差。早期方法[2, 29]尝试通过联合优化CVR预测与一个预测延迟时间 $ d $ 的延迟模型来解决延迟反馈问题,假设从延迟分布中。然而,这些方法直接在有偏的观察分布上进行训练,并且没有充分利用稀有且稀疏的延迟正反馈。意识到这些缺点后,最近的研究主要关注在转化发生时将延迟转化重新用作正样本。设计了各种样本复制机制来充分利用每次转化。例如:

  • FNC/FNW[10]:将 $ w_o $ 设置为0,并在转化到达时重新发送所有正样本。
  • ES-DFM[27]:仅复制之前被错误标记为假负样本的延迟正样本;
  • DEFER[5]:重新利用所有在完成标签归因后具有实际label的样本,以保持特征分布的平等,并利用真实的负样本。此外,为了弥合分布偏差,采用重要性采样[1]来纠正真实情况与观察到的但有偏的分布之间的差异。

尽管有效,我们认为当前方法仍存在一些限制。首先,它们主要侧重于设计适当的训练流程以减少特征空间中的偏差,并通过重要性采样仅对观察到的正样本和负样本的损失进行加权。问题是,观察到的负样本可能是假负样本,这些方法错误地将它们视为真实负样本,导致次优性能。其次,观察到的正样本可以进一步细分为即时正样本(IP)延迟正样本(DP),这意味着两个潜在的改进:

  • (1)直观上,由于复制,IP和DP对CVR模型的贡献不同。
  • (2)通过排除DP,可以基于与实际IP分布一致的观察数据集直接建立IP预测的无偏估计。

在本文中,我们提出了一种用于流式CVR预测的带有无偏估计的延迟反馈建模(DEFUSE),它研究了假负样本的影响,并充分利用了DP在重要性采样上的作用。与以往仅对观察到的正样本和负样本进行建模的方法不同,我们正式将样本识别为四种类型,即即时正样本(IP)、假负样本(FN)、真实负样本(RN)和延迟正样本(DP)。

由于在观察到的负样本中采用了FN,我们提出了一个两步优化方法,首先在对每种类型的样本进行重要性采样之前,推断观察到的负样本是假负样本的概率,然后通过重要性采样进行无偏CVR预测。此外,我们设计了一个双分布框架,充分利用即时正样本。全面的实验表明DEFUSE在公共和工业数据集上都比最先进的方法表现更好。

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

  • 我们强调了以更细粒度划分观察样本的重要性,这对于准确的的重要性采样建模至关重要。
  • 我们提出了一种无偏重要性采样方法DEFUSE,并采用两步优化来解决延迟反馈问题。此外,我们在流式学习中实现了双分布建模框架,充分利用即时正样本。
  • 我们在公共和工业数据集上进行了广泛的实验,证明了我们的DEFUSE的最先进的性能。

2.相关工作

2.1 延迟反馈模型

在预测转化率(CVR)的研究中,学习延迟反馈已经受到了相当大的关注。Chapelle [2] 假设延迟分布是指数的,并提出了两个广义线性模型,分别用于预测CVR和延迟时间。然而,这种强假设可能在实践中难以模拟延迟分布。为了解决这个问题,[29] 提出了一种非参数延迟反馈模型用于CVR预测,该模型利用核密度估计并将多个高斯分布结合起来近似实际的延迟分布。此外,一些近期的工作[23, 25] 通过按天slot离散化延迟时间,实现了对延迟反馈问题的细粒度生存分析。然而,上述方法的一个显著缺点是它们都只尝试优化观察到的转化信息,而不是实际的延迟转化,这无法充分利用稀疏的正反馈。

2.2 无偏CVR估计

与以前的方法不同,当前的主流方法采用重要性采样方法来估计真实的期望 $ w_{\text{r}} $。Ktena 等人 [10] 假设所有样本最初都被标记为负样本,然后在它们转化时复制带有正标签的样本并将它们引入训练流程。为了进一步从有偏分布中建模CVR预测,他们提出了两种假负样本加权(FNW)和假负样本校准(FNC),利用重要性采样[1]。然而,它只关注样本的及时性,忽略了标签的准确性。为了解决这个问题,ES-DFM [12] 引入了一个观察窗口来研究在窗口内等待更准确标签与利用窗口外更新鲜训练数据之间的权衡。Gu 等人 [5] 进一步复制观察窗口中的真实负样本和稀疏正样本,以消除通过复制延迟正样本引入的特征分布偏差。

2.3 延迟摇臂赌博机

延迟反馈在摇臂赌博机方法中引起了很多关注[17, 20, 20]。以前的方法是将延迟反馈建模视为一个顺序决策问题,并最大化长期奖励[6, 8, 24]。Joulani 等人 [8] 提供了将为非延迟开发的算法转换为延迟的元算法,并分析了延迟反馈在流式学习问题中的影响。[24] 提供了一个随机延迟摇臂赌博机模型,并在已知延迟分布的假设下证明了在审查和未审查设置下的算法。[6] 试图检查连续动作空间中的摇臂赌博机流式学习,并引入了一个带有延迟奖励和摇臂赌博机反馈的无梯度学习策略。

3 预备知识

在本节中,我们首先阐述带有延迟反馈的流式CVR预测问题。然后,我们简要介绍以前方法中使用的标准重要性采样算法。本文中使用的所有符号在表2中进行了总结。

3.1 问题阐述

在标准的CVR预测任务中,输入可以正式定义为 $ (x, y) \sim p(x, y) $,其中:

  • $x$ 表示特征,$ y \in \lbrace 0, 1 \rbrace $ 是转化标签

一个通用的CVR预测模型的目标是:通过优化以下理想的损失来学习二元分类器函数 $f$ 的参数 $\theta$:

\[L_{\text{ideal}} = \mathbb{E}_{(x, y) \sim p} \left[ \ell(y, f_{\theta}(x)) \right]\]

…(1)

其中:

  • $ (x, y) $ 是从真实分布 $ p(x, y) $ 中抽取的训练样本,
  • $ \ell $ 表示分类损失,例如广泛使用的交叉熵损失。

然而,如上所述,由于引入了观察窗口,发生在观察窗口之外的转化点击将首先被视为假负样本。因此,观察分布 $ q(x, y) $ 总是与真实分布 $ p(x, y) $ 有偏。

更具体地说,如图1所示,在在线广告系统中有四种类型的样本:

  • 即时正样本(IP),例如 $ d < w_o $。在观察窗口内转化的样本被标记为即时正样本。
  • 假负样本(FN),例如 $ w_o < d < w_a $。假负样本指的是由于延迟转化而在训练时被错误标记为负的样本。
  • 真实负样本(RN),例如 $ d > w_a $ 或 $ d = \infty $。在等待足够长的归因窗口 $ w_a $ 后仍未转化的样本被标记为真实负样本。
  • 延迟正样本(DP)。这些样本在转化时被复制,并带有正标签被引入到训练流程中。

3.2 重要性采样

重要性采样已经在许多近期任务中得到了广泛的研究和应用,例如反事实学习[26]和无偏估计[5, 27]。通常,以前的方法使用重要性采样来估计从观察到的分布中训练损失的期望,并重新编写理想的CVR损失函数如下:

\[L = \mathbb{E}_{(x, y) \sim p} \left[ \ell(y, f_{\theta}(x)) \right] \\ = \mathbb{E}_{(x, y) \sim q} \left[ w(x, y) \ell(y, f_{\theta}(x)) \right]\]

…(2)(3)

其中:

  • $ f_{\theta} $ 是追求无偏CVR预测的期望CVR模型
  • $ p(x, y) $ 和 $ q(x, y) $ 分别表示真实情况和观察到的及复制的分布的联合密度函数,
  • $ w(x, y) $ 是由重要性采样引入的真实情况分布相对于观察到的及复制的分布的似然比率,追求无偏的 $ f^*_{\theta}(x) $。

目前,通过假设或确保 $ p(x) \approx q(x) $ 并精心设计样本复制机制,所有发布的方法[5, 10, 27]都应用了首次在[10]中发表的 $ w(x, y) $ 的公式推导,如下所示:

\[L = \mathbb{E}_{(x,y) \sim q(x,y)} \left[ w(x, y) \ell(y, f_{\theta}(x)) \right] \\ = \int q(x) dx \int \frac{q(y | x)}{p(x, y)} \ell(x, y; f_{\theta}(x)) dy \\ = \int \frac{q(x)}{p(x)} dx \int \frac{q(y | x)}{q(y | x)} \ell(x, y; f_{\theta}(x)) dy \\ \approx \int q(x) dx \int \frac{p(y | x)}{q(y | x)} \ell(x, y; f_{\theta}(x)) dy \\ \approx \sum_{(x_i, y_i) \in D} \left[ y_i \frac{p(y_i = 1 | x_i)}{q(y_i = 1 | x_i)} \log f_{\theta}(x_i) + (1 - y_i) \frac{p(y_i = 0 | x_i)}{q(y_i = 0 | x_i)} \log (1 - f_{\theta}(x_i)) \right],\]

…(4)(5)(6)(7)(8)

其中 D 是观察到的数据集。这些发布方法之间的差异主要在于:

  • 不同的训练流程设计,例如 $ w_o $ 的选择和图 2 所示的复制样本的定义,这最终导致了 $ q(y \mid x) $ 的不同公式。
  • 对 $ p(d > w_o \mid x, y = 1) $ 或 $ p(d > w_o \mid y = 1)p(y = 1 \mid x) $ 等的不同建模选择。

图片名称

图2 在线延迟反馈建模旧方法的数据分布

如图2 所示:

  • FNW/FNC [10]:首先将 $w_o=0$,并在点击时将所有点击标记为负样本,所有正样本在转化时被收集并作为DP重放(replay)
  • ES-DFM[27]和DEFER[5]:保持合理的观察时间$w_o$,因此,在$t_0+w_o$ 内发生的转化的点击可以被正确标记为IP。
  • ES-DFM和 DEFER之间的唯一区别:在于 ES-DFM 仅重放(replay)延迟的正样本,而 DEFER则复制所有点击(包括IP和RN)。
  • ES-DFM和DEFER都选择将 $ f_{\text{dp}}(x) = p(d > w_o, y = 1 \mid x) = p(d > w_o \mid x, y = 1)p(y = 1 \mid x) $ 作为一个整体来建模。

这些方法在样本复制机制上的这些差异最终导致了它们在公式(9)、(10)和(11)中 $q(y \mid x)$的不同公式:

\[q_{\text{fnw}}(y = 0 | x) = \frac{1}{1 + p(y = 1 | x)} \\ q_{\text{esdfm}}(y = 0 | x) = \frac{p(y = 0 | x) + f_{\text{dp}}(x)}{1 + f_{\text{dp}}(x)} \\ q_{\text{defer}}(y = 0 | x) = \frac{p(y = 0 | x) + 1}{2f_{\text{dp}}(x)}\]

…(9)(10)(11)

3.2.1 局限性

尽管这些发布的方法在减少偏差方面取得了成功,我们注意到由于在推导 $ w(x, y) $ 的公式时引入了一个隐藏的缺陷,这些方法仍然未能实现无偏的CVR预测。通常,重要性采样假设在从 $ p(x, y) $ 过渡到 $ q(x, y) $ 过程中没有值的修改,然而在第3.1节提到的CVR预测中,即使是相同的点击,从 $q(x,y)$ 观察到的标签可能会暂时偏离来自$p(x,y)$ 的真实标签(ground-truth label)。更具体和严格地说,如果我们将观察到的标签(observed label)区分为v,将有偏分布重新表示为$q(x,v)$,我们有:

\[y = y(v, d) = \begin{cases} 1, & \text{if } v = 1 \\ 0, & \text{if } v = 0 \text{ and } d = +\infty \\ 1, & \text{if } v = 0 \text{ and } d > w_o. \end{cases}\]

…(12)

结果,本应被标记为 $ \frac{p(d>w_o, y=1 \mid x)}{q(y=0 \mid x)} $ 的假负样本,在公式(8)中被错误地当作真实的负样本处理,导致性能次优和CVR预测的偏差。

4.方法

在本节中,我们详细地介绍了我们提出的方法:带有无偏估计(UnbiaSed Estimation)的延迟反馈建模(DEFUSE:DElayed Feedback modeling with UnbiaSed Estimation)。我们:

  • 首先介绍我们的无偏估计校正,它分别对四种类型的样本的重要性进行加权。
  • 然后,我们为DEFUSE提出了一个两步优化方法。
  • 最后,为了进一步减少由观察到的有偏分布造成的影响,我们设计了一个双分布(bi-distribution)建模框架,充分利用在实际分布下即时转化的情况。

请注意,我们的DEFUSE适用于不同的训练流程,但为了便于描述,我们将在ES-DFM的训练流程设计之上介绍我们的方法

4.1 无偏延迟反馈建模

如我们在3.2.1节中所描述的,我们的目标是:通过进一步优化假负样本的损失来实现无偏的延迟反馈建模。根据公式(5,12),我们可以获取无偏估计如下:

\[L_{\text{ub}} = \int q(x) dx \int q(v|x) \frac{p(x)}{q(x)} \frac{p(y(v, d) |x )}{q(v|x)} \ell(x, y(v, d); f_{\theta}(x)) dv\]

…(13)

其中:

  • $\ell(x, y(v, d); f_{\theta}(x))$ 是带有标签 $ \tilde{y}(v, d) $ 的观察样本的损失函数。
  • 通常,之前的方法通过假设 $ p(x) \approx q(x) $ [10, 27] 或设计适当的训练流程来保证特征分布的一致性来消除 $ \frac{p(x)}{q(x)} $。

4.1.1 DEFUSE的重要性加权。

在这项工作中,与之前侧重于复制机制的工作不同,我们通过正确评估 $ \ell(x, y(v, d); f_{\theta}(x)) $ 的重要性权重来实现无偏CVR估计。如表3所示,观察到的样本可以正式地分为四个部分。直观地说,如果我们拥有每个部分的所有标签,公式(13)可以重写为:

\[L_{\text{ub}} = \int q(x) [\sum\limits_{v_i} q(v_i | x) w_i(x, y(v_i, d)) \ell(x, y(v_i, d); f_{\theta}(x))] dx\]

…(14)

其中:

  • $w_i=\frac{p(x, y(v_i, d))}{q(x, v_i)}$ 且 $i \in \lbrace \text{IP}, \text{FN}, \text{RN}, \text{DP} \rbrace$,遵循 $\sum {v_i}=1$ 且 $v_i \in \lbrace 0, 1 \rbrace $。

请注意,当前的工作仅仅在公式(8)中对观察到的正样本和负样本进行建模,这忽略了假负样本(FN)的影响,导致标签分布的偏差。

为了求解公式(14),我们首先引入一个隐变量z,用来推断观察到的负样本是否是FN,然后分别对这四种观察样本的重要性权重$w_i$进行建模。因此,公式(14)等同于:

\[\underset{\theta}{min} L_{\text{ub}} \\ \Leftrightarrow \underset{\theta}{min} \int q(x) \left[ v \left( w_{\text{DP}} \log f_{\theta}(x) + I_{\text{IP}} (w_{\text{IP}} - w_{\text{DP}}) \log f_{\theta}(x) \right) \\ + (1 - v)(w_{\text{FN}} \log f_{\theta}(x) z + w_{\text{RN}} \log(1 - f_{\theta}(x)) (1 - z)) \right] dx\]

…(15)

其中:

\[w_{\text{IP}}(x) = w_{\text{RN}}(x) = 1 + f_{\text{dp}}(x)\] \[w_{\text{DP}}(x) + w_{\text{FN}}(x) = 1 + f_{\text{dp}}(x)\]

其中:

  • $ w_{\text{IP}}(x) $、$ w_{\text{DP}}(x) $、$ w_{\text{FN}}(x) $、$ w_{\text{RN}}(x) $ 表示重要性权重;
  • $ I_{\text{IP}} $ 是观察到的即时正样本的指示器。

经验上,我们设置: $ w_{\text{DP}}(x) = 1 $ 和 $ w_{\text{FN}}(x) = f_{\text{dp}}(x) $,因为 $ \text{DP} $ 可以被观察到。详细的证明在补充材料中给出。 与标准cross entropy-loss相比,我们集成了一个辅助任务 $f_{\text{dp}}(x)$来对每种类型的样本的重要性权重$w_i$进行建模,而不是直接使用观察到的标签

4.1.2 优化

此后,剩下的问题是如何选择优化无偏损失函数。由于公式(15)中的 $z$ 是不可获得的,我们通过引入另一个辅助模型 $z(x)$来预测隐藏的$z$,进一步将观察到的负样本分解为真实负样本和假负样本,实现两步优化:

\[L_{\text{neg}} = z(x) w_{\text{FN}} \log f_{\theta}(x) + (1 - z(x)) w_{\text{RN}} \log(1 - f_{\theta}(x))\]

…(16)

其中:

\[z(x) = \frac{p(y = 1, d > w_o | x)}{p(y = 0 | x) + p(y = 1, d > w_o | x)}\]
  • $ z(x) $ 是假负样本(FN)概率,表示观察到的负样本是真实正样本的概率

在实践中,我们实现了两种方式来建模 $ z(x) $:

  • $ z_1(x) = 1 - f_{\text{rn}}(x) $。这采用二元分类模型 $ f_{\text{rn}}(x) $ 来预测观察到的负样本是真实负样本的概率。对于 $ f_{\text{rn}} $ 模型的训练,排除了观察到的正样本,然后将负样本标记为1,延迟正样本标记为0。
  • $ z_2(x) = \frac{f_{\text{dp}}(x)}{f_{\text{dp}}(x) + 1 - f_{\theta}(x)} $。这采用CVR模型 $ f_{\theta}(x) $ 和延迟模型 $ f_{\text{dp}}(x) $ 来间接建模假负样本概率。对于 $ f_{\text{dp}}(x) $ 的学习,将延迟正样本标记为1,其他的标记为0。

4.2 双分布建模

尽管理论上是无偏的,但我们的DEFUSE一个潜在的缺点是:重要性权重 $ w $、隐藏模型 $ z(x) $ 尤其是乘法项 $ z(x)w_{\text{FN}} $ 和 $ (1-z(x))w_{\text{RN}} $ 的估计可能会导致高方差。这通常意味着收敛速度慢,并导致次优性能,尤其是在反馈相对稀疏的情况下。因此,我们努力构建一个可以充分利用观察到的分布中的样本的替代学习框架。

回想一下,与之前的方法仅使用观察到的正样本和负样本不同,我们将样本分为四种类型。IP和DP分别表示即时转化和延迟转化。

因此,我们采用多任务学习 [11, 15, 19, 26] 框架来联合优化以下子任务:

  • 1) 窗口内(Inw)模型:预测观察窗口 $ w_o $ 内的IP概率 $ F_{\text{IP}}(x) = p(y = 1, d \leq w_o \mid x) $。
  • 2) 窗口外(Outw)模型:预测 $ w_o $ 之外的DP概率 $ F_{\text{DP}}(x) $。然后,整体转化概率可以形式化为:
\[p(y = 1 | x) = F_{\text{IP}}(x) + F_{\text{DP}}(x).\]

…(18)

图片名称

图3 双分布模型的示意图,其中Exp(专家网络),Share Exp(共享专家网络),Outw Exp(外部专家网络)分别表示单层的窗口内(in_window)、共享(shared)和窗口外(out_window)专家网络。

值得一提的是,如图3b所示,

  • 对于任务1,使用样本是非重复且正确标记的,因此 $ F_{\text{IP}}(x) $ 模型可以直接在无偏的真实分布上进行训练。
  • 对于任务2,$ F_{\text{DP}}(x) $ 模型必须在与FNW [10]相同的有偏观察分布上进行训练,其中 $ w’_o = 0 $。

因此,我们将我们的DEFUSE实现到 $ F_{\text{DP}}(x) $ 模型中,以通过重要性采样实现无偏估计。类似于公式(15)的推导,我们有:

\[L_{\text{IP}} = \int p(x, y_{\text{IP}}) \left[ y_{\text{IP}} \log f_{\text{IP}}(x) + (1 - y_{\text{IP}}) \log(1 - f_{\text{IP}}(x)) \right] dx\]

…(19)

\[L_{\text{DP}} = \int q(x, v_{\text{DP}}) \left[ v_{\text{DP}}w'_{\text{DP}}(x) \log f_{\text{DP}}(x) \\ + (1 - v_{\text{DP}})w'_{\text{FN}}(x)z'(x) \log f_{\text{DP}}(x) \\ + (1 - v_{\text{DP}})w'_{\text{RN}}(x)(1 - z'(x)) \log(1 - f_{\text{DP}}(x)) \right] dx,\]

…(20)

其中:

  • $ p(x, y_{\text{IP}}) $,$ q(x, v_{\text{DP}}) $ 分别表示子任务的训练数据集的分布,
  • $w’{\text{DP}}(x), w’{\text{FN}}(x), w’_{\text{RN}}(x) $ 是重要性权重,
  • $ z’(x) $ 作为进一步推断假负样本的隐藏模型。

最后,我们设计了如图3a所示的多任务学习架构,通过联合优化联合损失来学习所需的CVR模型:

\[L = L_{\text{IP}} + L_{\text{DP}}.\]

…(21)

通过这样做,我们将延迟反馈建模分为一个无偏的 $ \text{in_window} $ 预测和一个基于重要性采样的 $ \text{out_window} $ 预测任务。注意,只有第二部分需要用重要性权重和隐藏变量z进行训练,这意味着通过推断 $ w $ 和 $ z $ 引入的高方差负面影响可以有效地限制。

附录:

weibo在《FiBiNet++:Improving FiBiNet by Greatly Reducing Model Size for CTR Prediction》提出了FiBiNET++。

3.提出的模型

FiBiNet++的结构如图1所示。我们会对当前的FiBiNET进行讨论,特别是bi-linear function,它会导致大量的不必要参数。因此,在原始FiBiNet上的SENet模块之上的bi-linear function会被移除,只留下bi-linear function的左部分。另外,我们发现在FiBiNet++模型中移除FiBiNet的线性部分(linear part)时,有好的表现。在网络结构上的这两种变化会直接减小model size,我们会在第3.5节中讨论细节。

图片名称

图1 FiBiNet++结构

如图1所示,原始的feature embedding会首先归一化(normalized)。

  • 原始feature embedding在被送到后续组件前会首先被归一化。
  • 接着,bilinear+模块会建模feature interactions;而SENet+模块会计算bit-wise feature importance
  • 两个branches会被拼接作为后续MLP layers的输入。

3.1 特征归一化(Feature Normalization)

Normalization技术已经被认为是在deep learning中非常有效的组成部分。受[10]的启发,我们会引入feature normalization到FiBiNet++中来增强模型的训练稳定性和效果,具体如下:

\[N(V) = concat[N(v_1), N(v_2), \cdots, N(v_f)] \in R^{1 \times fd}\]

…(7)

其中,\(N(\cdot)\)是:

  • 对于数值型feature的layer normalizationr操作
  • 对于类别型feature的batch normalization操作
\[N(v_i) = \begin{cases} LN(v_i), & \text{ if $x_i$ \in $S_c$} \\ BN(v_i), & \text{if $x_i$ \in $S_n$} \end{cases}\]

…(8)

其中:

  • \(S_c\)是类别型features的集合
  • \(S_n\)是数值型features的集合

3.2 Bi-Linear+模块

FiBiNet会通过bi-linear function建模在feature \(x_i\)和\(f_{x_j}\)间交叉,它会引入一个额外学到的matrix W,如下所示:

\[p_{i,j} = v_i \circ W \otimes v_j \in R^{1 \times d}\]

…(9)

其中:

  • \(\circ\)和\(\otimes\)表示inner product和element-wise hardmard product。
  • matrix W可以是使用以下三种之一的参数:’field all type’、’ field each type’、’field interaction type’。

尽管它对于通过bi-linear function建模feature interactions是有效的,我们会讨论:hadamard product会带来大量不必要的参数。为了有效减少model size,我们会使用以下两种方法将bilinear升级到bi-linear+模块。首先,hadamard product会通过另一个inner product可以替换:

\[p_{i,j} = v_i \circ W \circ v_j \in R^{1 \times 1}\]

…(10)

很容易看到,对于每个feature交叉,\(p_{i,j}\)的参数会从d维vector减少到1 bit。假设,input实例具有f个fields,并且我们在bi-linear feature interactions之后有以下vector:

\[P = concat[p_{1,2}, p_{1,3}, \cdots, p_{f-1,f}] \in R^{1 \times \frac{f \times (f-1)}{2}}\]

…(11)

为了更进一步减小参数数目,我们会引入一个压缩版MPL layer,会在vector P上进行stacking,如下所示:

\[H^{CML} = \sigma_1 (W_1 P) \in R^{1 \times m}\]

…(12)

其中:

  • \(W_1 \in R^{m \times \frac{f \times (f-1)}{2}}\)是一个具有较小size m的thin MLP layer的学习矩阵。
  • \(\sigma_1(\cdot)\)是一个identity function,它没有线性转换,因为我们发现:当使用非线性函数时,模型效果会递减

3.3 SENet+模块

SENet模块由三个steps组成:squeeze、excitation和reweight,在CTR预估领域首先由FiBiNet提出,可以动态计算feature importance。我们将它升级成SENet+用来增强模型效果。SENet+包含了4阶段:squeeze、excitation、reweight和fuse。尽管我们提出的SENet+模块如同原始SENet具有相似的三个阶段,每个step会被改进以便于增强模型效果

Squeeze

SENet会通过mean pooling从每个feature embedding上收集关于“summary statistics”的one bit信息。然而,我们认为更多的input信息会有利于模型效果。因此,我们会通过提供更有用的信息来改进原始的squeeze step。特别的,我们会首先将每个normalized feature embedding \(v_i \in R^{1 \times d}\) 分段成g个groups(g是一个超参数),如下:

\[v_i = concat[v_{i,1}, v_{i,2}, \cdots, v_{i,g}]\]

…(13)

其中:

  • \(v_{i,j} \in R^{1 \times \frac{d}{g}}\):表示在第i个feature的第j个group的信息
  • \(k=\frac{d}{g}\):表示每个group的size

接着,我们选择最大值\(z_{i,j}^{max}\)、以及在\(v_{i,j}\)中的平均pooling value \(z_{i,j}^{avg}\),作为该group的representative信息:

\[z_{i,j}^{max} = max_t \lbrace v_{i,j}^t \rbrace_{t=1}^k \\ z_{i,j}^{avg} = \frac{1}{k} \sum\limits_{t=1}^k v_{i,j}^t\]

…(14)

每个group的concatenated representative信息会形成feature embedding \(v_i\)的“summary statistic” \(Z_i\):

\[Z_i = concat [z_{i,1}^{max}, z_{i,1}^{avg}, z_{i,2}^{max}, z_{i,2}^{avg}, \cdots, z_{i,g}^{max}, z_{i,g}^{avg}] \in R^{1 \times 2g}\]

…(15)

最终,我们可以将每个feature的summary statistic进行concatenate成SENet+模块的input:

\[Z = concat [Z_1, Z_2, \cdots, Z_f] \in R^{1 \times 2gf}\]

…(16)

Excitation

在SENet中的excitation阶段会根据statistic vector Z来计算每个feature的weight,它是一个field-wise attention。然而,我们会通过将field-wise attention更改为一个更细粒度的bit-wise attention。相似的,我们会使用两个FC layers来学习weights,如下:

\[A = \sigma_3 (W_3 \sigma_2(W_2 Z)) \in R^{1 \times fd}\]

…(17)

其中:

  • \(W_2 \in R^{\frac{2af}{r} \times 2gf}\):表示第一个FC layer的学习参数,它是一个thin layer,并且r是reduction ratio
  • \(W_3 \in R^{fd \times \frac{2gf}{r}}\):表示第二个FC layer的学习参数,它是一个size为fd的wider layer.

这里\(\sigma(\cdot)\)是一个\(ReLu(\cdot)\),\(\sigma_3(\cdot)\)是一个没有非线性变换的identity function。这种方式下,在input embedding的每个bit可以动态学习相应的由A提供的attention score

Reweight

re-weight阶段会在原始field embedding和学到的attention scores间进行element-wise multiplication,如下所示:

\[V^w = A \otimes N(V) \in R^{1 \times fd}\]

…(18)

其中:

  • \(\otimes\)是一个在两个vectors间的element-wise multiplicaiton
  • N(V)表示在normalization之后的原始embedding

Fuse

一个额外的“fuse”阶段会被引入进来,以便更好将original feature embedding中的信息和weighted embedding中的信息进行融合。我们首先使用skip-connection来将两个embedding进行merge

\[v_i^s = v_i^o \otimes v_i^w\]

…(19)

其中:

  • \(v_i^o\): 表示第i个normalized feature embedding
  • \(v_i^w\): 表示在re-weight step之后的embedding
  • \(\oplus\):是一个element-wise addition操作

接着,另一个feature normalization会被应到在feature embedding \(v_i^s\)中来得到一个更好的representation:

\[v_i^u = LN(v_i^s)\]

…(20)

注意,不管什么类型的feature(数值型feature/类别型feature),我们会采用layer normalization。最终,我们将所有fused embeddings进行拼接作为SENet+模块的output:

\[V^{SENet+} = concat[v_1^u, v_2^u, \cdots, v_f^u] \in R^{1 \times fd}\]

…(21)

3.4 Concatenation layer

假设:

  • \(H^{CML}\):表示在bi-linear++模块中compression MLP layer的output
  • \(V^{SENet+}\):表示SENet+模块中的weighted feature embedding

我们将它们进行concatenate在一起来形成以下的MLP layers的输出:

\[H_0 = concat[H^{CML}, V^{SENet+}]\]

…(22)

3.5 讨论

在本节中,我们会讨论FiBiNet和FiBiNet++间的model size不同。注意,只有non-embedding参数会被考虑,它只表示model复杂度。

FiBiNet的主要参数来自于两个部分:一个是在第一个MLP layer间的connection以及两个bi-linear modules的output;另一个是linear part。假设我们表示h=400作为第一个MLP layer的size,f=50是fields number,d=10是feature embedding size,t=100w是feature number。因此,在这两parts中的参数数目大约是1080w:

\[T^{FiBiNet} = ... = 1080w\]

…(23)

而对于FiBiNet++,模型参数的主要部分来自于三个部分:第一个MLP layer和由SENet+模块生成的embedding间的connection(第一部分);第一个MLP layer和compression MLP layer间的part(第二部分);compression MLP layer间的参数和bi-linear feature interaction结果(第3部分)。假设:m=50表示compression MLP layer的size。我们有:这些组件的参数数目:

\[T^{FiBiNet++} = ... = 28w\]

…(24)

我们可以看到以上方法,可以极大减少model size,从1080w -> 28w,将近有39倍的模型压缩。另外,fields number f越大,可以达到更大的模型压缩率。

4.实验

参考

weibo在《FiBiNET: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction》提出了FiBiNET。

1.摘要

3.提出的模型

我们的目标是,以细粒度方式学习features的importance和feature intreactions。因此,在CTR预估任务中提出了Feature Importance and Bilinear feature Interaction NETwork(FiBiNET)。

在本节中,我们会描述在图1中所描述的模型。为了简单,我们忽略LR部分。提出的模型包含了以下部分:

  • Sparse input layer
  • embedding layer
  • SENET layer
  • Bilinear-Interaction layer
  • combination layer
  • multiple hidden layers
  • output layer

图片名称

图1 FiBiNET的结构

sparse input layer和embedding layer与DeepFM【4】中相同,它会为input features采用一个sparse representation,并将raw feature input嵌入到一个dense vector中。

SENET layer可以将一个embedding layer转换成SENET-Like embedding features,它会帮助增强feature辩别力。

随后的Bilinear-Interaction layer会分别在原始embedding和SENET-Like embedding上建模二阶特征交叉。

接着,这些交叉特征会通过一个combination layer进行拼接,它会将Bilinear-Interaction layer的输出进行合并。最后,我们会将cross features进行feed给一个DNN网络,该网络会输入prediction score。

3.1 Sparse Input和Embedding layer

sparse input layer和embedding layer会被广泛用于deep learning based的CTR模型中。sparse input layer会为原始的input features采用一个sparse representation。该embedding layer可以将sparse feature嵌入到一个低维、dense的real-value vector上。embedding layer的output是一个宽拼接的field embedding vector:

\[E = [e_1, e_2, \cdots, e_i, \cdots, e_f]\]

其中:

  • f表示fields的数目
  • \(e_i \in R^k\)表示第i个field的embedding
  • k是embedding layer的维度

3.2 SENET Layer

据我们所知,不同的features对于目标任务来说具有许多importances。例如,当我们预测一个人的收入时,feature“职业”要比feature“喜好”更重要。受计算机视觉中SENET的成功所影响,我们引入一个SENET机制,让模型更关注feature importance。对于特定的CTR预估任务,我们可以动态增加importances的权重,并通过SENET机制减少无信息量特征(uninformative features)的weights。

我们将feature embeddings作为输入,SENET会为field embeddings生成weight vector \(A = \lbrace a_1, \cdots, a_i, \cdots, a_f \rbrace\),接着将原始embedding E与vector A进行rescale,得到一个新的embedding(SENET-Like embedding):

\[V = [v_1, \cdots, v_i, \cdots, v_f]\]

其中:

  • \(a_i \in R\)是一个标量,它表示第i个field embedding \(v_i\)的weight,
  • \(v_i \in R^k\)表示第i个field的SENET-Like embedding,\(i \in [1,2, \cdots, f], V \in R^{f \times k}\),其中k是一个embedding size,f是一个fields的数目。

图片名称

图2 SENET layer

如图2所示,SENET由三个steps组成:squeeze step(压缩)、excitation step(激活)、re-weight step(调权)。这三步细节描述如下:

Squeeze

该step用于计算每个field embedding的”汇总统计信息(summary statistics)”。具体来说,我们使用pooling方法:比如max或mean来将原始embedding \(E = [e_1, \cdots, e_f]\)压缩到一个statistic vector \(Z = [z_1, \cdots, z_i, \cdots, z_f]\),其中:\(i \in [1, \cdots, f]\),\(z_i\)是一个scalar value,它表示关于第i个feature representation的全局信息。\(z_i\)可以被计算为以下的全局mean pooling:

\[z_i = F_{sq}(e_i) = \frac{1}{k} \sum\limits_{t=1}^k e_i^{(k)}\]

…(1)

在原始SENET paper[8]中的squeeze function是max pooling。然而,我们的实验结果表明:mean-pooling效果要好于max pooling

Excitation

该step可以基于statistic vector Z来学习每个field embedding的weight。我们使用两个FC layers来学习该weights。第一个FC layer是一个降维layer,它具有参数\(W_1\),使用一个超参数衰减率r,接着使用\(\sigma_1\)作为非线性函数。第二个FC layer会使用参数\(W_2\)来增加维度。正式的,field embedding的weight可以如下进行计算:

\[A = F_{ex}(Z) = \sigma_2(W_2 \sigma_1(W_1 Z))\]

…(2)

其中:

  • \(A \in R^f\)是一个vector
  • \(\sigma_1\)和\(\sigma_2\)是activation functions
  • \(W_1 \in R^{f \times \frac{f}{r}}, W_2 \in R^{\frac{f}{r} \times f}\)是学习参数,其中r是reduction ratio

Re-weight

在SENET中的最后一步是一个reweight step,它在原paper(8)中被称为re-scale。它会在原始field embedding E和field weight vector A间做field-wise乘法,并输出new embedding(SENET-Like embedding) \(V = \lbrace v_1, \cdots, v_i, \cdots, v_f \rbrace\)。SENET-Like embedding V可以计算如下:

\[V = F_{ReWeight} (A, E) = [a_1 \cdot e_1, \cdots, a_f \cdot e_f] = [v_1, \cdots, v_f]\]

…(3)

其中:

\[a_i \in R, e_i \in R^k, v_i \in R^k\]

简短来说,SENET会使用两个FCs来动态学习features importance。对于一个特定任务,它会增加important features的weights,并降低uninformative features的features。

3.3 Bilinear-Interaction Layer

该Interaction layer是一个用来计算二阶交叉的layer。在Interaction layer中经典的feature interactions是内积(inner product)和哈达玛积(Hadamard product)

  • 内积(inner product):被广泛应用于shallow models中,比如:FM、FFM,
  • 哈达玛积(Hadamard product):被广泛用于深度模型中,比如:AFM和NFM。

内积和哈达玛积的形式分别表示为:

\[\lbrace (v_i \cdot v_j) x_i x_j \rbrace_{(i,j) \in R_x} \\ \lbrace (v_i \odot v_j) x_i x_j \rbrace_{(i,j) \in R_x}\]

其中:

  • \[R_x = \lbrace (i, j) \rbrace_{i \in \lbrace 1, \cdots, f \rbrace, j \in \lbrace 1, \cdots, f \rbrace, j > i}\]
  • \(v_i\)是第i个field embedding vector
  • \(\cdot\)表示常规的内积
  • \(\odot\)表示哈达玛积,例如:\([a_1, a_2, a_3] \odot [b_1, b_2, b_3] = [a_1b_1, a_2b_2, a_3b_3]\)

在Interaction layer中的内积和哈达玛积对于有效建模在sparse dataset中的特征交叉过于简单。因此,我们提出了更细粒度的方法,它会组合内积和哈达玛积使用额外参数来学习feature interactions。如图3.c所示,在矩阵W和向量\(v_i\)间使用内积(inner product),在矩阵W和向量\(v_j\)间使用哈达玛积(Hadamard product)。特别的,我们在该layer中提出了三种类型的双线性函数(bilinear functions),我们称为“Bilinear-Interaction layer”。以第i个field embedding \(v_i\)和第j个field embedding \(v_j\)作为示例,feature interaction \(p_{ij}\)的结果可以通过如下方式计算:

a. Field-All Type

\[p_{ij} = v_i \cdot W \odot v_j\]

…(4)

其中:

  • \[W \in R^{k \times k}\]
  • \(v_i, v_j \in R^k\)是第i个和第j个field embedding,\(1 \leq i \leq f, i \leq j \leq f\)

这里,W在所有\(v_i, v_j\)的field交叉对(pair)间共享,在Bilinear-Interaction layer中存在k x k参数,因此我们称该type为“Field-ALL”。

Field-Each Type

\[p_{ij} = v_i \cdot W_i \odot v_j\]

…(5)

其中:

  • \(W_i \in R^{k \times k}, v_i, v_j \in R^k\)是第i和第j个field embedding, \(1 \leq i \leq f, i \leq j \leq f\)

这里:

  • \(W_i\)是第i个field的参数矩阵

在Bilinear-Interaction layer中存在\(f\times k \times k\),因为我们有f个不同的fields,因此,这里我们称为“Field-Each”。

c.Field-Interaction Type

\[p_{ij} = v_i \cdot W_{ij} \odot v_j\]

…(6)

其中,\(W_{ij} \in R^{k \times k}\)是field i和field j间的interaction的参数矩阵,\(1 \leq i \leq f, i \leq j \leq f\)。在该layer上的可学习参数的总数目是\(n \times k \times k\),n是field interactions的数目,它等于\(\frac{f(f-1)}{2}\)。这里我们称该type为“Field-Interaction“。

如图1所示,我们有两个embeddings(original embedding和SENET-like embedding),我们可以为任意embeddings上采用bilinear function或Hadapard product作为特征交叉操作。因此,我们在该layer上具有不同的特征交叉组合。在第4.3节中,我们讨论了bilinear function 和Hadamard product不同组合的效果。另外,我们具有三种不同类型的特征交叉方法(Field-All, Field-Each, Field-Interaction)来应用到我们的模型中。

在本节中Bilinear-Interaction layer可以:

  • 从original embedding E输出一个interaction vector \(p = [p_1, \cdots, p_i, \cdots, p_n]\),
  • 从SENET-like embedding V输出一个SENET-Like interaction vector \(q = [q_1, \cdots, q_i, \cdots, q_n]\),

其中:

  • \(p_i, q_i \in R^k\)均是vectors

3.4 Combination Layer

combination layer会将在interaction vector p和q进行拼接,并将concatenated vector输入到在FiBiNET的后续layer上。它可以表示成以下形式:

\[c = F_{concat}(p, q) = [p_1, \cdots, p_n, q_1, \cdots, q_n] = [c_1, \cdots, c_{2n}]\]

…(7)

如果我们将在vector c中的每个element进行求和,接着使用一个sigmoid function来输出一个prediction value,我们具有一个shallow CTR模型。为了更进一步拿到效果收益,我们会将shallow组件和一个经典的DNN进行组合到一个统一模型中来构成deep network结构,该统一模型被称为deep model。

图片名称

图3 用于计算feature interactions的不同方法。 a) 内积(Inner product) b) Hadamard product c) 我们提出的bilinear interaction。这里在inner product中的\(p_{ij}\)是一个标量,它是在Hadamard product以及bilinear function中的一个vector

3.5 Deep Network

deep network由许多FC layers组成,它会隐式捕获高阶特征交叉。如图1所示,deep network的输入是combination layer的输出。假设:\(a^{(0)} = [c1, c_2, \cdots, c_{2n}]\)表示combination layer的输出,其中:\(c_i \in R^k\),n是field interactions的数目。接着,\(a^{(0)}\)被输入到DNN中,feed forward过程如下:

\[a^{(l)} = \sigma(W^{(l)} a^{(l - 1)} + b^{(l)})\]

…(8)

其中:

  • l是depth,\(\sigma\)是activation function
  • \(W^{(l)}, b^{(l)}, a^{(l)}\)是第l个layer上的模型weight、bias、output

在这该后,一个dense real-value feature vector会被生成,它最终输入到CTR预估的sigmoid function中:\(y_d = \sigma(W^{\mid L \mid + 1} a^{\mid L \mid} + b^{\mid L \mid +1})\),其中:\(\mid L \mid\)是DNN的depth。

3.6 Output Layer

为了简洁,我们给出模型输出的整个公式:

\[\hat{y} = \sigma(w_0 + \sum\limits_{i=0}^m w_i x_i + y_d)\]

…(9)

其中:

  • \(\hat{y} \in (0, 1)\)是CTR的predicted value
  • \(\sigma\)是sigmoid function
  • m是feature size
  • x是一个input
  • \(w_i\)是linear part的第i个weight
  • \(\lbrace w_0, \lbrace w_i\rbrace_{i=1}^m, \lbrace e_i \rbrace_{i=1}^2, \lbrace W^{(i)} \rbrace_{i=1}^{\mid L \mid} \rbrace\)。学习过程的目标是最小化以下的目标函数(cross entropy):
\[loss = - \frac{1}{N} \sum\limits_{i=1}^N (y_i log(\hat{y}_i) + (1 - y_i) * log(1 - \hat{y}_i))\]

…(10)

其中:

  • \(y_i\)是第i个样本的ground truth
  • \(\hat{y}_i\)是predicted CTR
  • N是样本的total size

3.6.1 与FM和FNN的关系

假设我们将SENET layer和Bilinar-Interaction layer移除,不难发现我们的模型可以被看成是FNN。当我们进一步移除DNN part,同时使用一个constant sum,接着该shallow FiBiNET会被降级到传统的FM模型。

4.实验

略.

参考

语音识别领域《Learning Hidden Unit Contributions for Unsupervised Acoustic Model Adaptation》中提出了一种方法LHUC,我们来看下它的实现:

摘要

本研究广泛探讨了通过学习隐藏单元贡献(LHUC:learning hidden unit contributions)的方法来调整神经网络声学模型的自适应能力——该方法以说话人依赖(speaker-depdent)或环境依赖(environment-dependent)的方式,使用少量无监督自适应数据线性重新组合隐藏单元。我们还把LHUC扩展到说话人自适应训练(SAT)框架中,从而得到一个更加可适应的DNN声学模型,该模型既能以说话人依赖的方式工作,也能以说话人独立的方式工作,无需维护辅助的说话人依赖特征提取器,也无需引入显著的说话人依赖的DNN结构变化。通过在四个不同的语音识别基准测试(TED演讲、Switchboard、AMI会议和Aurora4)上的一系列实验,这些测试涵盖了270名测试说话人,我们展示了无论是在仅限测试的LHUC还是在SAT变体中,都能实现一致的字错误率降低,降幅范围从5%到23%不等,具体取决于任务以及训练和测试数据之间的不匹配程度。此外,我们还研究了每个说话人的自适应数据量、无监督自适应目标的质量、与其他自适应技术的互补性、一次性自适应,以及扩展到以序列判别方式训练的DNN的自适应。

1.介绍

语音识别的准确性在过去几年中通过使用(深度)神经网络(DNN)声学模型得到了显著提高。Hinton等人[1]报告称,与基于区分性训练的高斯混合模型(GMM)系统相比,各种任务的字错误率(WER)降低了10-32%。这些结果利用神经网络作为混合DNN/HMM(隐马尔可夫模型)系统[1]-[5]的一部分,在这些系统中,神经网络提供缩放的可能性估计以替代GMM;以及作为串联或瓶颈特征系统[6]、[7],在这些系统中,神经网络被用作基于GMM的系统的判别特征提取器。对于许多任务,观察到已经适应说话人的基于GMM的系统(带有串联或瓶颈特征)比未适应的混合DNN/HMM系统[8]-[10]更准确,这表明DNN声学模型的适应是一个值得研究的重要课题。

声学模型自适应[11]旨在通过规范化训练和运行时数据分布之间的不匹配,这种不匹配是由说话人之间的声学变异性以及信道或声学环境引入的其他失真造成的。在本文中,我们研究了使用一种称为学习隐藏单元贡献(LHUC)[12]-[14]的新近引入的方法,对DNN声学模型进行无监督的基于模型的说话人和声学环境自适应。我们分别在仅限测试的自适应和说话人自适应训练(SAT)的扩展上下文中,介绍了LHUC方法,后者被称为SAT-LHUC[14]。我们使用四个标准语料库进行了广泛的实验分析:TED演讲[15]、AMI[16]、Switchboard[17]和Aurora4[18]。这些实验包括:交叉熵和序列训练的DNN声学模型的自适应(第VI-A至VI-C节);基于自适应目标的质量、自适应数据的质量和自适应数据量分析(第VI-D节);与基于最大似然线性回归[19]的特征空间自适应技术的互补性(第VI-E节);以及应用于结合说话人和环境自适应(第VII节)。

2.NEURAL NETWORK ACOUSTIC ADAPTATION回顾

3.LEARNING HIDDEN UNIT CONTRIBUTIONS (LHUC)

一个neural network可以被看成是一个关于自适应基函数(adaptive basis functions)的集合。在关于目标函数族(target function family)\(f^*\)的某些假设下,neural network可以看成是一个通用逼近器(universal approximator)。也就是说,在给定关于输入随机变量\(x \in R^d\)的一些vector的情况下,存在一个nueral network \(f_n(x): R^d \rightarrow R\)的形式:

\[f_n(x) = \sum\limits_{k=1}^n r_k \phi(w_k^T x + b_k)\]

…(1)

它可以逼近\(f^*\),具有一个特别小的error \(\epsilon\),对应于这样的mean square error的一个distance measure(提供n是足够大的):

\[|| f^*(x) - f_n(x) ||_2 \leq \epsilon\]

…(2)

在(1)中的\(\phi: R \rightarrow R\)是一个element-wise 非线性操作(non-linear operation),它在一个仿射变换(n affine transformation)后使用,这会形成一组由一个biases set \(b_k \in R\)和一个weight vectors \(w_k \in R^{d_x}进行参数化的自适应基函数(adaptive basis function)\)。接着目标近似(target approximation)会被构建成一个关于基函数的线性组合,每个基函数的权重为\(r_k \in R\)

该公式可以扩展到m维映射上:\(f_n^m(x): R^d \rightarrow R^m\),只需将(1)中的模型拼接m次得到。当考虑更深的模型(嵌套)时,这些性质仍然成立[51](推论 2.6 和 2.7)。

深度神经网络(DNN)训练的结果是:隐单元(hidden units)会学习一个关于目标函数的联合表示,并变得专门化并互补。从基函数组合中学到的组合泛化性,在应用于看不见的测试数据时,会继续逼近似目标函数。这种解释激发了使用LHUC——学习隐藏单元贡献——进行测试集自适应的思想。在LHUC中,网络中的基函数,先前是使用大量训练数据估计的,保持固定。自适应(Adaptation)涉及修改隐藏单元的组合,以便根据自适应数据最小化自适应损失。图1展示了这种方法在回归问题中的应用,其中自适应通过基函数的线性重新组合执行,只改变等式(1)中的r参数。

图1

LHUC的核心思想是:使用一个说话人依赖的幅值函数(speaker-dependent amplitude function),来显式参数化每个隐单元(在每个在max-pooling之后的FC或convolutional layers中)的幅度(amplitudes)。假设:

  • \(h_j^{l,s}\):表示在layer l中的第j个hidden unit activation(basis)
  • \(r_j^{l,s} \in R\):表示第s个speaker-dependent amplitude function:
\[h_j^{l,s} = \epsilon(r_j^{l,s}) \odot \phi_j(w_j^{lT} x + b_j^l)\]

…(3)

幅度使用一个函数:\(\epsilon : R \rightarrow R^+\)——通常是一个范围在(0,2)以内的sigmoid【13】,但也可以使用一个identity function。

  • \(w_j^l\)是相应的weight矩阵\(W^l\)的第j列
  • \(b_j^l\)表示bias
  • \(\phi\)是hidden unit activation function(除非声明,否则是sigmoid)
  • \(\odot\)表示是一个Hadamard product
  • \(\epsilon\)限制了hidden unit amplitude scaling的范围(对比图1),直接影响adaptation transform capacity——当适配潜在的noisy unsupervised targets时,我们希望有这样的能力。

图片名称

图1 示例展示了LHUC是如何执行adaptation的(见颜色)。上:一个“bump” model(等式1),具有两个hidden units,可以逼近”bump” functions。中:为了在给定训练数据\(f_1\)下学习\(f_1\),我们将两个“bump” functions拼接在一起(4个hidden units,一个input/output)来学习一个关于function \(f_1\)的近似。底:模型的LHUC adaptation对\(f_1\)最优,适配到f2使用LHUC scaling参数。

LHUC adaptation会通过设置speaker-specific amplitude参数\(r_j^{l,s}\),并对由adaptation data提供的targets使用gradient descent来进行。

直接学习hidden unit amplitudes的思想在[55]中提出,接着由[12]应用到supervised speaker adaptation中。【13】中该方法会被扩展到unspervised adaptation上,non-sigmoid non-linearities,大的vocabulary speech recognition。等等

IV. SPEAKER ADAPTIVE TRAINING LHUC (SAT-LHUC)

当LHUC被应用到一个test-only adaptation中时,它会假设:在训练数据上估计的speaker-independent basis function的集合,会提供一个良好的起点,可以进一步对adaptation data的底层数据分布进行调参。然而,你可以生成一个counter-example,其中该假设会失败:图2的top plot展示了example training data会从两个竞争的分布\(f_1(a)\)和f_1(b)中均匀抽取出,其中:在平均模型(图2底部)中的结果basis的线性重组合,提供了一个对adaptation data的较差近似。

图片名称

图2 一个4-hidden-unit模型,训练\(f1(a)\)和\(f1(b)\),

这启发了:使用speaker adaptive training(SAT)与LHUC进行组合,其中:hidden units会被训练用来捕获好的average representations以及speaker-specific representations,通过为每个training speaker估计speaker-specific hidden unit amplitudes。在给定来自所在分布的数据点的先验知识后,这在图3中会被可视化,我们会估计一个并行的LHUC transforms(每个分布一个)的集合,同时有一个额外的transform会负责建模平均属性(average properties)。图3的top展示了在图2中的相同实验,但有了三个LHUC transforms——你可以看到:以给定LHUC transform下,该场景中的4-hidden-unit MLP可以捕获每个底层分布以及平均表现。同时,生成的basis function(图3 bottom)会是一个对于adaptation更好的starting point(图3 middle)。

图2和图3中的示例可以通过对每个function的训练数据样本数目进行rebalance来打破对称来解决,这会导致在平均模型中更少的trivial并且更多adaptable的basis functions。然而,我们会在后续展示实验,在高维语音数据上呈现相似的效果,SAT-LHUC训练允许构建更可调节的标准语音模型,通过适配可以对指定speakers进行更好的裁减。

SAT-LHUC 的Test-only adaptation与LHUC相同:每个test speaker都会插入speaker-dependent LHUC参数集合 \(\theta_{LHUC}^s=\lbrace r_j^{l,s} \rbrace\),他们的值可以从无监督adaptation data进行最优化。我们也会使用一个LUHC变换\(\theta_{LHUC}^s\)的集合,其中:\(s = 1 \cdots S\),对于training speakers,它会与speaker-independent参数\(\theta_{SI} = \lbrace W^l, b^l \rbrace\)一起联合优化。这是一个额外的speaker-independent LHUC变换,表示为\(\theta_{LUHC}^0\),这会允许模型以speakerindependent的方式被使用,例如:为了生成first pass adaptation targets。关于hidden units with speaker-dependent LHUC标量的的联合学习过程是很重要的,它会产生一个更加可调的标准语音模型,可以更好的适应在测试时未见过的speakers,正如我们如图3所示,会在下面展示adaptation任务。

为了执行SAT-LHUC的 training,我们会使用negative log likelihood,并最大化在给定t时刻observation vector \(x_t\)下获得正确context-dependent tied-state \(c_t\)后验概率:

\[L_{SAT}(\theta_{SI}, \theta_{SD}) = - \sum\limits_{t \in D} log P(c_t | x_t^s; \theta_{SI}; \theta_{LHUC}^{m_t})\]

…(4)

其中:s表示第s个speaker,\(m_t \in \lbrace 0, s \rbrace\)会从基于一个Bernoulli分布的\(\theta_{SD} \lbrace \theta_{LHUC}^0, \cdots, \theta_{LHUC}^S \rbrace\)选择SI或DS LHUC变换:

\[k_t \sim Bernoulli(\gamma) \\ m_t = ...\]

…(5)(6)

其中:\(\gamma\)是一个超参数,它表示给定样本的概率,被看成是\(SI\)。SI/SD会在speaker、utterance或frame level上被执行。我们会进一步研究:在VI-B上的该方面。SAT-LHUC模型结构如图4所述,对于不同的speakers来说,注意forward和backward passes的alternative routes。

\(\partial{L_{SAT}}/\partial{h_j^{l,s}}\)表示第l层第j个unit的error BP。为了通过transform进行BP,我们需要将transform自身进行element-wise乘法,如下:

\[\frac{\partial{L_{SAT}}}{\partial \phi_j^l} = \frac{\partial {L_{SAT}}}{\partial h_j^{l,s}} \odot \epsilon (r_j^{l,s})\]

…(7)

为了获得对\(r_j^{l,s}\)的gradient:

\[\partial(L_{SAT}){\partial r_j^{l,s}} = \frac{\partial L_{SAT}}{\partial h_j^{l,s}} \odot \frac{\partial \epsilon(r_j^{l,s})}{\partial r_j^{l,s}} \odot \phi_j^l\]

…(8)

当执行mini-batch SAT training时,你需要显式说明这样的事实:不同data-points会通过不同的transforms进行流动:因为这会产生对于第s个speaker对于\(r_j^{l,s}\)产生的梯度,是属于speaker s的partial gradients的sum:

\[\frac{\partial L_{SAT}}{\partial r_j^{l,s}} = \sum\limits_{t, m_t=s} \frac{\partial L_{SAT}}{\partial h_j^{l,s}} \odot \frac{\partial epsilon(r_j^{l,s})}{\partial r_j^{l,s}} \odot \phi_j^l\]

…(9)

或者对于在给定mini-batch中第s个speaker没有data-points被选中时为0。在本paper中所有adaptation方法需要first-pass decoding来获取adaptation targets,对于unseen test speakers会估计fMLLR变换,或者来执行DNN speaker-dependent参数更新。

#