CTR 预估模型:神经网络模型

  1. CTR 预估模型主要用于搜索、推荐、计算广告等领域的 CTR 预估,其发展经历了传统 CTR 预估模型、神经网络CTR 预估模型。

    • 传统 CTR 预估模型包括:逻辑回归LR 模型、因子分解机FM 模型、梯度提升树 GBDT 模型等。

      其优点是:可解释性强、训练和部署方便、便于在线学习。

    • 神经网络 CTR 预估模型包括:DSSM

一、DSSM

  1. 在搜索广告的场景中,querydocument 使用不同的单词、同一个单词的不同形态(如:缩写、时态、单复数)来表达同一个概念。如果简单的通过文本的单词匹配来计算 querydocument 的相似性,则效果不好。

    • 一种解决方式是:利用潜在语义模型latent semantic model (如:LSA),将 querydocument 都降维到低维语义空间,然后根据二者在低维空间的距离来计算二者相似度。

    • 论文 "Learning Deep Structured Semantic Models for Web Search using Clickthrough Data" 提出 Deep Structured Semantic Model:DSSM 模型,该模型也是将 querydocument 降维到公共的低维空间。

      在该低维空间中,querydocument 的相似性也是通过二者的距离来衡量。

      它和 LSA 的区别:

      • LSA 的低维空间是通过无监督学习,利用单词的共现规律来训练。
      • DSSM 的低维空间是通过有监督学习,利用 (query,document) pair 对的点击规律来训练。

      最终实验表明:DSSM 模型要优于 LSA 模型。

  2. 为解决搜索广告中词汇量大的问题(即:词汇表过于庞大),模型采用了 word hash 技术。

1.1 模型

  1. DSSM 模型将原始的文本特征映射到低维的语义空间。

    • 首先将 querydocument 表示为词频向量,该向量由每个单词出现的词频组成。

      如:query = 苹果手机 价格document = Iphone Xs 最低 售价 11399 元 Iphone X 价格 6999 元

      构建词汇表:

      则得到 query 向量和 document 向量为:

  1. 假设输入向量为 ,输出向量为 ,网络一共有 层。

    对于 query,输入就是 ,输出就是 ;对于 document,输入就是 ,输出就是

    层的隐向量为:

    其中:

    • 为激活函数。论文(2013年)采用 tanh 激活函数,但是现在推荐 relu 激活函数。
    • 为待学习的网络参数。
  2. 给定 query document ,用户点击该文档的概率为:

    其中 为平滑因子,它是一个超参数,需要根据验证集来执行超参数搜索; 是候选的文档集合。

    实际应用中,给定一对点击样本 ,我们从曝光但是未点击的文档中随机选择 篇文档作为负样本 ,则

    论文中选择 ,并且论文表示: 不同的负采样策略对结果没有显著影响。

    模型训练的目标是:最大化点击样本的对数似然:

    然后基于随机梯度下降优化算法来求解该最优化问题。

    注意:这里并没有计算负样本的概率 ,负样本的信息在计算概率 时被使用。

1.2 word hash

  1. 在将 query/document 的文本转化为输入向量的过程中,输入向量的维度等于词表的大小。由于实际 web search 任务中的词汇表非常庞大,这导致 DSSM 网络的输入层的参数太多,模型难以训练。

    假设词汇表有50万,经过 embedding 之后的维度为300维,则输入层权重为 ,一共 1.5亿参数。

    为解决该问题,DSSM 模型在第一层引入 word hash 技术。该层是一个线性映射,虽然参数非常多,但是这些参数不需要更新和学习。

  2. word hash 技术用于降低输入向量的维度。给定一个单词,如:goodword hash 的步骤为:

    • 首先添加开始标记、结束标记:#good#
    • 然后将其分解为字符级的 n-gram 格式:#go,goo,ood,od#n=3 时)
    • 最后将文本中的单词 good 用一组 char-level n-gram 替代。
  3. 虽然英语词汇的数量可以是无限的(可以出现大量的、新的合成词),但是英语(或其它类似语言)的字符n-gram 数量通常是有限的。因此word hash 能够大幅降低词汇表的大小。

    50万规模的词汇表经过 word hash 之后降低到3万规模,这使得输入层的参数降低到 900万(假设 embedding 维度为 300 维)。相比较于原始的1.5亿,参数降低到原始数量的 1/16 。

    除此之外,word-hash 技术还有以下优点:

    • 它能够将同一个单词的不同形态变化映射到 char-level n-gram 空间中彼此接近的点。
    • 它能够有效缓解 out-of-vocabulary:OOV 问题。在推断期间,虽然有些词汇未出现在训练集中(未登陆词),但是当拆解未 char-level n-gram 之后,每个 n-gram 都在训练集中出现过。
    • 从单词到 char-level n-gram 的映射关系是固定的线性映射,不需要学习。

    char-level n-gram 可以视作 word 的一个简单的 representation,而 word-hash 技术就是得到这个 representation

  4. word-hash 一个潜在的问题是冲突 collision:两个不同的单词可能具有相同的 char-level n-gram 表示。

    下表中统计了两个词汇表中的冲突统计信息。可以看到,当采用 3-gram 表示时,冲突的占比小于千分之一。

1.3 实验

  1. 论文实现的 DSSM 模型:

    • 模型结构:包含四层:

      • 第一层为 word hash 层,它将 word 映射为 char-level 3-gram 。其映射规则是固定的,不需要学习参数。
      • 第二层、第三层为中间层,每层输出为 300维。
      • 最后一层为输出层,输出 128维向量。
    • 权重初始化:权重通过在 之间均匀分布的随机变量来初始化。其中 表示输入单元数量和输出单元数量。

    • 模型通过 mini-batch 随机梯度下降法优化,每个 batch 包含 1024个样本,一共训练 20 个 epoch

    • 模型原始词汇表为 50万(即:保留常见的50万词汇),经过 word hash 之后降低到 3万。

  2. 实验数据集:数据集是从商业搜索引擎的 1年 query 日志文件中采样的 16510 个 query,平均每个 query15 个相关的 document

    每对 (query,document) 都有人工标注的标签。标签一共5个等级 0-40 表示无关,4 表示最相关。

  3. DSSM 模型和其它模型的比较结果如图所示,其中模型的评估指标为 NDCG

    • 9~12 行给出了不同的 DSSM 变化:

      • DNN:没有采用 word-hashDSSM 。它和第六行的DAE 结构相同,但是DAE 采用无监督学习训练,而DNN 采用有监督学习训练。

        为了能够训练DNN 模型,我们采用4万规模的词汇表(即:保留常见的4万词汇)。

      • L-WH linear:线性的 word hash 模型。在经过 word hash 之后,直接连接到输出层,且输出层不采用任何非线性函数。因此整个模型都是线性的。

      • L-WH non-linear:非线性的 word hash 模型。在经过 word hash 之后,直接连接到输出层,但是输出层采用非线性函数。

      • L-WH DNN:标准的 DSSM 模型。

    • 结论:

      • DNNDAE 的比较结果发现:监督学习普遍比无监督学习效果好

      • word hash 允许我们使用更大规模的词汇表。如 L-WH-DNN 采用 50万规模的词汇表,而 DNN 采用 4万规模的词汇表,但是 L-WH-DNN 的模型参数反而更少。

        词汇表越小,则未登陆词越多,这导致文本被丢弃的信息越多。模型的效果越差。

        因此 word hash 技术既可以减少模型参数,又能提升模型效果。

      • 深层网络强于浅层网络。

        • 无监督学习: LSA 可以看作浅层网络。深层网络的 DAE 效果强于浅层网络 LSA
        • 监督学习:L-WH non-linear 可以视为 L-WH DNN 的浅层版本,实验结果表明后者效果更好。

二、FNN

  1. 传统的 CTR 预估模型大多数采用线性模型。线性模型的优点是易于实现,缺点是:模型表达能力较差,无法学习特征之间的相互作用 interaction

    非线性模型(如:FM,GBDT)能够利用不同的组合特征,因此能够改善模型的表达能力。但是这些特征无法利用不同特征的任意组合。

    论文 Deep Learning over Multi-field Categorical Data – A Case Study on User Response Prediction 提出了 FNNSNN 两种模型来学习特征的交互作用。

  2. 由于视觉、听觉、文本信号在空间或者时间上是局部相关的,因此深度神经网络能够利用这种局部依赖性,并学习特征空间的 dense representation,从而使得神经网络能够直接从原始输入中直接有效的学习高阶特征。

    而在 CTR 预估任务中,大多数输入特征是离散的 categorical 特征,特征之间的局部依赖性是未知的。

    Factorisation-machine supported Neural Networks: FNNSampling-based Neural Networks: SNN 两种模型就是从离散的 sparse feature 学到 dense representation

  3. FNNSNN 的主要思路是:

    • sparse feature 学到 dense representation
    • 作为一个深度前馈神经网络的输入,输出为概率

    二者的区别在于学到 的方式不同。

    另外 FNNSNN 采用了 “逐层预训练 + 微调” 的训练方式,事实上这种训练方式目前已经不推荐使用,而是直接端到端的训练方式。

2.1 模型

2.1.1 FNN

  1. FNN 模型结合了神经网络和 FM 模型,网络分为以下几层:

    • 第 0 层输入层:categorical 经过 one-hot 编码之后作为输入,该层也被称作 sparse binary feature 层。
    • 第1层embedding 层:输入层经过局部连接生成embedding 向量,该层也被称作 dense real layer 层。
    • 第2层到第 层:全连接层。
    • 最后一层:sigmoid 输出层。

  2. FNN 的核心在于 embedding 向量的生成。假设有 fieldone-hot 向量为 field i 在向量中的起始位置为 、终止位置为 (包含)。

    每个 field 生成一个 embedding 向量。即 field i 生成 。同时还有全局bias 。即:

    • 输入位置 仅仅与 相连,即:局部连接:

      其中 为映射参数。

    • FM 模型初始化。由于采用逐层预训练,因此一旦初始化 之后就固定。

      因此求解 FM 的过程就是求解 的过程,且一旦初始化后就冻结 ,直到最后的微调阶段才更新

  3. 一旦求解出 ,就可以计算后续网络:

    其中 为激活函数。

    • 网络每层的隐向量维度可以不同。
    • 网络每层通过 layer-wise RBM 逐层预训练来初始化。
  4. 一旦进行了 FM 预训练和 layer-wise RBM 预训练之后,则可以通过监督学习来微调模型。

    模型的损失函数为交叉熵:

    考虑到:

    时,对应梯度为0。因此只需要更新 非零的分量对应的参数,这大大降低了参数更新的计算量。

2.1.2 SNN

  1. SNNFNN 的区别在于第一层的网络结构,在 SNN 中第一层是全连接的。

    其中 为激活函数, 为第一层的网络参数。

    第一层参数可以通过两种预训练方式来预训练:restricted Boltzmann machine:RBM 或者 denoising auto-encoder:DAE

2.2 实验

  1. 数据集:采用 iPinYou 数据集。该数据集是一个公开的、真实的展示广告数据集,包含 1950万曝光数据,其中点击数据 14790个。

    所有特征都是 categorical 特征,经过one-hot 编码之后有 937670 维。

  2. 模型比较了全量广告主,以及部分广告主(广告主 1458,2259,2997,3386 ) 上的预测结果。

    结论:

    • FM 模型并没有显著的强于 LR 模型,这意味着该任务中二阶特征交叉并没有很好的捕捉到数据的模式。
    • 大多数情况下 FNN 的效果最好。

三、PNN

  1. 在典型的推荐、广告任务中,大多数特征都是离散的categorical。一种常见做法是将这些离散特征进行 one-hot 编码,从而转化为稀疏二元特征 sparse binary feature

    传统模型非常依赖于特征工程从而捕获潜在的高阶模式,而 FM 等模型通过自动特征交叉捕获二阶交叉特征。

    论文 Product-based Neural Networks for User Response Prediction 提出了 Product-based Neural Networks:PNN 模型,该模型构建了一个 embedding 层来学习离散特征的分布式representation,构建一个 product 层来自动捕捉离散特征的潜在高阶模式。

3.1 模型

  1. 假设有 fieldone-hot 向量为 field i 在向量中的起始位置为 、终止位置为 (包含)。

    每个 field 生成一个 embedding 向量。即 field i 生成

    模型包含以下几层:

    • 第 0 层输入层:categorical 经过 one-hot 编码之后作为输入

    • 第1层embedding 层:模型从每个 field 中学得各 fieldembedding 表示。

      输入位置 仅仅与 相连,即:局部连接:

      其中 为映射参数,它由 的第 到第 列组成。

    • 第2层 product 层:由embedding 特征的一阶特征和二阶交叉特征拼接而成。其中 部分表示一阶特征, 部分表示二阶特征。为统一生成方式, 由常数 1 和一阶特征交叉生成。

      表示成对特征交叉,当定义不同的 函数时,就定义了不同的 PNN 实现。

      该层的输出为:

      其中 表示对提取的一阶特征和二阶特征通过 各自分别进行进一步的特征抽取的数量。 类似于 CNN 的卷积核,其尺寸为整个图片大小, 为卷积核的数量, 表示第 个卷积核。

      表示张量的内积,定义为:

    • 第3层到第 层:全连接层。

    • 最后一层:sigmoid 输出层。

    模型的损失函数为 logloss

3.1.1 IPNN

  1. Inner Product-based neural network:IPNNIPNN 的特征交叉函数为:

    则有:

    则计算 的复杂度为:

    • 空间复杂度:

它们分别是计存储 的空间需求。

  1. 为降低复杂度,可以将 分解:

    则有:

    其中

    则有:

    则计算 的复杂度为:

    • 空间复杂度:
    • 时间复杂度:
  2. 仅仅是一阶分解,实际上可以进行更加通用的 阶分解:

    其中 。此时有:

    这种分解的代价更高,同时约束更弱。

3.1.2 OPNN

  1. Outer Product-based neural network:OPNNOPNN 的特征交叉函数为:

    与内积产生标量不同,这里的外积产生一个矩阵。

    计算 的复杂度为:

    • 空间复杂度: 。它完全由 主导。
    • 时间复杂度: 。它完全由 主导。
  2. 为降低复杂度,定义:

    此时

    则计算 的复杂度为:

    • 空间复杂度:

      它们分别是计存储 的空间需求。

    • 时间复杂度:

3.1.3 讨论

  1. 当移除 product 层的 部分时,IPNNOPNN 完全相同。

  2. 当采用 IPNN 时,IPNNFM 模型非常相似。

    • FM 模型将抽取的一阶、二阶特征直接送入分类器
    • IPMM 模型将抽取的一阶、二阶特征,首先使用类似 CNN 的 “核函数” (由 给出)抽取 个特征,然后将抽取后的特征送入 DNN
  3. 向量的内积可以视为一系列的 “乘法&加法” 操作,乘法类似于 AND、加法类似于 OR。向量的外积只有乘法,类似于 AND

    因此 product 层可以视为学习一系列的 AND/OR 规则。

3.2 实验

  1. 数据集:

    • iPinYou:该数据集是一个公开的、真实的展示广告数据集,包含 1950万曝光数据,其中点击数据 14790个。
    • Criteo:一个著名的广告 benchmark 数据集,包含 1TB 的点击日志。

    论文采用连续的 7 天来训练,第 8 天数据来评估。

  2. 不同模型的评估结果如下所示,其中评估指标为 AUC,Logloss,RMSE,RIGRIG 表示相对信息增益 Relative Information Gain ,它等于 1-NE ,其中 NE 为归一化的交叉熵。

    • 模型配置:

      • FM 模型的 embedding 向量维度为 10 维。
      • CCPM 模型有一个 embedding 层、2个卷积层、1个最大池化层、1个隐层,一共五层。
      • FNN 模型有1个 embedding层、3个隐层,一共四层。
      • PNN模型有1个 embedding 层、1个 product 层、3个隐层,一共五层。
      • PNN*模型和 IPNN,OPNN 相同,但是 product 层是内积和外积的拼接。

      另外:LR,FM 使用 L2 正则化;FNN,CCPM,PNN 使用 dropout (0.5的遗忘率) 。

    • 结论:

      • FM 模型战胜了 LR 模型,说明 FM 模型有效的捕捉到了特征交互。
      • 神经网络模型(FNN,CCPM,IPNN,OPNN,PNN* )战胜了 LR 模型和 FM 模型,说明神经网络模型捕捉到了更高阶的潜在模式 latent pattern
      • 总体而言 PNN 模型效果最好(包括 IPNNOPNN 模型)。
      • 融合了 IPNNOPNNPNN* 模型并没有显著的强于 IPNNOPNN ,这说明 IPNNOPNN 捕捉交互特征的能力已经足够强大。

四、DeepCrossing

  1. 人工特征组合在很多模型中扮演非常重要的角色,但对于 web-scale 任务而言,由于特征数量非常庞大,人工组合特征不太现实。

    论文 “Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features” 提出了 Deep Crossing 模型,该模型利用深度神经网络来自动组合特征从而生成高阶特征。

  2. 虽然 Deep Crossing 模型能够自动组合原始特征,但是收集原始数据并提取原始特征仍需要用户的大量精力。

4.1 原始特征

  1. 在搜索广告sponsored search 任务中,我们有大量的原始特征,每个原始特征都用一个向量表示。论文考察的原始特征包括:

    • 用户 Query:用户的搜索文本。

    • 广告主竞价 Keyword:广告主的竞价关键词。

    • 广告 Title:广告的标题文本。

      对于 Query,Keyword,Title 等文本特征,论文通过将文本字符串转换为字符级的 3-gram 的形式,得到一个 49292 维的向量。其中 49292 为 3-gram 词典大小。

    • MatchType:广告主指定的关键词匹配类型,分为 exact,phrase,broad,contextual 四种。

      论文将其转换为一个 4 维的 one-hot 向量。

    • CampaignID:营销 campaignID

  2. 由于广告系统中可能有百万级的 campaign,因此经过 one-hot 之后的 campaign 特征维度非常高,这会导致模型尺寸非常大。

    论文的解决方案是:使用一组特征来描述 campaign 特征:

    • CampaignID 特征:进行 one-hot,但是 ont-hot 向量仅仅包含点击次数最多的 10000campaignID,剩余的所有 campaign 被分配到第 10001slot
    • CampaignIDCount 特征:对于分配到第 10001slot 的剩余 campaign,提供每个 campaign 的统计特征(如曝光次数、平均CTR 等),该特征是计数特征 counting feature
  3. 用到的特征如下图所示:

4.2 模型

  1. DeepCrossing 模型的输入是原始特征,模型有四种类型的Layer

    • Embedding Layer:将原始特征映射成 embedding 向量。

      假设原始特征 one-hot 向量为 field i 在向量中的起始位置为 、终止位置为 (包含)。则 embedding 层的输出为:

      其中 为参数, 为第 embedding 的维度。

      • 通常有 ,这使得 embedding 之后的维度大大小于原始特征维度。

      • 对于某些维度较小的原始特征(如:维度小于 256),无需进行 embedding 层,而是直接输入到 Stacking Layer 层。如图中的 Feature #2

        这是在模型大小和信息保留程度之间的折衷:

        • 完全保留信息(原始输入),则可能使得模型过大
        • 全部使用 embedding,则可能信息丢失太多
    • Stacking Layer:所有 embedding 特征和部分原始特征拼接成一个向量:

      其中 表示特征拼接, 为原始特征的数量,embedding 向量。如果是直接输入的原始特征,则 表示该原始特征的 one-hot 向量。

    • Residual Unit Layer:基于残差单元 Residual Unit 构建的残差层,其输出为:

      其中 为残差单元:

      注意:在一个 DeepCrossing 网络中可以有多个残差层。

    • Scoring Layersigmoid 输出层。其输出为:

      其中 为参数, 为前一层的隐向量, 为总的层数。

  2. 模型的损失函数为负的 Logloss

  3. DSSM 模型也可以认为是执行了特征交叉。DSSM 模型有两路输入:QueryAd Text 。模型分别抽取特征,最后计算二者的 cosin 距离,该距离就代表了二者的特征交叉。

    DeepCrossing 相比,DSSM 的特征交叉发生的时间比较靠后。从效果上讲,DeepCrossing 的特征交叉发生时间靠前的效果更好。

4.3 实验

  1. 实验结果表明:是否包含某些原始特征对模型效果影响较大。

    • 下图比较了引入不同特征的情况下,每个训练 epoch 结束时的验证集 logloss。该 logloss 除以 All_features 模型的最低 logloss 来归一化。

      • All_features :使用所有的特征。
      • Without_Q_K_T:不使用 counting特征,且不使用 Query,Keyword,Title 等文本特征。
      • Only_Q_K:仅使用 Query,Keyword 特征。
      • Without_position:不使用 counting 特征,且不使用广告的位置信息。

    • 下图比较了是否包含 counting 特征的效果。logloss 除以 All_without_counting 模型的最低 logloss 来归一化。

      • All_with_counting:使用包含 counting 在内的所有特征
      • All_without_counting:使用剔除counting 后的所有特征。
      • Counting_only:仅仅使用 counting 特征。

  2. DeepCrossingDSSM 的比较:评估指标为 AUC,其中以 DSSM 的结果作为基准来归一化。

    text_cp1_tn_stext_cp1_tn_b 为论文构造的两个训练集,text_cp1_tn_s 1.94亿样本,训练集 text_cp1_tn_b 29.3亿样本。

    评估在对应的测试集上进行:验证集 0.49亿样本,测试集 0.45亿样本。

五、Wide&Deep

  1. 推荐系统中的一个挑战是:同时实现 memorizationgeneralization

    • memorization:学到 item 或者 feature 共现关系,并基于历史数据中的这种相关性来推荐。

      基于memorization 的推荐通常更具有话题性,并且和用户已经发生行为的 item 直接关联。

    • generalization:根据 item 或者 feature 的共现关系,探索过去从未发生或者很少发生的新特征组合。

      基于 generalization 的推荐通常更具有多样性。

  2. 广义线性模型通常对特征执行 one-hot 编码。如 性别=男 表示特征:如果用户是 男性,则该特征为 1 。

    • 通过特征交叉可以有效的达到 memorization。如特征交叉 AND(性别=男,曾经购买汽车=奇瑞QQ) :当用户是男性、且曾经购买奇瑞 QQ 汽车时该交叉特征为 1。

    • 如果希望提升泛化能力,则可以提升特征的粒度。如: AND(性别=男,曾经购买汽车=10万以下汽车)

      这种方式的限制是无法推广到训练集中没有出现过的 query-item 或者 feature pair

  3. 基于 embedding 的模型(如 FM 或者 DNN )为每个 queryitem 学习一个低维的 dense embedding 向量,通过 embedding 向量来泛化到训练集中未见过的 query-item feature pair ,同时也缓解了特征工程的代价。

    但是当 query-item 矩阵非常稀疏且矩阵的秩较高时(如:用户具有特定偏好,产品非常小众),很难学到有效的 query/item 的低维表达。

    此时大多数 query-item pair 之间不应该存在任何交互,但是 dense embedding 仍然给出了非零的预测结果。这会导致严重的过拟合,并给出一些不怎么相关的推荐结果。

    在这种场景下,基于特征交叉的广义线性模型能够记住这些特定偏好或者小众产品的 exception rule

  4. 广义线性模型(称为 wide 模型)可以通过大量交叉特征来记住特征交互 feature interaction ,即 memorization 。其优点是可解释性强,缺点是:为了提升泛化能力,需要人工执行大量的特征工程。

    深度神经网络模型(称为 deep 模型)只需要执行较少的特征工程即可泛化到未出现的特征组合,即 generalization 。其优点是泛化能力强,缺点是容易陷入过拟合。

    论文 “Wide & Deep Learning for Recommender Systems” 结合了 wide 模型和 deep 模型,同时实现了 memorizationgeneralization

    即:广义线性模型表达能力不强,容易欠拟合;深度神经网络模型表达能力太强,容易过拟合。二者结合就能取得平衡。

5.1 模型

  1. 一个典型的推荐系统整体架构如下图所示。推荐的流程如下:

    • 当用户访问 app store 时产生一个 query,它包含用户特征(如用户画像)和上下文特征(如 当前时刻LBS 信息、设备信息、页面信息)。

    • 检索 retrieval 模块根据用户的 query 返回一组相关 app 组成的 app list

      检索算法可以综合利用机器学习模型和人工定义的规则,它用于将百万级别的 app 集合降低到几百上千级别的候选 app list

    • 精排 ranking 模块对候选 app list 根据用户的行动(如:下载、购买)概率进行排名,返回概率最高的十几个或者几十个 app 组成的推荐结果。

    • 返回的推荐结果展示在用户界面,用户可以对这些 app 执行各种操作(如:下载、购买)。这些操作行为,以及query, result app list 都会被记录并发送到后台日志作为训练数据。

  2. Wide & Deep 模型主要用于 ranking 精排模块,它包含一个 linear model:LM 部分和一个 neural network:NN 部分。

    设模型的输入特征向量为 是一个 维的特征向量(经过 one-hot ),仅包含原始特征。 表示特征交叉转换函数, 包含转换后的特征。

    • LM 部分:即左侧的 wide 子模型,它是一个线性模型:

      其中 表示特征拼接, 是模型参数( 表示交叉特征的数量), 为偏置。

    • NN 部分:即右侧的 deep 子模型,它是一个 DNN 模型。

      • 输入层:为了缓解模型的输入大小,DNN 的所有离散特征的输入都是原始特征,而没有经过 one-hot 编码转换。

      • 第一层 embedding 层:将高维稀疏的 categorical 特征转换为低维的 embedding 向量。论文中的embedding 向量维度为 32 维。

      • 第二层特征拼接层:将所有的 embedding 向量拼接成一个 dense feature 向量。论文中该向量维度为 1200维。

      • 后续每一层都是全连接层:

        其中 为层的编号, 为激活函数。

    模型联合了 widedeep 的输出:

    其中 wide 部分的权重, deep 部分的权重, 为全局偏置。

    模型的损失函数为负的对数似然,并通过随机梯度下降来训练:

  3. Wide&Deep 模型与 LM & DNNensemble 集成模型不同。

    • 在集成模型中,每个子模型都是独立训练的,只有预测时才将二者结合在一起。

      Wide&Deep 模型中,每个子模型在训练期间就结合在一起,共同训练。

    • 在集成模型中,每个子模型必须足够大从而足够健壮,使得子模型集成之后整体的 accuracy 等性能足够高。

      Wide&Deep 模型中,每个子模型都可以比较小,尤其是 wide 部分只需要少量的特征交叉即可。

  4. Wide&Deep 模型的实现如下图所示。模型的 Pipeline 分为三个部分:

    • 数据生成 data generation 阶段:此阶段把一段时间内的用户曝光数据生成训练样本,每个样本对应一次曝光,标签为用户是否产生行为(如:下载 app)。

      在这个阶段执行两个特征工程:

      • 离散的字符串特征(如app name)映射成为整数ID ,同时生成映射字典vocabulary

        注意:对于出现次数低于指定阈值(如 10此)的字符串直接丢弃,这能够丢弃一些长尾的、罕见的字符串,降低字典规模。

      • 连续特征离散化:

        • 首先将连续特征归一化到 0~1 之间,它通过累积分布函数来归一化,计算特征的整体排名(1.0表示排名最高,0.0表示排名最低)

          其中 为示性函数, 为总样本数量。

        • 然后将 映射到 分位。如映射到10分位时,假设 (即排名在最高的 5%),则映射为 9 这个等级。

    • 模型训练 model training 阶段:此阶段的输入为样本数据、字典数据、标签数据。

      • wide 部分的特征由:用户已经安装的 app 、给用户曝光的 app 的两个特征的交叉组成。

      • deep 部分从每个离散特征中学习。

      • 每次有新的训练数据到达时,模型会利用该部分数据重新训练。

        由于重新训练模型的代价太大,因此我们实现了一个 warm-starting 系统:基于前一个模型的 embedding 参数来初始化当前模型的这两个参数。

      • 在模型部署到线上之前,还需要验证模型的质量。

    • 模型使用 model serving 阶段:训练并验证模型后,将模型部署到服务器上来提供预测服务。

      为满足 10ms 量级的响应速度,采用多线程并行来优化性能。方法为:假设一个 batch500 个候选 app

      • 先将其拆分为更小的一组 batch:如 50batch,每个 batch10 个候选 app
      • 每个子线程并行的执行推断
      • 将所有子线程的推断结果收集在一起,拼接成整个 batch 的推断结果并返回

5.2 实验

  1. 模型从谷歌应用商店的 app 下载量,以及 serving 性能这两方面来评估。

  2. 我们执行三个星期的在线A/B test,其中:

    • 对照组1:随机抽取 1% 的用户,该部分用户采用旧的精排模型:只有 wide 部分的、采取大量特征交叉的 LR 模型。
    • 对照组2:随机抽取 1% 的用户,该部分用户采用 DNN 精排模型:只有 deep 部分的 DNN 模型。
    • 实验组:随机抽取 1% 的用户,该部分用户采用 Wide&Deep 精排模型。

    另外我们还在一个离线的留出 holdout 数据集上评估了这三个模型的离线 AUC 指标。最终结果如下表:

    • 在线 app 下载量提升:Wide&Deep 提升幅度较大,达到 3.9%

      事实上仅 deep 模型就能提升 2.9%,但是结合了 widedeep 能进一步提升。

    • 离线 AUC 提升:Wide&Deep 稍微有所提升,但提升幅度不大。

      可能的原因:离线评估固定了曝光和 label,即:你给用户推荐的 app list 是固定的,用户是否安装的 label 也是固定的。

      这种假设实际上是有问题的,因为如果模型发生变化则推送给用户的 app list 会有所变化,是否安装的 label 也会有所变化。这使得 模型 --> 特征、label --> 模型 相互依赖。而离线的数据集无法体现这种模型和数据的相互依赖性。

      在线 A/B test 中,模型学习从用户最新的反馈中学习,然后推荐出新的 app list

  3. 谷歌应用商店面临高流量,因此提供高吞吐量、低延迟的model serving 服务是一个挑战。在流量峰值,我们需要每秒为 1000万app 打分。

    • 当使用单线程时,一个 batch 的样本打分需要 31ms
    • 当使用多线程并行时,一个 batch 的样本拆分到多个更小的 batch,最终打分需要 14ms

六、DCN

  1. 人工交叉特征效果很好,但是有两个主要缺点:

    • 人工探索所有的交叉特征是不现实的。
    • 难以推广到未曾出现过的交叉特征。

    虽然 DNN 能够自动探索交叉特征并推广到未出现过的交叉特征,但是DNN 的学习效率不高,且无法显式的学习特征交叉。

    论文 《Deep & Cross Network for Ad Click Predictions》 提出了 Deep&Cross Network:DCN 模型,该模型保留了 DNN 的优点。

    此外,DCN 提出了一种新的cross network ,该网络能够高效学习高阶特征交互。

    实验结果表明:DCN 无论在模型表现以及模型大小方面都具有显著优势。其优点:

    • cross network 显式的在每层应用特征交叉,有效的学习了预测能力强的交叉特征,无需人工特征工程。
    • cross network 简单高效,可以学习高阶交叉特征。每增加一层,能够学到的交叉特征的阶数就加一阶。
    • 模型表现更好,且参数要比 DNN 少一个量级。
  2. Wide&Deep 模型使用交叉特征作为输入,其成功依赖于选择合适的交叉特征。

    如何选择合适的交叉特征是个指数级问题,目前尚未有明确有效的方法。

6.1 模型

  1. DCN 模型结构如下图所示,模型包含 embedding and stacking 层、cross networkdeep network 三个组成部分。

  2. embedding and stacking 层:假设输入包含 sparse 特征和 dense 特征。设原始特征为向量 ,其中:

    其中 field ione-hot 向量, 为经过归一化的 dense 特征, 为向量拼接。

    • 首先将 field i 的特征映射到 embedding 向量:

      其中 one-hot 向量长度, 为参数。

  1. cross networkcross network 是一个新颖的结构,其核心思想是以高效的方式显式应用特征交叉。

    • cross network 由交叉层构成,每层的输入输出为: