随着深度学习的发展,深度学习模型已经广泛用于推荐、搜索、广告等领域的 CTR 预估,比如微软的 Deep Crossing,Google 的 Wide&Deep,以及 FNN,PNN,阿里的 DIN,DIEN。这边盗用一下王喆老师的一张图,我觉得总结的非常好。
但是这些模型都没有用上用户浏览和点击的图片特征,而用户点击的图片序列特征其实很能代表用户的行为喜好,因此如果在 CTR 模型中加入 image 的特征,将对提升 CTR 模型的指标很有帮助。
并且文中说道:之前这些深度 CTR 模型大都是直接将 item 的 ID 特征映射成固定维度的 embedding 向量,其实这些 ids 特征很难去表达语义上的信息,特别当一个 id 出现次数很少的时候,其参数的更新次数就会不够,并且没出现过的 id 其压根都不会对预测有所影响。而图像特征则不同,图像特征有更好的泛化性,我理解就是比如两个很同品类的商品,图片很相似,但是其中有一个商品从来没在训练数据中出现过,那也没关系,因为相似的图片经过图像模型总会提取出很接近的向量。
https://zhuanlan.zhihu.com/p/63186101
创新点:
1.第一次将图片用于用户侧建模,基于用户历史点击过的图片来建模用户的视觉偏好。而之前的工作一般都是将图片特征用于物料侧,用于丰富商品、文章的特征表示。
2.因为图片特征维度都比较高,增加了传输的数据量,在分布式训练时,ps 和 worker 之间的通信会成为瓶颈。因此该工作在传统 server 端也增加了“模型训练”功能,该结构称为 Advanced Model Server (AMS)。
左边就是推荐/搜索中常见的 Embedding+MLP 结构。实际系统中可以替换成 Wide&Deep, DIN, DIEN 等较复杂的模型。
embedding model 已经训练好,即图中的 embmodel。经过 embmodel,得到商品的图片信息(图中的粉红色块)。
右边部分,负责利用图片建模用户。将每个用户点击过的图片,经过 embmodel 进行压缩(图中的蓝色块)。它们与商品图片(ad image)的 embedding 结果(粉红色块)经过 attentive pooling 合并成一个向量(桔色块),来表示用户的视觉偏好。
将用户点击过的多张图片的向量(蓝色)合并成一个向量(桔色),思路与 Deep Interest Network 基于 attention 的 pooling 机制大同小异,只不过要同时考虑“id 类特征”与“商品图片”对用户历史点击图片的 attention,称为 MultiQueryAttentivePooling。
第 1 步得到基于 id 特征的 embedding 结果,与第 2 步得到的商品图片(ad image)的 embedding 结果(粉红色),与第 3 步得到的表示用户兴趣偏好的向量(桔红色),拼接起来,传入 MLP,最后输出 softmax。
ADVANCED MODEL SERVER 架构
如果用传统的 PS 做法:可将图片特征存入 PS 中的 server 端,key 是 image index,value 是经过预训练好的 CNN 模型提取出来的稠密向量。训练数据只需要存储图片的 index,训练时,每个 worker 根据本地的训练集所包含的 image index,向 server 请求各自所需的 image 的 embedding,然后通过前向传播和反向传播来更新自己的 embedding 向量。
但是有个问题容易被忽略,文中经过 vgg16 模型提取的向量有 4096 维。每次迭代中,worker 和 server 需要通信数据量是 batch size * 单用户历史点击图片数 (i.e., 通常是几十到上百) * 4096 个浮点数。大概能达到 5G 左右的通信量,而一个传统的 ID 特征一般才用 12 维的向量去表示,引入 image 后,通讯量增长了 4096/12=341 倍。文中也解释了为什么选用 4096 维度的特征,而不是 512 或者 128 这种维度较低的向量。这是因为 vgg16 是针对 ImageNet 训练好的,而 ImageNet 中的图片与淘宝的商品图片还是有不小的差距。因此提取的 image embedding 足够长,才能更好地保留一些原始特征信息。其实可以专门训练一个针对商品图片的分类模型(比如图片产品词的多分类模型),就可通过这样的预训练好的模型提取更小维度的 embedding 向量作为 ctr 模型中的图片特征输入。只要保证低维度图片的 embedding 能够很好的表示商品图片特征空间,就或许可以不使用 AMS 这样的框架,直接上 PS 了吧。
当然 AMS 也是一个很好的解决方案:
为每个 server 增加一个可学习的“压缩”模型(文中的 sub-model,是一个 4096-256-64-12 的金字塔型的 MLP)
当 worker 向 server 请求 image embedding 时,server 上的“压缩”模型先将原始的 4096 维的 image embedding 压缩成 12 维,再传递给 worker,从而将通讯量减少到原来的 1/340
该“压缩”模型的参数,由每个 server 根据存在本地的图片数据学习得到,并且在一轮迭代结束时,各 server 上的“压缩”模型需要同步。
##总结
总结下 Deep Image CTR Model 的优点和创新点:
第一次将图片信息引入到用户侧建模,通过用户历史上点击过的图片建模用户的视觉偏好,而且将传统的 ID 类特征、物料的图像信息、用户的视觉偏好进行充分交互,能够发现更多的 pattern,也解决了只使用 ID 特征而带来的冷启动问题。
但是,引入 user behavior images 后,由于 image 原始 embedding 太大,给分布式训练时的通信造成了巨大压力。为此,阿里团队通过给每个 server 增加一个可学习的“压缩”模型,先压缩 image embedding 再传递给 worker,大大降低了 worker/server 之间的通信量,使模型的效率能够满足线上系统的要求。这种为 server 增加“模型训练”功能的 PS,被称为 AMS。
参考文献:
https://zhuanlan.zhihu.com/p/57056588
https://arxiv.org/abs/1711.06505
https://zhuanlan.zhihu.com/p/63
本文转载自 Alex-zhai 知乎账号。
原文链接:https://zhuanlan.zhihu.com/p/69141871。
评论