你在使用哪种编程语言?快来投票,亲手选出你心目中的编程语言之王 了解详情
写点什么

阿里巴巴推出 DeepInsight 平台:可视化理解深度神经网络 CTR 预估模型

2018 年 7 月 07 日

题目(中英文):

可视化理解深度神经网络 CTR 预估模型 / Visualizing and Understanding Deep Neural Networks in CTR Prediction

主要作者(中英文):

郭霖 叶卉 苏文博 刘贺欢 孙凯 向杭 侯俊 / Lin Guo, Hui Ye, Wenbo Su, Hehuan Liu, Kai Sun, Hang Xiang, Jun Hou

背景:

深度学习在研究和应用领域都已取得了重大的进展。但迄今为止,深度学习算法仍不够透明,多被做“黑盒”使用。近年来,人们开始致力于去更透彻地理解深度学习内部的复杂机理,从而确保算法安全可靠或达到进一步优化的目的。

尽管业界对于图像处理和自然语言处理领域,在算法可解释性方向上已经取得了一些进展,但对于电商与广告领域,目前还是空白。另一方面,深度学习技术已经开始被大规模应用到广告业务中。广告是很多互联网现金流的重要来源,是核心业务。深度神经网络模型是核心业务中的核心模块,有效理解和评估这一“黑盒”算法变得非常重要。

由于人类对于世界的认知和感受主要来自于视觉,良好的可视化可以有效的帮助人们理解深度神经网络,并进行有效的评估、优化和调节。而可视化的前提是对模型进行相关数据透出,从而进行可视化分析评估,最终使得神经网络从“黑盒”向“白盒”过渡。针对这些挑战,我们搭建了一个面向工业级大规模深度学习应用的可视化分析平台—DeepInsight。

我们将针对电商场景下的广告点击率(CTR)预估,以一个简单但具有代表性的深度神经网络模型为例,举例介绍在几个典型而重要的问题上模型可视化分析的应用:1. 泛化效果评估;2. 特征设计;3. 模型结构设计。

大多数图像或自然语言处理的研究着眼于从样本粒度出发去可视化理解模型。区别于这些研究场景,工业界的 CTR 预估面对的是海量规模的数据与特征、有偏的带标签数据、稀疏而复杂多样的信号模式,而最终效果评估首要关注的是宏观的商业指标。从业务特点出发,我们以统计信号入手,探索理解模型在整个目标数据集上的宏观表现。相关实验工作的细节请参阅我们的英文版论文(参见文末链接)。

平台介绍:

DeepInsight 平台面向工业级深度学习算法研发与应用,提供完善的模型训练任务生命周期管理,致力于提供高效全面的数据透出方式,并以深度学习数据的多维度可视化、大规模数据实时分析、数据再建模等方向作为核心功能。

平台基于分布式微服务集群化部署,由前端 WEB 平台 + 后端微服务 + 深度学习组件等三个子系统构成,各个微服务实例之间是隔离的,互不影响;目前已接入 Tensorflow 和 MXNet 两个大规模并行训练框架,支持多任务学习、迁移学习、强化学习、GAN、模型融合等复杂场景,旨在通过数据透出及可视化等手段,提高神经网络的可解释性,解决模型调试及问题定位分析等系列问题;以生命周期管理的方式执行训练任务,从而提供一站式的可视化评测服务。平台在赋能业务的同时,业务也会将后期处理过的数据反馈给平台,从而构建以 DeepInsight 为基础数据核心的 AI 可视化生态圈。

算法实验:

不失代表性,模型采用简单的GwEN 式结构[1]。对于每条输入样本,稀疏特征ID 被映射为低维稠密的Embedding 向量,然后以特征组为单位将每组的特征ID Embedding 进行sum pooling 操作,得到该特征组的Embedding 向量。各个特征组的Embedding 向量被连接在一起,作为输入传给后续的全连接层。模型总共有4 个全连接隐层并以Relu 为激活函数。输出层通过sigmoid 操作输出预估点击率(PCTR)。

对于训练至不同阶段的模型,我们通过动态透出的方式收集模型内部在不同数据集上的状态数据,以此为可视化分析的基础。

泛化效果与神经元状态波动:

众所周知,深度神经网络有强大的拟合能力。随着训练进行,模型会不断地去拟合训练数据,对输入信息中的微小差别越来越敏感。给定模型,每个神经元的状态由样本输入决定。数据集中不同样本输入的变化导致神经元状态的波动,这一波动的程度反应了模型对于输入信息的敏感程度。另一方面,模型对训练数据过于敏感会降低其泛化能力。我们的可视化清晰地展现了模型泛化效果与神经元状态波动程度之间的联系。

下图展示了模型第四隐层中每个神经元状态值的平均波动程度,对比了不同训练阶段的模型在训练与测试集上的统计表现。在过拟合之前,神经元的波动程度保持相对稳定,训练/ 测试集间较为一致。过拟合时,波动程度显著上升,并且训练集明显强于测试集。这正反映了过拟合状态下的模型对训练数据过度敏感。

我们聚合出整个隐层的所有神经元的平均波动程度,发现该指标可以与模型在不同数据集上的效果变化(AUC)相关联。神经元的波动程度为我们提供了一种理解与检测过拟合的手段。另外,这个指标计算不需要标签,因此可以帮助我们在一批拿不到点击反馈的数据集上的评估模型效果。

特征影响力:

比起传统的逻辑回归模型,深度神经网络的一个优点是具有从输入中自动挖掘非线性交叉特征的能力。但是实践发现,输入特征本身的质量好坏也极大地影响着模型的效果。

什么特征对模型比较重要?对于传统的逻辑回归模型,我们可以通过特征的权重来认识其重要性。但是,这对于深度神经网络是不适用的。

我们利用梯度信息来认识各个特征组对模型的影响。将全连接网络的输入针对模型输出(PCTR)求导。该梯度的强度表示了模型的输出预估对于该输入的微小变动的敏感度,从而可以反映出该输入对于模型的影响力。梯度越强,表明该输入的对模型的影响越大。以每个特征组聚合各自Embedding 所对应的梯度的平均强度,可以描述该特征组对模型的影响。

下图对比了两个不同状态的模型(未过拟合 Vs 过拟合)中的各个特征组的平均影响力。可以清晰地看到两个状态的区别:过拟合时模型对少量几组特征过度敏感,尤其是编号为1 和11 的特征组。事实上,这两个都是具有海量ID 取值的单个特征如user ID,所需参数空间极大,而本身携带的可泛化信息确实很少。

隐层的效用与其信息表征:

我们通过可视化隐层的输出向量,展示模型对输入信息的综合表征,以帮助我们了解模型的内在机制以及模型结构对于效果的影响。下图将不同隐层的输出向量经过tsne 投影到2 维平面。与[2] 针对图像分类的可视化结果不同,我们没有观察到点击与不点击两类样本点的分离。这是由我们场景下样本信息的高噪声所决定的。但是,可以看到点击样本点有空间聚集。第三层比第二层有更明显的聚集,表明第三层表征的信息更有区分能力。但是第四层却并没有显示出进一步提升。

反过来指导模型结构设计,我们的实验证明训练没有第四层的模型也可以达到与四隐层模型相近的效果。

隐层的效用与其表征再建模:

上节介绍了了解每个隐层对于模型分类效果带来的收益。我们的DeepInsight 平台可以让我们很方便地对透出数据进行再建模,来进一步深化对模型结构的认识。

我们使用Alain 和Bengio 提出的探测层方法[3],将隐层对于样本的表征向量作为输入特征,同样以样本的点击反馈为标签,训练逻辑回归probe 模型。对比不同隐层所训练出的probe 模型的效果,可以帮助我们了解隐层结构对模型效果的作用。如下图,可以明显的看到,从第一到第三层,隐层输出信息对于点击行为的区分力逐层提升。第四层并没带来明显收益,与上节的结论一致。

小结:

我们在电商广告场景下探索深度学习可视化与可解释性,通过分析深度神经网络模型内部数据,打开这个“黑盒”,以求深入理解模型的内部状态与机制。这些探索被成功地落地到平台服务,从而助力算法研发与业务应用。

论文下载地址 https://arxiv.org/abs/1806.08541

参考文献:

[1] Guorui Zhou, Chengru Song, Xiaoqiang Zhu, Ying Fan, Han Zhu, Xiao Ma, Yanghui Yan, Junqi Jin, Han Li, Kun Gai. 2017. Deep Interest Network for Click-Through Rate Prediction. arXiv preprint arXiv:1706.06978 (2017).
[2] Paulo Rauber, Samuel Fadel, Alexandre Falcao, and Alexandru Telea. 2017. Visualizing the hidden activity of artificial neural networks. IEEE transactions on visualization and computer graphics 23, 1 (2017), 101–110.
[3] Guillaume Alain and Yoshua Bengio. 2016. Understanding intermediate layers using linear classifier probes. arXiv preprint arXiv:1610.01644 (2016).

2018 年 7 月 07 日 18:577012

评论

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

UDP连接要不要发起connect

kof11321

网络编程

敏捷与安全不可兼得吗?看完这篇文章后,我想说:未必!

华为云开发者社区

敏捷 安全 开发

消息队列优化(2) -- 几种基本实现

1412

消息队列 workflow srpc 异步调度 并行计算

判断回文数字算法,swift 5初始化详解,时间管理计划落地,swift5 多线程高级用法 John 易筋 ARTS 打卡 Week 33

John(易筋)

ARTS 打卡计划 算法回文数字判断 时间管理计划落地 swift5 初始化详解 swift5多线程高级用法

掌握这些Java高级面试/知识点之后,轻松拿下各大厂Offer不在话下!

Java成神之路

Java 程序员 架构 面试 编程语言

完美!华为爆出Redis宝典,原来Redis性能可压榨到极致

996小迁

redis 架构 面试 资料

干货|原来IPFS是这样存储文件的

QTech

区块链技术 IPFS 星际文件系统

呃?!!!我彻底忘了这件事😂

Nydia

微服务缓存原理与最佳实践

万俊峰Kevin

go 缓存 缓存穿透 缓存并发 go-zero

消息队列优化(1) -- 鶸的介绍篇

1412

消息队列 workflow srpc 异步调度 并行计算

万字长文聊缓存(上)

Silently9527

Java nginx HTTP

我画了 40 张图就是为了让你搞懂计算机网络层

cxuan

计算机网络 IP 网络层 ipv6 ipv4

AI人脸识别技术门禁系统解决方案智慧社区建设

13828808769

人脸识别 智慧城市 智慧平安小区平台开发 刷脸

阿里、有赞2020五轮技术面+一轮HR面,Java岗面经,面试题总结

Java成神之路

Java 程序员 架构 面试 编程语言

一个老程序员的2020年总结回顾,2021年如何变的更牛逼

陆陆通通

程序员 程序人生 年终总结

谁说明天上线,这货压根不知道开发流程!

小傅哥

Java 小傅哥 架构设计 开发流程 开发规范

重学JS | 数组知识点大全,必收藏!

梁龙先森

前端 编程语言

面试官:数据库自增ID用完了会怎么样?

艾小仙

数据库

“阿里P8架构师”整理到深夜的Java技术文档:“Redis+Nginx+设计模式+Spring全家桶”

Java成神之路

Java 程序员 架构 面试 编程语言

面试腾讯,字节跳动首先要掌握的Java多线程,一次帮你全掌握

Java架构之路

Java 程序员 架构 面试 编程语言

江苏民丰 x mPaaS | 县域小银行,技术团队就12人,却找到了数字化转型的秘籍

蚂蚁集团移动开发平台 mPaaS

银行数字化转型 mPaaS

2020年国内前端团队都做了些什么?

徐小夕

前端 前端工程 前端进阶 技术栈 2021

软件架构设计方案实战

andy

曲折!目标腾讯,字节,拼多多;最后居然五面进了阿里?

Java架构之路

Java 程序员 架构 面试 编程语言

开源整套Netty源码笔记+19个案例调优+游戏项目,终于彻底顿悟了

Java架构追梦

Java 源码 架构 Netty 游戏项目

准备去阿里以及大厂面试你都需要会些什么?我从任职阿里的朋友口中,总结出了一些答案!

Java架构之路

Java 程序员 架构 面试 编程语言

智慧平安社区软件解决方案,社区大数据分析平台搭建

WX13823153201

智慧平安社区软件解决方案

40亿条/秒!Flink流批一体在阿里双11首次落地的背后

Apache Flink

flink 流计算

消息队列优化(3) -- grpc MPMCQueue 简介及各队列性能对比

1412

消息队列 workflow srpc 异步调度 并行计算

关于一个梦(自我的死亡)

Yuchen

身心健康 心理 自我

Polkadot系列(四)——Polkadot茶溪岸啤(XCMP),干杯!

QTech

区块链技术 polkadot 跨链

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

阿里巴巴推出DeepInsight平台:可视化理解深度神经网络CTR预估模型-InfoQ