返回介绍

数学基础

统计学习

深度学习

工具

Scala

十二、DIN [2017]

发布于 2023-07-17 23:38:25 字数 31710 浏览 0 评论 0 收藏 0

  1. cost-per-click: CPC 广告系统中,广告按照 effective cost per mille: eCPM 进行排序。eCPM 是竞价 bid price 和点击率 click-through rate: CTR 的乘积,而 CTR 需要由系统预测,因此 CTR 预估模型的性能直接影响系统最终收入从而在广告系统中起着关键作用。

    CTR 预估模型受到了学术界和工业界的广泛关注。最近,受到深度学习在计算机视觉和自然语言处理中取得成功的启发,人们已经提出了基于深度学习的方法用于 CTR 预估任务。这些方法遵循类似的 Embedding & MLP 范式:首先将大规模稀疏输入特征映射到低维 embedding 向量,然后以 group-wise 方式转换为固定长度的向量,最后拼接在一起并馈入多层感知机 multilayer perceptron: MLP 从而学习特征之间的非线性关系。与常用的逻辑回归模型相比,这些深度学习方法可以减少大量的特征工程工作,大大提升了模型容量 model capability 。为简单起见,在本文中我们将这些方法命名为 Embedding & MLP,它们现在已经在 CTR 预估任务中流行开来。

    然而, Embedding & MLP方法中维度有限的用户 representation 向量将成为表达用户多样化兴趣diverse interests 的瓶颈。以电商网站的展示广告display advertising 为例。用户在访问电商网站时可能同时对不同种类的商品感兴趣,也就是说,用户的兴趣是多样化 diverse 的。当涉及到 CTR 预估任务时,用户兴趣通常是从用户行为数据中捕获的。Embedding & MLP 方法通过将用户行为的 embedding 向量转换为固定长度的向量来学习某个用户所有兴趣的 representation。这个向量位于所有用户的representation 向量所在的欧几里得空间中。换句话讲,用户的多样化兴趣被压缩成一个固定长度的向量,这限制了 Embedding & MLP 方法的表达能力。

    为了使 representation 足以表达用户的多样化兴趣,固定长度向量的维度需要极大地扩展。不幸的是,这会极大地增加模型参数的规模,并加剧有限数据下模型过拟合的风险。此外,这也会增加计算和存储的负担,这种负担对于工业级在线系统而言是不能容忍的。

    另一方面,在预测目标广告时没有必要将某个用户的所有多样化兴趣压缩到单个向量中,因为只有部分用户兴趣才会影响到该用户的行为(点击或不点击)。例如,一位女性游泳爱好者会点击推荐的泳镜,主要是因为她上周购物清单中的泳衣,而不是清单中的鞋子。受此启发,论文 《Deep Interest Network for Click-Through Rate Prediction》提出了一个新模型:深度兴趣网络 Deep Interest Network: DIN

    DIN 通过考虑历史行为与目标广告的相关性来自适应地计算用户兴趣的 representation 向量。通过引入局部激活单元 local activation unitDIN 通过软搜索 soft-searching 历史行为与目标广告的相关部分来关注相关的用户兴趣,并采用加权sum 池化来获得对目标广告的用户兴趣 representation 。与目标广告相关性更高的行为将会获得更高的激活权重 activated weight,并将主导用户兴趣representation。论文在实验部分将这种现象可视化。这样,用户兴趣的 representation 向量随着不同的目标广告而变化,提高了模型在有限维度下的表达能力,使得 DIN 能够更好地捕获用户的多样化兴趣。

    训练具有大规模稀疏特征的工业级深度网络是一项巨大挑战。例如,基于 SGD 的优化方法只更新出现在每个 mibi-batch 中的稀疏特征的参数。然而,如果加上传统的 L2 正则化,则计算变得不可接受,因为这需要为每个 mibi-batch 计算全部参数的 L2 范数。在论文的应用场景中,参数规模高达数十亿。在论文中,作者开发了一种新颖的 mini-batch aware 正则化,其中只有出现在每个 mibi-batch 中的非零特征的参数参与 L2 范数的计算,使得计算可以接受。此外,作者设计了一个数据自适应激活函数,它根据输入分布自适应调整校正点rectified point 来推广常用的 PReLU 激活函数,并被证明有助于训练具有稀疏特征的工业级深度网络。

    论文主要贡献:

    • 指出了使用固定长度向量来表达用户多样化兴趣的局限性,并设计了一种新颖的深度兴趣网络 deep interest network: DIN

      DIN 引入了局部激活单元local activation unit ,从而自适应地根据目标广告从用户历史行为中学习用户兴趣的 representationDIN 可以大大提高模型的表达能力,更好地捕获用户兴趣的多样性特点diversity characteristic

    • 开发了两种新技术来帮助训练工业级深度网络:

      • mini-batch aware 正则化:它可以在具有大量参数的深度网络上节省大量正则化计算,并有助于避免过拟合。
      • 数据自适应激活函数:它通过考虑输入的分布来推广 PReLU 并显示出良好的性能。
    • 对公共数据集和阿里巴巴数据集进行了广泛的实验,实验结果证明了所提出的 DIN 和训练技术的有效性。模型的代码已经公开。所提出的方法已经部署在阿里巴巴的商业展示广告系统commercial display advertising system 中,服务于主流量,为业务带来了显著提升。

    论文聚焦于电商行业展示广告 display advertising 场景下的 CTR 预估建模。这里讨论的方法也可以应用于具有丰富用户行为的类似场景,如电商网站的个性化推荐、社交网络的 feeds 排序。

  2. 相关工作:CTR 预估模型的结构由浅入深,同时 CTR 预估模型中使用的样本数量和特征维度也越来越大。为了更好地提取特征关系从而提高性能,一些工作都关注了模型结构的设计。

    • 作为先驱者,NNLM 为每个单词学习分布式 representation,旨在避免语言模型中的维度诅咒。这种通常被称作 embedding 的方法启发了许多需要处理大规模稀疏输入的 NLP 模型和 CTR 预估模型。
    • LS-PLMFM 模型可以看作是一类具有单个隐层的网络,它们首先在稀疏输入上使用 embedding layer,然后对目标拟合 target fitting 施加专门设计的变换函数 transformation function ,旨在捕获特征之间的组合关系combination relation
    • Deep CrossingWide & DeepYouTube Recommendation CTR model 通过用复杂的 MLP 网络替代了变换函数来扩展 LS-PLMFM,极大地增强了模型容量。
    • PNN 试图通过在 embedding layer 之后引入 product layer 来捕获高阶特征交互。
    • DeepFMWide & Deep 中使用一个 factorization machine: FM 作为 wide 部分,从而无需特征工程。

    总体而言,这些方法遵循相似的模型结构,即结合了 embedding 层(用于学习稀疏特征的稠密representation)和 MLP(用于自动学习特征的组合关系)。这种点击率预估模型大大减少了人工特征工程的工作。

    我们的 base model 遵循这种模型结构。然而,在具有丰富用户行为的 application 中,某些特征通常包含可变长度的 id 列表,例如,YouTube 推荐系统中的历史搜索term 列表、或者历史观看视频列表。已有的模型通常通过 sum 池化或者均值池化将对应的 embedding 向量列表转换为固定长度的向量,这会导致信息丢失。我们提出的 DIN 通过考虑目标广告来自适应地学习 representation 向量,从而解决这个问题,提高了模型的表达能力。

    注意力机制起源于神经机器翻译 Neural Machine Translation: NMT 领域。NMT 对所有 annotations 进行加权求和从而获得预期的 annotation,并且只关注与下一个目标单词相关的信息。最近的一项工作 Deep-Intent 在搜索广告的上下文中应用了注意力。与 NMT 类似,他们使用 RNN 对文本进行建模,然后学习一个全局隐向量来帮助关注每个 query 中的所有关键词。结果表明,注意力的使用有助于捕获 query 或广告的主要意图。

    DIN 设计了一个局部激活单元 local activation unit 来软搜索 soft-search相关的用户行为,并采用加权 sum 池化来获得用户关于目标广告兴趣的自适应representation 。不同广告的用户 representation 向量不同,这与广告和用户之间没有交互的 DeepIntent 不同。

    我们公开了代码,并进一步展示了如何在世界上最大的广告系统之一中成功部署 DIN,并使用新颖的开发技术来训练具有数亿个参数的大规模深度网络。

  3. 背景:在阿里巴巴等电商网站中,广告是天然的商品。在本文的其余部分,如果没有特别声明,我们将广告视为商品。下图简要说明了阿里巴巴展示广告系统的运行过程,它主要包括两个阶段:

    • mathcing 阶段:通过协同过滤等方法生成与访问用户相关的候选广告列表。
    • ranking 阶段:预测每个目标广告的点击率,然后选择排名靠前的广告。

    每天,数以亿计的用户访问电商网站,给我们留下了大量的用户行为数据,这些数据对构建 mathcing 模型和 ranking 模型至关重要。值得一提的是,具有丰富历史行为的用户包含多样化的兴趣。例如,一位年轻的妈妈最近浏览了羊毛大衣、T shirt、耳环、手提包、包包、儿童外套等商品。这些行为数据为我们提供了有关她购物兴趣的提示。当她访问电商网站时,系统会向她展示一个合适的广告,例如一个新的手提包。显然,展示的广告只匹配或激活了这位母亲的部分兴趣。

    总之,对于丰富行为的用户,其兴趣是多样化diverse 的,并且可以在给定某些广告的情况下局部激活locally activated 。我们将在本文后面展示利用这些特点在构建 CTR 预估模型中起着重要作用。

12.1 模型

  1. 与赞助搜索sponsored search 不同,在展示广告系统中用户没有显式地表达意图。在构建点击率预估模型时,需要有效的方法从丰富的历史行为中抽取用户兴趣。描述用户和广告的特征是广告系统点击率建模的基本要素 basic elements 。合理利用这些特征并从中挖掘信息至关重要。

12.1.1 Feature Representation

  1. 工业 CTR 预估任务中的数据大多数采用多组multi-group 离散categorial 的形式,例如 { weekday=Friday, gender=Female, visited_cate_ids={Bag,Book}, ad_cate_id=Book } 等。数据会通过 one-hot 编码转换为高维稀疏特征。

    • 对于第 $ i $ 组特征(如年龄),假设有 $ K_i $ 个 unique 值,则我们将这一组特征编码为 one-hot 向量 $ \mathbf{\vec t}_i=[t_{i,1},\cdots,t_{i,K_i}]^\top \in \mathbb R^{K_i} $ 。其中第 $ j $ 个元素为 $ t_{i,j}\in \{0,1\} $ ,当 $ t_{i,j}=1 $ 时表明第 $ i $ 组特征的原始值为 $ j $ 。
    • 对于某组特征取值为多个离散值的情况,类似地我们进行 multi-hot 编码。其中 $ \sum_{j=1}^{K_i} t_{i,j} = k $ ,当 $ k=1 $ 时表示 one-hot 编码、 $ k\gt 1 $ 时表示 multi-hot 编码。

    假设一共有 $ M $ 组特征,则样本可以表示为 $ \mathbf{\vec x}=\left[\mathbf{\vec t}_1\|\cdots \|\mathbf{\vec t}_M\right]\in \mathbb R^{K} $ ,其中 $ || $ 表示向量拼接, $ K=\sum K_i $ 为样本特征维度。

    这样,上述具有四组特征的样本可以表示为:

    $ \mathbf{\vec x} = [\underbrace{0,0,0,0,1,0,0}_{\text{weekday = Friday}},\;\underbrace{0,1}_{\text{gender=Female}},\;\underbrace{0,\cdots,1,\cdots,1,\cdots,0}_{\text{visited_cate_ids={Bag,Book}}},\;\underbrace{0,\cdots,1,\cdots,0}_{\text{ad_cate_id=Book}}] $
  2. 我们系统中使用的所有特征如下表所示。我们将其划分为四类:

    • 用户画像特征User Profile Features:包括用户基础画像如年龄、性别等。
    • 用户行为特征User Behavior Features:包括用户历史访问的商品信息(如商品 id、店铺id、商品类目 id 等)。该特征通常是 multi-hot encoding 向量,包含丰富的用户兴趣信息。
    • 广告特征Ad Features:包括广告的商品id、店铺id、商品类目 id 等。
    • 上下文特征Context Features:包括访问时间等。

    这里不包含任何组合特征combination features ,特征交互由神经网络来捕获。

12.1.2 Base Model

  1. 大多数流行的模型结构采用类似的 Embedding & MLP 范式,我们将其称作 base model,如下图所示。base model 由几个部分组成:

    • Embedding Layer:由于模型输入是高维稀疏的 binary 向量,因此 embedding 层用于将它们转换为低维稠密的 representation

      对于第 $ i $ 个 feature group $ \mathbf{\vec t}_i $ ,令 $ \mathbf W^{(i)}\in \mathbb R^{D\times K_i} $ 为第 $ i $ 个 embedding dictionary,其中第 $ j $ 列 $ \mathbf{\vec w}_j^{(i)}\in \mathbb R^D $ 为第 $ i $ 个 feature group 取值为 $ j $ 对应的 embedding 向量, $ D $ 为 embedding 维度。embedding 操作遵循 table lookup 机制。

      • 如果 $ \mathbf{\vec t}_i $ 是一个 one-hot 特征向量,且第 $ j $ 个元素 $ t_{i,j}=1 $ ,则该 feature group 被映射为单个 embedding 向量 $ \mathbf{\vec e}_i=\mathbf{\vec w}_j^{(i)} $ 。
      • 如果 $ \mathbf{\vec t}_i $ 是一个 multi-hot 特征向量,且位置 $ j\in \{j_1,\cdots,j_k\} $ 取值为 1,则该 feature group 被映射为多个 embedding 向量 $ \{\mathbf{\vec e}_{i_1},\cdots,\mathbf{\vec e}_{i_k}\}=\left\{\mathbf{\vec w}_{j_1}^{(i)},\cdots,\mathbf{\vec w}_{j_k}^{(i)}\right\} $ ,其中 $ k $ 为multi-hot 非零元素的数量。
    • Pooling layer and Concat layer:注意,不同的用户有不同数量的行为。因此 multi-hot 行为特征向量 $ \mathbf{\vec t}_i $ 的非零值的数量 $ k $ 因人而异,导致相应的 embedding 向量列表的长度是可变的。由于全连接网络只能处理固定长度的输入,因此通常的做法是通过池化层将 embedding 向量列表转换为固定长度的向量:

      $ \mathbf{\vec e}_i = \text{pooling}(\mathbf{\vec e}_{i_1},\cdots,\mathbf{\vec e}_{i_k}) $

      两个最常用的池化层是 sum 池化和均值池化,它们对 embedding 向量列表执行 element-wise 的求和、求均值。

      embedding 层和池化层都以 group-wise 的方式执行,从而将原始稀疏特征映射到多个固定长度的 representation 向量中。然后将所有 group-wise representation 向量拼接在一起从而获得样本的整体 representation 向量。

    • MLP:给定拼接好的、稠密的整体representation 向量,全连接层用于自动学习特征组合。最近开发的方法Wide & DeepPNNDeepFM 等聚焦于设计 MLP 的结构以便更好地提取信息。

  2. 损失函数:base model 中使用的目标函数是负的对数似然:

    $ \mathcal L = -\frac 1N \sum_{(\mathbf{\vec x},y)\in \mathbb D}\left[y\log p(\mathbf{\vec x}) + (1-y)\log (1-p(\mathbf{\vec x}))\right] $

    其中:

    • $ \mathbb D $ 为训练集, $ N $ 为训练样本数量。
    • $ \mathbf{\vec x} $ 为样本特征, $ y\in \{0,1\} $ 为样本标签。
    • $ p(\mathbf{\vec x}) $ 为sigmoid 输出层的输出概率,表示样本被点击的概率。

12.1.3 DIN

  1. 在所有这些特征中,用户行为特征至关重要,并且在电商应用场景中对用户兴趣建模起到关键作用。base model 通过聚合用户行为 feature group 上的所有 embedding 向量来获得用户兴趣的固定长度 representation 向量。对于给定的用户,无论目标广告是什么,该 representation 向量都保持不变。这样,维度有限的用户 representation 向量将成为表达用户多样化兴趣的瓶颈。

    为了让模型足够强大,一个简单的方法是扩大 embedding 向量的维度。不幸的是,这会大大增加模型参数的规模,从而导致在有限训练数据下模型过拟合,同时增加计算和存储的负担,这对于工业在线系统而言是无法容忍的。

    是否有一种优雅的方案在有限维度下通过单个向量来表达用户的多样化兴趣?用户兴趣的局部激活特点local activation characteristic 给了我们灵感,从而使得我们设计了一个新颖的、叫做深度兴趣网络deep interest network: DIN 模型。

    想象一下前面提到的年轻妈妈访问电商网站时,她发现展示的新款手提包很可爱并点击它。我们来剖析一下点击动作的驱动力。目标广告通过软搜索 soft-searching 她的历史行为,发现她最近浏览了 tote bagleather handbag 等类似商品。换句话讲,与目标广告相关的行为对点击行为有很大贡献。

    DIN 通过关注目标广告相关的局部激活兴趣representation 来模拟该过程。DIN 不是用单个向量来表达用户的所有多样化兴趣,而是通过考虑历史行为与目标广告的相关性来自适应地计算用户兴趣的 representation。因此,同一个用户的兴趣representation 向量因不同的目标广告而异。

  2. 下图说明了 DIN 的架构。和 base model 相比,DIN 引入了一种新颖设计的局部激活单元 local activation unit ,其它结构保持相同。

    具体而言,局部激活单元作用于用户行为特征(作为加权 sum 池化),从而自适应地计算目标广告 $ A $ 的用户 representation $ \mathbf{\vec v}_U $ :

    $ \mathbf{\vec v}_U(A) = f\left(\mathbf{\vec v}_A,\mathbf{\vec e}_1 ,\cdots,\mathbf{\vec e}_{H}\right) = \sum_{j=1}^H a\left(\mathbf{\vec e}_j,\mathbf{\vec v}_A\right)\mathbf{\vec e}_j= \sum_{j=1}^H \beta_j\mathbf{\vec e}_j $

    其中:

    • $ \{\mathbf{\vec e}_1,\cdots,\mathbf{\vec e}_H\} $ 为用户 $ U $ 的、长度为 $ H $ 的历史行为 embedding 向量的列表。

    • $ \mathbf{\vec v}_A $ 为广告 $ A $ 的 embedding 向量。

    • $ a(\cdot) $ 是一个前馈神经网络,它的输出为激活权重 $ \beta_j\in \mathbb R $ 。

      在 $ a(\cdot) $ 的前馈神经网络中,除了 $ \mathbf{\vec e}_j,\mathbf{\vec v}_A $ 这两个 embedding 作为输入之外,我们还将它们的外积 out product 作为输入,这是有助于显式建模相关性。

    • $ \mathbf{\vec v}_U(A) $ 为用户 $ U $ 针对广告 $ A $ 的用户的兴趣representation 向量,它随着不同的广告而变化。

  3. 局部激活单元与 NMT 任务中开发的注意力方法具有相似的思想。然而,与传统的注意力方法不同,我们放松了 $ \sum_i w_i = 1.0 $ 的约束,这是为了保留用户兴趣的强度。也就是说,我们放弃了对 $ a(\cdot) $ 的输出使用 softmax 归一化。相反, $ \sum_i w_i $ 的值在某种程度上被视为激活用户兴趣强度的近似approximation

    例如,假设一个用户的历史行为包含 90% 的衣服和 10% 的电子产品。给定关于 T shirt 和手机的两个目标广告,T shirt 激活了大部分属于衣服的历史行为,并且可能比手机获得更大的 $ \mathbf{\vec v}_U $ 值(更高的兴趣强度)。传统的注意力方法通过对 $ a(\cdot) $ 的输出进行归一化从而失去了对 $ \mathbf{\vec v}_U $ 数值尺度numerical scale 上的区分度。

  4. 我们尝试过 LSTM 以序列方式对用户历史行为数据进行建模,但是没有显示出任何改善。与 NLP 任务中受语法约束的文本不同,用户历史行为序列可能包含多个并发concurrent 的兴趣。对这些兴趣的快速跃迁和突然结束导致用户行为序列数据看起来充满噪音。

    一个可能的方向是设计特殊的结构从而以序列方式对此类数据进行建模。我们将其留待未来研究。

12.1.4 训练技巧

  1. 在阿里巴巴的广告系统中,商品和用户的数量达到了数亿。实际上,训练具有大规模稀疏输入特征的工业级深度网络具有很大挑战。这里我们将介绍两种在实践中被证明有用的重要技术。

a. Mini-batch Aware 正则化

  1. 过拟合是训练工业级深度网络的关键挑战。当添加细粒度特征时,例如维度为 6 亿的 goods_id 特征(包括用户 visited_goods_ids 特征、广告 goods_id 特征),如果没有正则化,则在训练的第一个 epoch 之后,模型性能迅速下降,如下图所示的深绿色线所示。

    将传统的正则化方法,如 L2 正则化和 L1 正则化,直接应用于具有稀疏输入和数亿参数的网络是不切实际的。以 L2 正则化为例,在没有正则化的、基于 SGD 优化方法的场景中,只需要更新每个 mini-batch 中出现的非零稀疏特征的参数。然而,当添加 L2 正则化时,它需要在每个 mini-batch 对所有参数计算 L2 范数,这导致计算量非常大,并且在参数扩展到数亿时是不可接受的。

    在本文中,我们引入了一种高效的 mini-batch aware 的正则化器regularizer,它只计算每个 mini-batch 中出现的稀疏特征的参数的 L2 范数,使得正则化计算可行。

  2. 事实上,embedding dictionaryCTR 模型贡献了大部分参数,并产生了繁重 heavy 的计算。

    令 $ \mathbf W\in \mathbb R^{D\times K} $ 表示整个 embedding dictionary 的参数, $ D $ 为 embedding 向量的维度、 $ K $ 为特征空间的维度。在所有样本上对 $ \mathbf W $ 进行 L2 正则化:

    $ L_2(\mathbf W) = \left\|\mathbf W\right\|_2^2=\sum_{j=1}^K\left\|\mathbf {\vec w}_j\right\|_2^2\simeq\sum_{j=1}^K\frac{\sum_{(\mathbf{\vec x},y)\in \mathbb D} I(x_j\ne 0)}{n_j}\left\|\mathbf {\vec w}_j\right\|_2^2=\sum_{(\mathbf{\vec x},y)\in \mathbb D}\sum_{j=1}^K\frac{I(x_j\ne 0)}{n_j}\left\|\mathbf {\vec w}_j\right\|_2^2 $

    其中:

    • $ \mathbf{\vec w}_j\in \mathbb R^D $ 为第 $ j $ 个 embedding 向量。
    • $ I(x_j\ne 0) $ 为示性函数,当样本的第 $ j $ 个特征 $ x_j\ne 0 $ 是该函数取值为 1,否则取值为零。
    • $ n_j = \sum_{(\mathbf{\vec x},y)\in \mathbb D} I(x_j\ne 0) $ 表示在所有样本中第 $ j $ 个特征 $ x_j\ne 0 $ 的样本数量。

    这里之所以使用 $ \simeq $ ,是因为忽略了样本集中从未出现过的特征对应的 embedding 向量的正则化。事实上,如果某个特征 $ x_{j*} $ 在训练集中始终为 0(表示该特征从未出现过,即 $ n_{j^*} = 0 $ ),则对应的 embedding 向量 $ \mathbf{\vec w}_{j*} $ 始终不会被更新,对它的正则化就没有意义。在模型中对应的神经元始终取值为零,对模型整体没有影响。这样一来 $ \mathbf{\vec w}_{j*} $ 的取值完全依赖于随机初始化。

  3. 上式可以转换为 mini-batch aware 的方式:

    $ L_2(\mathbf W) =\sum_{j=1}^K\sum_{m=1}^B\sum_{(\mathbf{\vec x},y)\in \mathbb B_m} \frac{I(x_j\ne 0)}{n_j}\left\|\mathbf {\vec w}_j\right\|_2^2 $

    其中: $ \mathbb B_m $ 表示第 $ m $ 个 mini-batch , $ B $ 为总的 mini-batch 数量。

    令 $ \alpha_{m,j} = \max_{(\mathbf{\vec x},y)\in \mathbb B_m}I(x_j\ne 0) $ 表示 $ x_j \ne 0 $ 在 $ \mathbb B_m $ 中是否至少出现1 次,则上式可以近似为:

    $ L_2(\mathbf W) \simeq\sum_{j=1}^K\sum_{m=1}^B \frac{ \alpha_{m,j}}{n_j}\left\|\mathbf {\vec w}_j\right\|_2^2 $

    注意: $ \alpha_{m,j} $ 取值为01 。理论上应该将 $ \alpha_{m,j} $ 取值为 $ \mathbb B_m $ 中特征 $ x_j\ne 0 $ 出现的次数。但是由于 mini-batch 通常很小,绝大多数特征最多仅出现一次。

    这样我们得到了 L2 正则化的 mini-batch aware 版本,其中 embedding 向量的更新方程为:

    $ \mathbf{\vec w}_j\leftarrow \mathbf{\vec w}_j - \eta\left[\frac {1}{|\mathbb B_m|} \sum_{(\mathbf{\vec x},y)\in \mathbb B_m} \nabla _{\mathbf{\vec w}_j} L(p(\mathbf{\vec x}),y) + \lambda \frac {\alpha_{m,j}}{n_j}\mathbf{\vec w}_j\right] $

    其中:

    • $ \mathbb B_m $ 表示第 $ m $ 个 mini-batch
    • $ y $ 为样本标签, $ p(\mathbf{\vec x}) $ 为模型输出, $ L(\cdot) $ 为损失函数。
    • $ \eta $ 为学习率, $ \lambda $ 为正则化系数。
    • $ \alpha_{m,j} $ 表示 $ x_j\ne 0 $ 在 $ \mathbb B_m $ 中是否至少出现1 次, $ n_j $ 表示在所有样本中 $ x_j\ne 0 $ 的样本数量。

    现在 mini-batch 中仅对该 mini-batch 出现过的特征对应的 embedding 向量进行正则化。

b. 数据自适应激活函数

  1. PReLU 激活函数是一种广泛应用的激活函数,其定义为:

    $ f(s) = \begin{cases} s,&\text{if}\; s\gt 0 \\ \alpha s ,&\text{if}\; s\le 0 \end{cases} = p(s)\times s + (1-p(s))\times \alpha s $

    其中:

    • $ p(s) = I(s\gt 0) $ 是示性函数,它控制 $ f(s) $ 在 $ f(s)=s $ 和 $ f(s)=\alpha s $ 这两个通道 channel 之间切换。

      这里我们将 $ p(s) $ 称作控制函数control function

    • $ \alpha $ 是待学习的参数。

  2. PReLU 采用值为 0hard rectified point ,当每层的输入遵循不同的分布时,这可能不合适。有鉴于此,我们设计了一个名为 Dice 的新的数据自适应激活函数:

    $ f(s) = p(s)\times s + (1-p(s))\times \alpha s\\ p(s) = \frac{1}{ 1+\exp\left(-\frac{s - \mathbb E[s]}{\sqrt{\text{Var}[s]}+\epsilon}\right) } $
    • 在训练阶段, $ \mathbb E [s] $ 和 $ \text{Var}[s] $ 是每个 mini-batch 中输入的均值和方差。
    • 在测试阶段, $ \mathbb E [s] $ 和 $ \text{Var}[s] $ 是通过数据集上的移动平均 $ \text E[s] $ 和 $ \text{Var}[s] $ 计算的。
    • $ \epsilon $ 是一个小的常数,在我们的实践中设置为 $ 10^{-8} $ 。

    新的控制函数如下图右侧所示(左侧为 PReLU 的控制函数)。

    不同配置下的 Dice 激活函数如下图所示。

  3. Dice 可以看做是 PReLU 的泛化,其重要思想是根据输入数据的分布自适应调整 rectified point (为输入的均值)。

    另外,Dice 平滑地控制在两个 channel 之间切换。

    最后,当 $ \mathbb E[s]=0 $ 且 $ \text{Var} [s] = 0 $ 时,Dice 退化为 PReLU

12.1.5 在线部署

  1. 值得一提的是,每天都有成千上万的用户来访问我们的系统,对工业深度网络进行在线serving 并非易事。更糟糕的是,在流量高峰期间,我们的系统每秒为超过 100 万用户提供serving。这要求以高吞吐量、低延迟进行实时 CTR 预估。例如,在我们的真实系统中,我们需要在不到 10ms 的时间内为每个用户预估数百个广告的 ctr

    在我们的工程实践中,我们部署了几种重要技术来加速 CPU-GPU 架构下的工业深度网络的在线 serving

    • request batching:合并来自 CPU 的相邻请求从而利用 GPU 的性能。
    • GPU 内存优化:改进 GPU 内存访问方式,从而减少 GPU 内存中的无效的事务transaction
    • 并发的 kernel 计算:允许使用多个 CUDA kernel 同时处理矩阵计算。

    总之,这些技术的优化实际上使得单台机器的 Query Per Second: QPS 翻了一倍。

12.2 实验

  1. 这里我们详细介绍了我们的实验,包括数据集、评估指标、实验设置、模型比较、以及相应的分析。在包含用户行为的两个公共数据集以及从阿里巴巴展示广告系统收集的数据集上进行的实验证明了所提出方法的有效性,该方法在 CTR 预测任务上优于 state-of-the-art 的方法。

  2. 数据集:

    • Amazon 数据集:包含来自亚马逊的商品评论和商品元数据。该数据集通常用作 benchmark 数据集。我们在 Electronics (电子产品)的数据子集上进行实验,该子集包含 192403 个用户、63001 个商品、801 个类目,总计 1689188 个样本。

      数据集中用户行为丰富,每个用户有给出超过 5 条评论,每个商品也收到至少5 条评论。特征包括 goods_id,cate_id,以及用户查看的 goods_id_list, cate_id_list

      任务的目标是根据用户的前 $ k $ 个评论的商品来预测第 $ k+1 $ 个评论的商品。对于每个用户,我们使用 $ k=1,\cdots,n-2 $ 来生成训练集,使用 $ k=n-1 $ 来生成测试集。

      对于所有模型,我们使用指数衰减的 SGD 优化器,初始学习率为 1.0decay rate = 0.1mini-batch size = 32

    • MovieLens 数据集:包含 138493 个用户、27278 部电影、21 个类目,总计 20000263 个样本。原始的电影评分是 0~5 的连续值,为了使其适合 CTR 预估任务,我们将其转换为二类分类数据:电影评分为45 分的标记为正样本、其它评分的标记为负样本。

      我们根据用户ID 来拆分训练集和测试集。我们随机选择 100000 个用户作为训练集(约 14470000 万个样本),剩余的 38493 个用户作为测试集(约 553 万个样本)。

      任务的目标是根据用户历史行为来预测用户是否将给定的电影评分高于 3 分(正标记)。

      特征包括:movie id, movie_cate_id,以及用户评级过的 moive_id_list, movie_cate_id_list

      我们使用和 Amazon 数据集相同的优化器、学习率、以及 mini batch size

    • Alibaba 数据集:从阿里巴巴在线展示广告系统online display advertising system 收集的流量日志,其中连续两周的样本用于训练、接下来一天的样本用于测试。训练集规模为 20 亿、测试集规模为 1.4 亿。

      对所有的深度模型,每一组特征的 embedding 向量维度为 16MLP 的层数为 192 x 200 x 80 x2。由于数据量巨大,我们将 mini-batch size=5000,并使用 Adam 优化器。我们使用指数衰减,其中学习率从 0.001 开始、衰减率为 0.9

    所有数据集的统计信息如下表所示。上标的 a 表示:对于MovieLens 数据集goods 代表电影。

  3. baseline方法:

    • LR:逻辑回归模型。它是一种广泛用于 CTR 预估任务的浅层模型,我们将其作为 weak baseline 方法。

    • Base Model:如前所述的遵循 Embedding & MLP 架构的模型。它是后续大多数建模 CTR 的深度网络的基础。它充当我们模型比较的 strong baseline

    • Wide & DeepWide & Deep 模型。它由wide 部分和 deep 部分组成,其中 :wide 部分处理手动设计的交叉特征;deep 部分自动抽取特征之间的非线性关系,等同于 Base Model

      由于 wide 部分需要专业的特征工程来作为输入,这里我们将用户行为和候选item 的叉积 cross-product 作为 wide input 。例如,在 MovieLens 数据集中,我们用的是用户历史评分电影和候选电影之间的叉积 。

    • PNN:它在 embedding 层之后引入 product layer 从而捕获高阶特征交互。可以将 PNN 视为 BaseModel 的改进版。

    • DeepFM:通过将 Wide&Deep 中的 wide 部分替换为 FM,它可以视为 Wide&Deep 的改进版。

  4. 评估指标:

    • CTR 预估领域,AUC 是一个广泛使用的指标。它利用预估的 CTR 对所有样本进行排序来衡量排序的优劣。GAUCAUC 的推广,它是用户加权 AUC 的变体,通过对用户的 AUC 求加权均值来衡量用户侧排序的优劣。一些工作表明,GAUC 与展示广告系统中的在线性能更相关。

      GAUC 的计算如下:

      $ \text{GAUC} = \frac{\sum{i=1}^n w_i\times \text{AUC}i}{\sum{i=1}^n w_i} = \frac{\sum{i=1}^n \text{imp}i\times \text{AUC}i}{\sum{i=1}^n \text{imp}i} $

      其中: $ \text{AUC}_i $ 表示用户 i 的所有样本对应的 auc ; $ \text{imp}_i $ 是用户 i 的所有样本数; $ n $ 为用户总数。

      为了简单起见,后面我们仍然将 GAUC 称作 AUC

      事实证明:GAUC 在展示广告中更具有指导意义。 AUC 考虑所有样本的排名,而事实上在线上预测时,对于给定用户我们只需要考虑针对该用户的一组候选广告的排名。

      GAUC 对每个用户单独进行处理,先考虑每个用户的预测结果,再对所有用户进行加权。这可以消除用户 bias 的影响。如:模型倾向于对女性用户打高分(预测为正的概率较高),对男性用户打低分(预测为正的概率较低)。

      • 如果采用AUC 则指标效果一般,因为男性正样本打分可能低于女性负样本。
      • 如果采用 GAUC 则指标效果较好,因为男性用户、女性用户各自的 AUC 都较高,加权之后的 GAUC 也较高。这和线上投放的方式一致。
    • RelaImpr 指标衡量模型的相对提升。对于完全随机的模型,AUC 的值为 0.5。因此 RelaImpr 的定义为:

      $ \text{RelaImpr} = \left(\frac{\text{AUC}(\text{target model})-0.5}{\text{AUC}(\text{base model})-0.5}-1\right)\times 100\% $

    注意:所有指标都是在测试集上进行。

  5. 下表给出了 Amazon 数据集和 MovieLens 数据集的实验结果。所有实验重复 5 次并报告平均结果。其中 RelaImpr 表示相对 BaseModel 的提升。

    可以看到:

    • 所有深度模型都大幅超越了 LR 模型,这证明了深度学习的力量。
    • 具有特殊设计结构的 PNNDeepFM 超越了 Wide & Deep
    • DIN 在所有方法中表现最好。这归因于 DIN 中的局部激活单元结构的设计。通过这种设计,DIN 获得了用户兴趣的自适应的、不同的 representation ,这极大地提高了模型的表达能力。
    • DiceDINDIN 进一步地提升,从而证明了数据自适应激活函数 Dice 的有效性 (其它模型使用 PReLU 激活函数)。

  6. 由于 Amazon 数据集和 MovieLens 数据集的特征维度不太高(约 10 万维),因此所有的深度模型(包括我们提出的 DIN)都未遇到严重的过拟合问题。但是,在 Alibaba 数据集中涉及到非常高维度的特征,过拟合将成为一个严重的挑战。例如,当训练细粒度特征(如 goods_ids 特征具有 6 亿维)的深度学习模型时,如果没有正则化,那么训练的第一个 epoch 就会发生严重的过拟合,这会导致模型性能迅速下降,如下图的深绿色曲线所示。

    因此我们进行详细的实验来检查几种常用正则化的性能:

    • dropout:在每个样本中,随机丢弃 50%feature id

    • 人工频率过滤:在每个样本中,人工去掉历史行为中的低频商品ID,保留高频商品ID 。在我们的实验中,我们保留 top 2000 万 的商品 id

    • DiFacto 正则化:正则化系数 $ \lambda = 0.01 $ :

      $ \mathbf{\vec w}_j \leftarrow \mathbf{\vec w}_j-\eta\left[\frac 1{|\mathbb B_m|} \sum_{(\mathbf{\vec x} ,y )\in \mathbb B_m} \nabla_{\mathbf{\vec w}_j} L(p(\mathbf{\vec x}),y) +\lambda \alpha_{m_j} n_j\mathbf{\vec w}_j\right] $

      其中低频特征的正则化幅度更小。

    • MBA:我们提出的 mini-batch aware 正则化,正则化系数 $ \lambda = 0.01 $ :

      $ \mathbf{\vec w}_j\leftarrow \mathbf{\vec w}_j - \eta\left[\frac {1}{|\mathbb B_m|} \sum_{(\mathbf{\vec x},y)\in \mathbb B_m} \nabla _{\mathbf{\vec w}_j} L(p(\mathbf{\vec x}),y) + \lambda \frac {\alpha_{m,j}}{n_j}\mathbf{\vec w}_j\right] $

      其中低频特征的正则化幅度更大。

    Base ModelAlibaba 数据集上不同正则化的效果如下表所示。其中 RelaImpr 是相对于没有正则化(第一行)的提升。训练loss 曲线、测试 loss 曲线、测试 auc 曲线参考下图所示。可以看到:

    • 和没有 good_ids 特征的模型相比,带有 goods_ids 特征的模型在测试 AUC 上都有所提升。这是因为用户历史行为包含丰富的信息。
    • 对于带 good_ids 特征的模型,如果没有正则化则过拟合会迅速发生(深绿色曲线)。
    • dropout 可以防止过拟合,但是会导致收敛速度变慢。
    • 人工频率过滤某种程度上可以缓解过拟合。但是它直接丢弃了大多数低频 good id,使得模型失去机会来更好地利用细粒度特征(即历史行为中的低频商品)。
    • DiFacto 会对高频的 good_id 设置更高的惩罚,其效果要比人工频率过滤更差。
    • 我们提出的 mini-batch aware 正则化效果最好,它可以有效防止过拟合。

  7. 下表给出了 Alibaba 数据集的实验结果。RelaImpr 表示相对于 BaseModel 的提升。 a 表示使用 PReLU 作为激活函数,b 表示使用 dropout 正则化。可以看到:

    • LR 比所有深度模型要弱得多。

    • 使用相同的激活函数和正则化的条件下,DIN 比其它所有深度模型都要好。

      BaseModel 相比,DIN 实现了 0.0059 的绝对 AUC 增益和 6.08%RelaImpr。这再次验证了局部激活单元结构的有用设计。

    • 基于 DIN 的消融研究证明了 mini-batch aware: MBA 正则化和 Dice 激活函数的有效性。

      • 使用 mini-batch aware 正则化器的 DINdropout 带来额外的 0.0031 的绝对 AUC 增益。
      • DIN with DicePReLU 带来了额外的 0.0015 的绝对 AUC 增益。

    总而言之,相比较于 BaseModel,带有 MBA 正则化和 DiceDIN 实现了总的 11.65%RelaImpr0.0113 的绝对 AUC 增益。即使与表现最佳的 baseline DeepFM 相比,DIN 仍然实现了 0.009 的绝对 AUC 增益。值得注意的是,在具有亿级流量的商业广告系统中,0.001 的绝对 AUC 提升就非常重要,值得模型的部署。DIN 显示出极大的优势来更好地理解和利用用户行为数据的特征。

    此外,我们提出的 MBA 正则化和 Dice 激活函数进一步提高了模型的性能,为训练大规模工业深度网络提供了有力的帮助。

  8. 我们在阿里巴巴的展示广告系统 从 20175 月到 20176 月进行了在线 A/B test 实验。在近一个月的测试中,和我们最新版的 BaseModel 模型(online-serving 模型)相比,我们带 MBA 正则化和 Dice 激活函数的 DIN 提升了 10.0%CTR3.8%RPM(千次收入 Revenue Per Mille: RPM) 。这是一项重大的提升,并证明了我们提出的方法的有效性。目前 DIN 已经部署并服务于主要流量。

  9. 可视化:我们在 Alibaba 数据集上进行案例研究来揭示 DIN 的内部结构。

    • 首先,我们研究了局部激活单元的有效性。下图给出了用户行为关于候选广告的激活强度。正如预期的那样,和候选广告相关的行为的权重较高。

    • 然后,我们将学到的 embedding 向量可视化。我们选择一位年轻的母亲,然后随机选择9 个类目(服装、运动鞋、箱包等)、每个类目 100 种商品作为她的候选广告。下图给出了 DIN 学到的商品 embedding 进行 t-SNE 可视化的结果,其中相同形状的点对应同一个类别。

      可以看到:具有相同类目的商品几乎都在同一个簇cluster,这清楚地展示了 DIN 的聚类属性clustering property

      此外,我们根据模型预估的 ctr 来对候选广告的点进行染色。因此下图也是用户在 embedding 空间中对潜在候选广告的兴趣密度分布。这表明:DIN 可以在候选广告的 embedding 空间中形成多峰兴趣分布,从而捕获用户的多样化兴趣。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文