十五、DICM

  1. 淘宝的每个商品通常会展示一个商品图片以及相关的一小段描述文字。当用户对商品感兴趣时,用户可以点击图片从而查看更多的详情信息。

    十五、DICM - 图1

    用户点击的商品图片被称作行为图片 behavior image 。通过引入用户的历史行为图片可以引入用户的视觉偏好,从而增强用户的行为representation,有助于 CTR 的预测。

  2. 利用行为图片的一个简单方式是:为每张图片分配一个图片 ID,然后通过模型自动学习这些图片 IDrepresentation

    但是图片 ID 仅仅告诉我们:这些图片是不同的。图片ID 无法给出图片的语义信息。

    使用图片 ID 有两个主要缺点:

    • 对于出现频率非常低的行为图片,其参数无法得到充分的训练,从而使得其 representation 表现较差。
    • 在线上预测时,对于新的、从未见过的行为图片,无法得到其 representation,泛化能力很差。

    另一种方式是:利用行为图片的语义信息,如经过CNN 模型抽取的 feature map

    这种方式可以提供商品本身的视觉描述,带有视觉语义信息,从而为模型带来更强的泛化能力。

    在线上预测时,对于新的、从未见过的行为图片,我们仍然可以抽取其 feature map 从而引入模型。 而这些 feature map 是模型在训练中曾经见过或者能够处理的。

  3. 目前已有一些DNN 模型引入商品图片特征,但是它们引入的是广告侧的图片特征而不是用户侧的行为图片特征。这二者区别在于:

    • 广告侧的图片特征:图片作为目标广告的特征,它刻画了广告的视觉信息。

      因为每个目标广告通常只有一张商品图片,所以在训练和预测时每个样本只有一张图片。

    • 用户侧的行为图片特征:图片作为用户的特征,它刻画了用户的视觉偏好信息。

      因为每个用户历史上可能点击很多商品的图片,所以在训练和测试时每个样本有很多张图片。

    事实上,可以同时引入广告侧的商品图片特征和用户侧的用户行为图片特征,从而结合广告视觉特征和用户视觉偏好,进而提高模型 CTR 预测能力。

  4. 在模型中对用户的行为图片建模非常有挑战性。

    在淘宝中,平均每个用户的行为图片数量在两百多个。考虑到淘宝的用户规模在亿级、商品规模在数十亿(因此对应的商品图片也在数十亿)。因此用户侧的行为图片特征的训练非常困难。

    在传统的参数服务PS 架构中,训练图片存储的位置是个难点:

    • 如果图片存储在 worker 中则大幅增加了训练数据的规模。在淘宝的业务场景中,每个 mini-batch 的数据量从 134M 增加到 5.1G,增加大约 40倍。这使得网络 IO 无法承受。
    • 如果将图片存储在 server 中,并在训练期间由 worker 访问,则训练时需要传输大量原始图片,所以导致训练过程的通信负载难以接受。

    因此传统的 PS 架构不适合该场景。

  5. 论文《 Image Matters: Visually modeling user behaviors using Advanced Model Server 》 提出深度图像点击模型 Deep Image CTR Model:DICM,该模型可以有效的对用户行为图片建模。

    • 论文提出了 Advanced Model Server:AMS 这种新的、高效的分布式机器学习架构。

      AMS 中,前向传播、反向传播也可以发生在 server 端,并且 server 仅将行为图片的 feature map 传递给 worker 。相比与原始的行为图片,feature map 的数据规模要小得多。这大大降低了通信负载。

    • AMS 的基础上,论文提出了 DICM 模型来有效对ID 类特征、用户行为图片特征一起建模。

      DICM 模型充分利用了用户视觉偏好以及广告视觉特征之间的联系,从而大幅提升模型性能。

15.1 广告系统

  1. 淘宝展示广告系统 display advertising system 每天响应数十亿次 pv 请求,每个请求都需要系统在几毫秒内从数千万个广告中选择 eCPM 排名最高的广告。

    广告系统以类似漏斗的方式完成此任务。系统主要由三个串联的模块组成:

    • Match 模块:该模块根据用户行为预测出用户的偏好,并从全量候选广告集中检索大约 4000 个广告。

      该模块也被称作检索模块或者召回模块。

    • Pre-rank 模块:该模块采用轻量级的 CTR 模型将检索到的广告集根据预估的 CTR 进一步缩减至大约 400 个广告。

      该模块也被称作粗排模块。

    • Rank 模块:该模块使用复杂的CTR 模型准确预测粗排的广告集中每个广告的CTR,通过 eCPM 对这些广告进行排序并选择最佳的广告。这一步缩减到 1 个广告。

      该模块也被称作精排模块。

    十五、DICM - 图2

  2. DICM 模型及其它类似的模型通常都作用在 Rank 模块。但论文作者指出:经过调整的 DICM 模型也可以应用于 Pre-rank 模块。

15.2 整体结构

  1. DICM 利用视觉信息扩展了 Embedding&MLP 模型。如下所示:用户行为图片User Behavior Images和广告商品图片Ad Image作为两个特殊的特征。

    • 这些图片首先馈入一个可训练的子模型来得到更高级的representation 。类似embedding,该子模型将图片embed 到一个向量(也可以视作 feature map ),因此我们将这个子模型称作 embedding model

      • embedding model 可以认为是传统的 id embedding 的扩展,因为它可以对训练期间从未见过的新图片进行embed
      • embedding model 实际上是独立的,它不依赖于其它模块。因此 embedding model 可以独立的前向、反向传播。
    • 由于用户的行为图片的数量可变,因此需要将可变数量的图片embedding 聚合成固定长度的user representation。然后将该固定长度的向量馈入 MLP

    • 该架构不仅适用于用户行为图片,也适用于用户行为文本、用户行为视频。

    十五、DICM - 图3

15.2.1 AMS

  1. 引入用户行为图片的模型的训练时,主要挑战是大量的图片。图片不仅本身数据量大从而导致存储、通信的巨大开销,而且在提取图片的语义信息时涉及复杂的计算从而导致巨大的计算开销。

    为解决该问题,论文提出了 AMS 架构。

  2. AMS 不仅可以通过key-valuelookup 查找 embedding 向量,还可以对图片进行 embed

  3. PS 架构一样,AMS 也包括 serverworker,此外 AMS 还包含 task scheduler

    AMS 同时训练两个模型 worker model 十五、DICM - 图4embedding model 十五、DICM - 图5 。其中各组件的执行过程为:

    • Task Scheduler

      • 首先初始化模型 十五、DICM - 图6
      • 然后执行 mini-batch 训练。对于每个 mini-batch t ,在所有 worker 上执行过程 WORKERITERATIOIN(t)
    • Worker:对所有的 worker 执行过程 WORKERITERATIOIN(t)

      对于第 rworker (十五、DICM - 图7),WORKERITERATIOIN 步骤为:

      • 加载第 tmini-batch 的特征、标签:十五、DICM - 图8

      • Server 请求 十五、DICM - 图9 中的 ID 和图片的 embeddingSERVEREMBED 过程) 。其中图片通过图片的、索引来向 server 发生请求。

      • Server 获取所有的 embedding 向量 十五、DICM - 图10

      • 基于 十五、DICM - 图11十五、DICM - 图12 进行前向传播和反向传播,并得到梯度:

        • worker 参数的梯度:十五、DICM - 图13
        • embedding 参数的梯度:十五、DICM - 图14
      • Server 推送梯度 十五、DICM - 图15,并且执行 serverSERVERUPDATE 过程。

      • 向所有 worker 同步梯度 十五、DICM - 图16 并更新模型 十五、DICM - 图17

    • Server:对所有的 Server 执行过程 SERVEREMBED(t)SERVERUPDATE(t)

      对于第 十五、DICM - 图18Server (十五、DICM - 图19),SERVEREMBED 步骤为:

      • Server 本地获取图片数据 I
      • 计算图片的 embedding十五、DICM - 图20

      对于第 十五、DICM - 图21Server (十五、DICM - 图22),SERVERUPDATE 步骤为:

      • 计算梯度:十五、DICM - 图23
      • 向所有 server 同步梯度 十五、DICM - 图24 并更新模型 十五、DICM - 图25
  4. AMS 架构中,所有的行为图片在 worker 中使用索引来记录,而这些图片在 server 中存储和计算,并通过 embedding 模型获取其语义向量。

    • 图片以 key-value 的格式存储在server 之间,key 为图片索引value 为图片数据。

      样本数据保存图片索引而不是图片数据本身,同时样本数据在所有 worker 之间分配。

    • sparse ID 特征和 embedding modelserver 中运行,MLPaggregatorworker 中运行。

    • 每一轮迭代,worker 都读取一个 mini-batch 样本并从 server 请求 ID 特征和图片特征的 embedding

      注意:该 worker 的请求会被发送到存储对应 ID 和图像的 server

      • 对于 ID 特征,server 直接通过 lookup 查找对应的 embedding
      • 对于图片特征,server 首先从本地获取图片数据,然后通过 embedding 模型 十五、DICM - 图26 获取 embedding 向量 十五、DICM - 图27
    • 反向梯度传播在 worker 部分和 server 部分被分别处理,这保证了原始图片特征端到端的训练。

    • 这种方法不仅可以用于行为图片,也可以用于用户历史商品评论等文本语义的抽取。

  5. AMS 优势:

    • 每张图片在 server 中仅存储一次(而不是对每个用户存储一次),显著减少图片的存储(减少大约40倍)。

    • workerserver 之间传递的 embedding 向量的大小远小于图片本身的大小,这降低了通信需求(减少大约340倍)。

    • server 中多个图片可以并行处理(在 GPU 中),这可以降低计算成本。

      实际应用中,serverworker 都部署在同一个 GPU 中,因此这可以最大程度的利用 GPU

    基于 AMS ,我们可以将数十亿样本在18小时内完成训练,使得模型实现天级更新从而达到工业级需求。连续18天日志数据在不同GPU 配置上的训练时间如下图所示。考虑到成本和时间之间的折衷,论文选择20GPU

    十五、DICM - 图28

15.2.2 embedding model

  1. embedding model 用于从原始图片数据中语义 embedding 向量。论文采用预训练的 VGG16 模型:冻结VGG16 的底层部分,仅训练其高层部分。

    论文冻结VGG16 的前14层(从 Conv1FC6 ),固定部分输出一个 4096 维的向量。对于可训练的部分,论文采用 3 层的全连接网络(每层的神经元数量分别为 4096,64,12 ),并输出一个 12 维的向量。

  2. 训练 VGG top 多少层涉及到效果和效率之间的折衷:

    • 如果冻结的部分太多,如冻结到 FC8 ,则固定部分输出一个 1000 维的向量。这会导致计算效率较高(可训练的部分减少),但是导致 3% 的相对性能损失。
    • 如果冻结的部分太少,则可训练部分增加,计算量会显著增加,同时模型性能并不会显著改进。

15.2.3 aggregator

  1. aggregator 用于将用户大量的行为图片embedding 向量聚合成一个固定长度的向量。论文探索了大量聚合方式:

    • 最直接的方式:将所有用户行为图片embedding 向量串联在一起,然后填充或截断到固定长度。

      当用户行为图片数量较大,或者用户行为图片的顺序更改时,这种方式容易受到影响。

    • 另一种直接方式:采用池化操作(如:最大池化、均值池化、或者 sum 池化)。

      这种方式给每个图片赋予相同的权重,无法侧重相关的行为图片。

    • 类似DIN 模型引入注意力机制,它根据目标广告自适应的捕获最相关的行为。

      考虑到视觉相关性,论文将广告图片作为 query,这种方式称作 Attentive Pooling

  2. 广告的商品类别 T shirt 和用户行为图片中的 T shirt 图片是有关联的,因此我们可以捕获 ID 特征和行为图片 embedding 之间的 attention

    因此论文提出了 MultiQueryAttentive Pooling,它考虑了所有的图片、ID 特征的 attentive weight

    作者设计了两个注意力通道,这两个通道的输出向量进行拼接得到 aggregator 的输出向量。:

    • 将广告图片作为 query、将用户行为图片作为 Values/Keys 的通道。
    • ID 特征作为 query、将所有图片作为 Values/Keys 的通道。

    注意:和 multi-head 技术不同, MultiQueryAttentive Pooling 对每个注意力通道采取不同的 query,这互补的探索了不同的相关性。

    十五、DICM - 图29

15.2.4 推断

  1. 在大型工业广告系统中,推断效率对于CTR 模型的在线部署至关重要。

    对于常规 DNN 模型,通常 embedding 参数存放在全局 key-value 共享存储中,MLP 参数存储在本地 ranking server 中。对于每个inferrence 请求,ranking server 会从 key-value 共享存储提取 ID embeding,并向MLP 馈入该 embedding 从而执行 CTR 预测。

    实践证明该方案在生产中具有高吞吐、低延迟。

  2. 当涉及图片尤其是大量的用户行为图片时,提取图片的 embedding 向量可能带来大量的计算开销和通信开销。

    收益于图片的独立性,图片embedding 向量可以离线计算并作为常规 ID 特征进行全局存储。因此ranking server 无需任何修改即可适配图片的引入。

    注意:对于已有的图片可以通过其图片ID 查找离线计算好的图片 embedding 向量。对于新的图片,系统可以直接计算其 embedding 来使用并缓存起来。这可以有效缓解 ID 特征的冷启动问题。

    对于每个pv 请求,DICM 的响应时间仅仅从 21ms(传统 的、不带图片的DNN 模型)增加到 24ms 。符合在线推断的需求。

  3. DICM 模型也可以用于 Pre-rank 阶段。为加快在线推断效率,论文设计了类似 DSSM 的架构。

    • 首先对广告和用户分别建模,得到维度相同的 ad vectoruser vector

      注意:为了避免广告和用户特征过早融合,用户的行为图片embedding 向量采用 sum 池化。

    • 然后通过计算 ad vectoruser vector 的点击来执行预测。

    直到点击之前,用户和广告之间都没有交互。因此 ad vectoruser vector 可以离线预计算并存储。在线 serving 只需要读取预计算好的向量并执行向量点击操作,这大幅降低了计算量。

    十五、DICM - 图30

15.3 实验

  1. 数据集:所有数据来自于淘宝的展示广告系统收集自 2017-07 月连续 19 天的日志数据,其中前 18 天为训练集、最后一天为测试集。

    数据集包含 39 亿训练样本、2.19 亿测试样本。样本有 27ID 特征,包括用户画像、用户行为、广告基础信息和描述信息。

  2. 评估方式:离线评估模型的 AUCGAUC

    GAUC 是所有用户的 AUC 加权平均。在实际广告系统中,GAUCAUC 和交叉熵损失更有效。因为 GAUC 是个性化的,专注于每个用户的预测。

  3. 训练技巧:

    • 为加快模型训练速度和降低存储成本,论文采用 common feature 技巧:将相同用户的样本放置在一起,从而将用户的相关特征构成 common feature

    • 论文选择每个用户过去14天点击的图片作为用户行为图片。

      由于用户的点击行为具有太多的噪音,论文认为用户浏览了一定时长之后的点击才是有效点击。根据这种简单的过滤策略,模型的效果更好。同时用户平均点击图片的数量从200降低到32.6。

    • 模型采用 PReLU 激活函数,这是实践中的经验;采用 Adam 优化器,初始学习率为 0.001 ,学习率每隔 24000batch 降低到之前的 90%

      模型在2个 epoch 之后收敛,大约有 12.8万 次迭代。

    • 收益于模型的天级更新,可以使用前一天的模型来初始化当前模型的参数。

      注意:DICM 的各部分以不同的速度收敛。

      • 由于 ID 的稀疏性以及参数规模较大,IDembedding 部分很容易陷入过拟合。
      • 图像 embedding model 需要足够多的训练才能捕获视觉信息和用户意图之间的高度非线性关系。

      因此论文提出了 partial warm-up 技术:

      • 使用预训练模型(前一天的模型)为除了ID embedding 之外的所有部分来初始化,需要通过预训练模型初始化的部分包括:图片embedding modelextractorMLP 部分。
      • ID embedding 部分的参数采用随机初始化。
  4. 基准模型 baseline: 基准模型采用仅具有稀疏 ID 特征的 embedding&MLP 模型。

    注意:基准模型还采用了两个特殊的ID 字段:广告图片ID 字段、用户行为图片的ID 字段。

    这两个字段对于公平比较是必不可少的,因为这两个字段可以引入图片的部分信息,从而在与DICM 模型比较过程中清晰的看到图片语义信息带来的改进。

    如果没有这两个字段则无法引入任何图片信息,因此无法和 DICM 模型比较,因为后者引入了更多的信息(图片信息)。

    另外论文使用自适应正则化技术(参考 DIN 模型)来解决ID 特征过拟合的问题。

15.3.1 AMS 效率

  1. 首先研究 AMS 架构相对于 PS 架构的效率优势。

  2. 论文比较了 PS 架构的两种图片保存方式:

    • PS-worker:在 worker 结点存储图片,同时也存储其它训练数据。
    • PS-server:在 server 结点存储图片,在 worker 结点存储其它训练数据。

    与它们进行比较的是 AMS 架构。

    具体参数:

    • 20GPU 结点组成的 GPU 集群,样本数量 39亿,平均每个用户包含 32.6 个行为图片。
    • mini-batch 设置为每个 GPU 结点 3000 个样本,因此有效 mini-batch 大小为 60000
    • 受益于 common-feature 技术,每个 mini-batch 包含 32 万张图片、以及 140ID (不包括图片的索引 ID )。
    • 总计有 1.2 亿张不同的图片参与训练,每张图片被预处理为 4096 维的向量来作为训练输入。

    实验结果如下表所示,表中的结果是 mini-batch 的平均数据规模,单位为Bytes 。其中:

    • storage 指标:存储 mini-batch 图片和 ID 数据需要的存储规模,单位为 Bytes

    • communication 指标:在 workerserver 之间传输 mini-batch 数据的传输规模,单位为 Bytes

      ALL 指的是传输所有数据(图片 + ID 数据),Image 指的是仅传输图片数据。

    从实验结果可以看到:AMS 架构达到了很好的系统效率,而PS-workerPS-server 架构的效率损失(如:存储效率、通信效率)很大。

    • PS-worker 需要的存储量是 AMS 架构的 31 倍(5.1G vs 164M
    • PS-server 需要的通信负载是 AMS 架构的 32 倍(5.1G vs 158M

    十五、DICM - 图31

15.3.2 消融研究

  1. 默认情况下,所有消融研究都取消了 partial warm-up 策略。

  2. 我们从baseline 开始,分别使用广告图片特征、用户行为图片特征、以及同时使用这两个特征。

    注意:baseline 模型中已经有广告图片ID 和用户行为图片ID,但是并没有引入图片的语义信息。这里评估的是引入图片语义信息带来的效果。

    从实验结果可知:

    • 用户行为图片、广告图片都可以提升模型效果。因此通过在用户侧和广告侧引入视觉特征具有积极效果。

    • 对用户行为图片、广告图片共同建模将显著提升模型性能。这种提升的效果远远大于二者独立收益之和。

      因此该结果表明:通过对用户视觉信息和广告视觉信息联合建模具有协同效应。

    十五、DICM - 图32

  3. 前面我们探讨了不同 aggregator 的聚合策略,这里通过实验观察其效果。

    • Concatenation 聚合:对用户行为图片的 embedding 向量进行拼接聚合,其性能较差,因此并不是一个好的聚合方式。
    • Maxpooling/Sumpooling 聚合:这两种聚合方式具有一定的改进。
    • AttentivePooling:通过将广告图像作为注意力query ,这种聚合方式表现出明显的增益。
    • MultiQeuryAttentivePooling:收益于稀疏ID 和图片语义信息之间的交互,这种聚合方式的效果最佳。

    十五、DICM - 图33

  4. DICM 可以应用不同的 basic 网络,并带来图片特征的持续改进。为验证这一点,论文使用经典的 LR 模型、基准的 Embedding&MLP 模型、近期提出的 DIN 模型来作比较。

    可以看到:

    • 具有图片特征的模型始终比仅具有ID 特征的模型效果更好。
    • 具有图片特征的DIN 模型表现最佳,并大大超越了经典的 DIN 模型。
    • 采用图片特征时,LR 模型的改进不如其它两种模型。这是因为 LR 模型无法充分利用图片的高级语义信息。

    十五、DICM - 图34

  5. 论文比较了采用 non warm-uppartial warm-upfull warm-up 三种预训练策略的效果。

    • partial warm-up 效果最佳。
    • full warm-up 效果最差,这是由于 ID embedding 参数严重过拟合。

    十五、DICM - 图35

15.3.3 离线/在线评估

  1. 最佳配置的 DICM 模型(采用 partial warm-up 策略、MultiQeuryAttentivePooling 、以及其它最佳配置)和 baseline 模型的离线效果对比、在线 A/B test 对比:

    • 离线对比结果如下。结果表明:DICMbaseline 效果更好。同时,DICMbaseline 的差距在训练过程中是一致的,这证明了 DICM 的健壮性。

      十五、DICM - 图36

      十五、DICM - 图37

    • 在线 A/B test 对比结果如下。为了和线上生产环境保持一致,我们用生产中最先进的网络(具有更精细的人工设计特征的 Embedding&MLP 版本)替代 DICMbasic 网络。

      下面给出了连续 7天的在线 A/B test 中,DICM 取得的相对增益。评估的指标为广告系统的三个关键指标:CTR/eCPM/GPM(gross merchandise value per mile)

      十五、DICM - 图38

15.3.4 Pre-rank

  1. 前文提到我们可以在 Pre-rank 阶段应用调整过的 DICM 模型。

    实验结果表明:DICM 模型再次明显优于 baseline

    十五、DICM - 图39