写点什么

阿里:Deep Image CTR Model

  • 2019-12-02
  • 本文字数:2225 字

    阅读完需:约 7 分钟

阿里:Deep Image CTR Model

随着深度学习的发展,深度学习模型已经广泛用于推荐、搜索、广告等领域的 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。


2019-12-02 16:24814

评论

发布
暂无评论
发现更多内容

不会性能调优,被面试官狂虐!全靠阿里Java性能调优全彩手册死撑

做梦都在改BUG

Java 性能优化 JVM 性能调优

谷歌架构师分享gRPC与云原生应用开发Go和Java为例文档

做梦都在改BUG

Java gRPC 云原生

Flink CDC 专题首发|每天 10 分钟,解锁新一代数据集成框架

Apache Flink

大数据 flink 实时计算

强势升级!融云上线第四代通信网 SD-CAN V4

融云 RongCloud

网络 通信 融云

Flink Table Store 独立孵化启动 ,Apache Paimon 诞生

Apache Flink

大数据 flink 实时计算

云端集成更便捷,得帆云iPaaS助力企业上云更成功!

得帆信息

平台 云产品

自学网络安全不知道这些,劝你提早放弃

喀拉峻

黑客 网络安全 自学

Rainbond的 Gateway API 插件制作实践

北京好雨科技有限公司

Kubernetes API Gateway rainbond

牛客网内部最新出品—1658页《Java面试突击核心手册》几乎覆盖市面上所有面试考点

架构师之道

Java 程序员 面试

Spring 源码解析-从源码角度看bean的循环依赖

做梦都在改BUG

Java spring 源码

容量王者,超级电容容量为何这么大???

元器件秋姐

科普 汽车电子 元器件 新能源 电容

统一观测丨使用 Prometheus 监控 SNMP,我们该关注哪些指标?

阿里巴巴云原生

阿里云 云原生 Prometheus snmp

从反脆弱角度说一说:技术系统高可用性策略

做梦都在改BUG

Java 高可用

终于学完国内算法牛人10年经验总结的数据结构与算法详解文档

做梦都在改BUG

Java 数据结构 算法

女朋友不懂Spring事务原理,今天给她讲清楚了!

做梦都在改BUG

Java spring 事务

MobTech|如何使用秒验

MobTech袤博科技

窗口管理器:Lasso 中文激活版

真大的脸盆

Mac Mac 软件 窗口管理 窗口管理工具

云原生数据库 | Data Infra 第 10 期

Databend

龙蜥白皮书精选:跨云-边-端的只读文件系统 EROFS

OpenAnolis小助手

镜像 操作系统 白皮书 龙蜥技术 EROFS

微前端架构的业务价值:实现独立部署、快速迭代和按需加载

FinFish

微前端 小程序容器 小程序化 微前端框架

SpringCloud 整合Gateway服务网关

做梦都在改BUG

Java Spring Cloud Gateway 服务网关

策略 | 通过 NFTScan 进行 NFT 投资组合的管理和信息追踪

NFT Research

NFT NFTScan

MobTech|场景唤醒的实现

MobTech袤博科技

中间件:数字化时代系统集成商的得力助手

FinFish

中间件 系统集成 小程序容器 软件中间件

2023年Java岗面试八股文及答案整理(金三银四最新版)

采菊东篱下

Java 程序员 面试

数禾科技 AI 模型服务 Serverless 容器化之旅

阿里巴巴云原生

阿里云 Serverless 云原生 Knative 容器化

海泰方圆出席首届工业和信息化领域商用密码应用峰会

电子信息发烧客

软件测试/测试开发丨移动端App自动化之触屏操作自动化

测试人

软件测试 自动化测试 测试开发

大厂直通车!GitHub独一份的Jenkins+k8s核心知识笔记(全彩版)

做梦都在改BUG

Java Kubernetes k8s jenkins

阿里:Deep Image CTR Model_语言 & 开发_Alex-zhai_InfoQ精选文章