十五、DICM
淘宝的每个商品通常会展示一个商品图片以及相关的一小段描述文字。当用户对商品感兴趣时,用户可以点击图片从而查看更多的详情信息。
用户点击的商品图片被称作行为图片
behavior image
。通过引入用户的历史行为图片可以引入用户的视觉偏好,从而增强用户的行为representation
,有助于CTR
的预测。利用行为图片的一个简单方式是:为每张图片分配一个图片
ID
,然后通过模型自动学习这些图片ID
的representation
。但是图片
ID
仅仅告诉我们:这些图片是不同的。图片ID
无法给出图片的语义信息。使用图片
ID
有两个主要缺点:- 对于出现频率非常低的行为图片,其参数无法得到充分的训练,从而使得其
representation
表现较差。 - 在线上预测时,对于新的、从未见过的行为图片,无法得到其
representation
,泛化能力很差。
另一种方式是:利用行为图片的语义信息,如经过
CNN
模型抽取的feature map
。这种方式可以提供商品本身的视觉描述,带有视觉语义信息,从而为模型带来更强的泛化能力。
在线上预测时,对于新的、从未见过的行为图片,我们仍然可以抽取其
feature map
从而引入模型。 而这些feature map
是模型在训练中曾经见过或者能够处理的。- 对于出现频率非常低的行为图片,其参数无法得到充分的训练,从而使得其
目前已有一些
DNN
模型引入商品图片特征,但是它们引入的是广告侧的图片特征而不是用户侧的行为图片特征。这二者区别在于:广告侧的图片特征:图片作为目标广告的特征,它刻画了广告的视觉信息。
因为每个目标广告通常只有一张商品图片,所以在训练和预测时每个样本只有一张图片。
用户侧的行为图片特征:图片作为用户的特征,它刻画了用户的视觉偏好信息。
因为每个用户历史上可能点击很多商品的图片,所以在训练和测试时每个样本有很多张图片。
事实上,可以同时引入广告侧的商品图片特征和用户侧的用户行为图片特征,从而结合广告视觉特征和用户视觉偏好,进而提高模型
CTR
预测能力。在模型中对用户的行为图片建模非常有挑战性。
在淘宝中,平均每个用户的行为图片数量在两百多个。考虑到淘宝的用户规模在亿级、商品规模在数十亿(因此对应的商品图片也在数十亿)。因此用户侧的行为图片特征的训练非常困难。
在传统的参数服务
PS
架构中,训练图片存储的位置是个难点:- 如果图片存储在
worker
中则大幅增加了训练数据的规模。在淘宝的业务场景中,每个mini-batch
的数据量从134M
增加到5.1G
,增加大约 40倍。这使得网络IO
无法承受。 - 如果将图片存储在
server
中,并在训练期间由worker
访问,则训练时需要传输大量原始图片,所以导致训练过程的通信负载难以接受。
因此传统的
PS
架构不适合该场景。- 如果图片存储在
论文
《 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 广告系统
淘宝展示广告系统
display advertising system
每天响应数十亿次pv
请求,每个请求都需要系统在几毫秒内从数千万个广告中选择eCPM
排名最高的广告。广告系统以类似漏斗的方式完成此任务。系统主要由三个串联的模块组成:
Match
模块:该模块根据用户行为预测出用户的偏好,并从全量候选广告集中检索大约4000
个广告。该模块也被称作检索模块或者召回模块。
Pre-rank
模块:该模块采用轻量级的CTR
模型将检索到的广告集根据预估的CTR
进一步缩减至大约400
个广告。该模块也被称作粗排模块。
Rank
模块:该模块使用复杂的CTR
模型准确预测粗排的广告集中每个广告的CTR
,通过eCPM
对这些广告进行排序并选择最佳的广告。这一步缩减到1
个广告。该模块也被称作精排模块。
DICM
模型及其它类似的模型通常都作用在Rank
模块。但论文作者指出:经过调整的DICM
模型也可以应用于Pre-rank
模块。
15.2 整体结构
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
。该架构不仅适用于用户行为图片,也适用于用户行为文本、用户行为视频。
15.2.1 AMS
引入用户行为图片的模型的训练时,主要挑战是大量的图片。图片不仅本身数据量大从而导致存储、通信的巨大开销,而且在提取图片的语义信息时涉及复杂的计算从而导致巨大的计算开销。
为解决该问题,论文提出了
AMS
架构。AMS
不仅可以通过key-value
来lookup
查找embedding
向量,还可以对图片进行embed
。和
PS
架构一样,AMS
也包括server
和worker
,此外AMS
还包含task scheduler
。AMS
同时训练两个模型worker model
和embedding model
。其中各组件的执行过程为:Task Scheduler
:- 首先初始化模型 。
- 然后执行
mini-batch
训练。对于每个mini-batch t
,在所有worker
上执行过程WORKERITERATIOIN(t)
。
Worker
:对所有的worker
执行过程WORKERITERATIOIN(t)
。对于第
r
个worker
(),WORKERITERATIOIN
步骤为:加载第
t
个mini-batch
的特征、标签: 。从
Server
请求 中的ID
和图片的embedding
(SERVEREMBED
过程) 。其中图片通过图片的、索引来向server
发生请求。从
Server
获取所有的embedding
向量 。基于 对 进行前向传播和反向传播,并得到梯度:
worker
参数的梯度: 。embedding
参数的梯度:
向
Server
推送梯度 ,并且执行server
的SERVERUPDATE
过程。向所有
worker
同步梯度 并更新模型 。
Server
:对所有的Server
执行过程SERVEREMBED(t)
和SERVERUPDATE(t)
。对于第 个
Server
(),SERVEREMBED
步骤为:- 从
Server
本地获取图片数据I
- 计算图片的
embedding
:
对于第 个
Server
(),SERVERUPDATE
步骤为:- 计算梯度:
- 向所有
server
同步梯度 并更新模型 。
- 从
在
AMS
架构中,所有的行为图片在worker
中使用索引来记录,而这些图片在server
中存储和计算,并通过embedding
模型获取其语义向量。图片以
key-value
的格式存储在server
之间,key
为图片索引value
为图片数据。样本数据保存图片索引而不是图片数据本身,同时样本数据在所有
worker
之间分配。sparse ID
特征和embedding model
在server
中运行,MLP
和aggregator
在worker
中运行。每一轮迭代,
worker
都读取一个mini-batch
样本并从server
请求ID
特征和图片特征的embedding
。注意:该
worker
的请求会被发送到存储对应ID
和图像的server
。- 对于
ID
特征,server
直接通过lookup
查找对应的embedding
。 - 对于图片特征,
server
首先从本地获取图片数据,然后通过embedding
模型 获取embedding
向量 。
- 对于
反向梯度传播在
worker
部分和server
部分被分别处理,这保证了原始图片特征端到端的训练。这种方法不仅可以用于行为图片,也可以用于用户历史商品评论等文本语义的抽取。
AMS
优势:每张图片在
server
中仅存储一次(而不是对每个用户存储一次),显著减少图片的存储(减少大约40倍)。在
worker
和server
之间传递的embedding
向量的大小远小于图片本身的大小,这降低了通信需求(减少大约340倍)。server
中多个图片可以并行处理(在GPU
中),这可以降低计算成本。实际应用中,
server
和worker
都部署在同一个GPU
中,因此这可以最大程度的利用GPU
。
基于
AMS
,我们可以将数十亿样本在18小时内完成训练,使得模型实现天级更新从而达到工业级需求。连续18天日志数据在不同GPU
配置上的训练时间如下图所示。考虑到成本和时间之间的折衷,论文选择20GPU
。
15.2.2 embedding model
embedding model
用于从原始图片数据中语义embedding
向量。论文采用预训练的VGG16
模型:冻结VGG16
的底层部分,仅训练其高层部分。论文冻结
VGG16
的前14层(从Conv1
到FC6
),固定部分输出一个4096
维的向量。对于可训练的部分,论文采用3
层的全连接网络(每层的神经元数量分别为4096,64,12
),并输出一个12
维的向量。训练
VGG top
多少层涉及到效果和效率之间的折衷:- 如果冻结的部分太多,如冻结到
FC8
,则固定部分输出一个1000
维的向量。这会导致计算效率较高(可训练的部分减少),但是导致3%
的相对性能损失。 - 如果冻结的部分太少,则可训练部分增加,计算量会显著增加,同时模型性能并不会显著改进。
- 如果冻结的部分太多,如冻结到
15.2.3 aggregator
aggregator
用于将用户大量的行为图片embedding
向量聚合成一个固定长度的向量。论文探索了大量聚合方式:最直接的方式:将所有用户行为图片
embedding
向量串联在一起,然后填充或截断到固定长度。当用户行为图片数量较大,或者用户行为图片的顺序更改时,这种方式容易受到影响。
另一种直接方式:采用池化操作(如:最大池化、均值池化、或者
sum
池化)。这种方式给每个图片赋予相同的权重,无法侧重相关的行为图片。
类似
DIN
模型引入注意力机制,它根据目标广告自适应的捕获最相关的行为。考虑到视觉相关性,论文将广告图片作为
query
,这种方式称作Attentive Pooling
。
广告的商品类别
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
,这互补的探索了不同的相关性。- 将广告图片作为
15.2.4 推断
在大型工业广告系统中,推断效率对于
CTR
模型的在线部署至关重要。对于常规
DNN
模型,通常embedding
参数存放在全局key-value
共享存储中,MLP
参数存储在本地ranking server
中。对于每个inferrence
请求,ranking server
会从key-value
共享存储提取ID embeding
,并向MLP
馈入该embedding
从而执行CTR
预测。实践证明该方案在生产中具有高吞吐、低延迟。
当涉及图片尤其是大量的用户行为图片时,提取图片的
embedding
向量可能带来大量的计算开销和通信开销。收益于图片的独立性,图片
embedding
向量可以离线计算并作为常规ID
特征进行全局存储。因此ranking server
无需任何修改即可适配图片的引入。注意:对于已有的图片可以通过其图片
ID
查找离线计算好的图片embedding
向量。对于新的图片,系统可以直接计算其embedding
来使用并缓存起来。这可以有效缓解ID
特征的冷启动问题。对于每个
pv
请求,DICM
的响应时间仅仅从21ms
(传统 的、不带图片的DNN
模型)增加到24ms
。符合在线推断的需求。DICM
模型也可以用于Pre-rank
阶段。为加快在线推断效率,论文设计了类似DSSM
的架构。首先对广告和用户分别建模,得到维度相同的
ad vector
和user vector
。注意:为了避免广告和用户特征过早融合,用户的行为图片
embedding
向量采用sum
池化。然后通过计算
ad vector
和user vector
的点击来执行预测。
直到点击之前,用户和广告之间都没有交互。因此
ad vector
和user vector
可以离线预计算并存储。在线serving
只需要读取预计算好的向量并执行向量点击操作,这大幅降低了计算量。
15.3 实验
数据集:所有数据来自于淘宝的展示广告系统收集自
2017-07
月连续19
天的日志数据,其中前18
天为训练集、最后一天为测试集。数据集包含
39
亿训练样本、2.19
亿测试样本。样本有27
种ID
特征,包括用户画像、用户行为、广告基础信息和描述信息。评估方式:离线评估模型的
AUC
和GAUC
。GAUC
是所有用户的AUC
加权平均。在实际广告系统中,GAUC
比AUC
和交叉熵损失更有效。因为GAUC
是个性化的,专注于每个用户的预测。训练技巧:
为加快模型训练速度和降低存储成本,论文采用
common feature
技巧:将相同用户的样本放置在一起,从而将用户的相关特征构成common feature
。论文选择每个用户过去14天点击的图片作为用户行为图片。
由于用户的点击行为具有太多的噪音,论文认为用户浏览了一定时长之后的点击才是有效点击。根据这种简单的过滤策略,模型的效果更好。同时用户平均点击图片的数量从200降低到32.6。
模型采用
PReLU
激活函数,这是实践中的经验;采用Adam
优化器,初始学习率为0.001
,学习率每隔24000
个batch
降低到之前的90%
。模型在2个
epoch
之后收敛,大约有12.8万
次迭代。收益于模型的天级更新,可以使用前一天的模型来初始化当前模型的参数。
注意:
DICM
的各部分以不同的速度收敛。- 由于
ID
的稀疏性以及参数规模较大,ID
的embedding
部分很容易陷入过拟合。 - 图像
embedding model
需要足够多的训练才能捕获视觉信息和用户意图之间的高度非线性关系。
因此论文提出了
partial warm-up
技术:- 使用预训练模型(前一天的模型)为除了
ID embedding
之外的所有部分来初始化,需要通过预训练模型初始化的部分包括:图片embedding model
、extractor
、MLP
部分。 ID embedding
部分的参数采用随机初始化。
- 由于
基准模型
baseline
: 基准模型采用仅具有稀疏ID
特征的embedding&MLP
模型。注意:基准模型还采用了两个特殊的
ID
字段:广告图片ID
字段、用户行为图片的ID
字段。这两个字段对于公平比较是必不可少的,因为这两个字段可以引入图片的部分信息,从而在与
DICM
模型比较过程中清晰的看到图片语义信息带来的改进。如果没有这两个字段则无法引入任何图片信息,因此无法和
DICM
模型比较,因为后者引入了更多的信息(图片信息)。另外论文使用自适应正则化技术(参考
DIN
模型)来解决ID
特征过拟合的问题。
15.3.1 AMS 效率
首先研究
AMS
架构相对于PS
架构的效率优势。论文比较了
PS
架构的两种图片保存方式:PS-worker
:在worker
结点存储图片,同时也存储其它训练数据。PS-server
:在server
结点存储图片,在worker
结点存储其它训练数据。
与它们进行比较的是
AMS
架构。具体参数:
20
个GPU
结点组成的GPU
集群,样本数量39
亿,平均每个用户包含32.6
个行为图片。mini-batch
设置为每个GPU
结点3000
个样本,因此有效mini-batch
大小为60000
。- 受益于
common-feature
技术,每个mini-batch
包含32
万张图片、以及140
万ID
(不包括图片的索引ID
)。 - 总计有
1.2
亿张不同的图片参与训练,每张图片被预处理为4096
维的向量来作为训练输入。
实验结果如下表所示,表中的结果是
mini-batch
的平均数据规模,单位为Bytes
。其中:storage
指标:存储mini-batch
图片和ID
数据需要的存储规模,单位为Bytes
。communication
指标:在worker
和server
之间传输mini-batch
数据的传输规模,单位为Bytes
。ALL
指的是传输所有数据(图片 +ID
数据),Image
指的是仅传输图片数据。
从实验结果可以看到:
AMS
架构达到了很好的系统效率,而PS-worker
和PS-server
架构的效率损失(如:存储效率、通信效率)很大。PS-worker
需要的存储量是AMS
架构的31
倍(5.1G vs 164M
)PS-server
需要的通信负载是AMS
架构的32
倍(5.1G vs 158M
)
15.3.2 消融研究
默认情况下,所有消融研究都取消了
partial warm-up
策略。我们从
baseline
开始,分别使用广告图片特征、用户行为图片特征、以及同时使用这两个特征。注意:
baseline
模型中已经有广告图片ID
和用户行为图片ID
,但是并没有引入图片的语义信息。这里评估的是引入图片语义信息带来的效果。从实验结果可知:
用户行为图片、广告图片都可以提升模型效果。因此通过在用户侧和广告侧引入视觉特征具有积极效果。
对用户行为图片、广告图片共同建模将显著提升模型性能。这种提升的效果远远大于二者独立收益之和。
因此该结果表明:通过对用户视觉信息和广告视觉信息联合建模具有协同效应。
前面我们探讨了不同
aggregator
的聚合策略,这里通过实验观察其效果。Concatenation
聚合:对用户行为图片的embedding
向量进行拼接聚合,其性能较差,因此并不是一个好的聚合方式。Maxpooling/Sumpooling
聚合:这两种聚合方式具有一定的改进。AttentivePooling
:通过将广告图像作为注意力query
,这种聚合方式表现出明显的增益。MultiQeuryAttentivePooling
:收益于稀疏ID
和图片语义信息之间的交互,这种聚合方式的效果最佳。
DICM
可以应用不同的basic
网络,并带来图片特征的持续改进。为验证这一点,论文使用经典的LR
模型、基准的Embedding&MLP
模型、近期提出的DIN
模型来作比较。可以看到:
- 具有图片特征的模型始终比仅具有
ID
特征的模型效果更好。 - 具有图片特征的
DIN
模型表现最佳,并大大超越了经典的DIN
模型。 - 采用图片特征时,
LR
模型的改进不如其它两种模型。这是因为LR
模型无法充分利用图片的高级语义信息。
- 具有图片特征的模型始终比仅具有
论文比较了采用
non warm-up
、partial warm-up
、full warm-up
三种预训练策略的效果。partial warm-up
效果最佳。full warm-up
效果最差,这是由于ID embedding
参数严重过拟合。
15.3.3 离线/在线评估
最佳配置的
DICM
模型(采用partial warm-up
策略、MultiQeuryAttentivePooling
、以及其它最佳配置)和baseline
模型的离线效果对比、在线A/B test
对比:离线对比结果如下。结果表明:
DICM
比baseline
效果更好。同时,DICM
和baseline
的差距在训练过程中是一致的,这证明了DICM
的健壮性。在线
A/B test
对比结果如下。为了和线上生产环境保持一致,我们用生产中最先进的网络(具有更精细的人工设计特征的Embedding&MLP
版本)替代DICM
的basic
网络。下面给出了连续 7天的在线
A/B test
中,DICM
取得的相对增益。评估的指标为广告系统的三个关键指标:CTR/eCPM/GPM(gross merchandise value per mile)
。
15.3.4 Pre-rank
前文提到我们可以在
Pre-rank
阶段应用调整过的DICM
模型。实验结果表明:
DICM
模型再次明显优于baseline
。