推荐系统CTR预估学习路线:从LR到FM/FFM探索二阶特征的高效实现

推荐系统CTR预估学习路线:利用树模型自动化特征工程

推荐系统CTR预估学习路线:深度模型

推荐系统CTR预估学习路线:引入注意力机制

作者:Eric陈健锋 来源:炼丹笔记

导语

在广告、推荐系统CTR预估问题上,早期的完全规则方法被过渡到以LR为代表的机器学习方法,为了充分发挥组合特征的价值,在相当长一段时间里,业界热衷于使用LR+人工特征工程。但人工组合特征成本高昂 ,在不同任务上也难以复用。2010年FM因子分解方法的出现解决了人工组合特征的困境,2014年Facebook提出的GBDT+LR也给出了一种利用树模型特点构建组合特征的思路。不过随着深度学习的崛起,2015年以后,借助非线性自动组合特征能力的深度模型,开始成为业内的主流。从经典DNN到结合浅层的Wide&Deep,用于CTR预估的深度模型在近些年间百花盛开,各种交叉特征建模方法层出不穷,Attention机制也从其他研究领域引入,帮助更好的适应业务,提升模型的解释性。在这进化路线之下,核心问题离不开解决数据高维稀疏难题,自动化组合特征,模型可解释。我们梳理了近些年CTR预估问题中有代表性的模型研究/应用成果,并对部分经典模型的实现原理进行详细剖析,落成文字作为学习过程的记录。

目录

0. CTR预估模型进化路线
1. 从LR到FM/FFM探索二阶特征的高效实现1.1 LR与多项式模型1.2 FM模型1.3 FFM模型1.4 双线性FFM模型
2. GBDT+LR利用树模型自动化特征工程
3. 深度模型提升非线性拟合能力自动高阶交叉特征end-to-end学习3.1 特征的嵌入向量表示3.2 经典DNN网络框架3.3 DNN框架下的FNNPNN与DeepCrossing模型3.4 Wide&Deep框架及其衍生模型3.4.1 Wide部分的改进3.4.2 Deep部分的改进3.4.3 引入新的子网络
4. 引入注意力机制提高模型自适应能力与可解释性4.1 AFM模型4.2 AutoInt模型4.3 FiBiNET模型4.4 DIN模型4.5 DIEN模型
5. 总结

(四)引入注意力机制:提高模型自适应能力与可解释性

直观上,注意力机制可以借用人类的视觉行为来进行解释,例如我们观看一张照片的时候,视觉系统会很自然的将注意焦点集中在某些区域,而自动忽略其他不相关的内容。这种机制被引入到机器学习/深度学习,其中一个著名事件是,2014年Bengio将其提出应用于机器翻译领域[17],取得SOTA结果。正如上图所示的,横轴是英文原句,纵轴是法文翻译句,像素颜色越浅表示翻译某单词时对原句相关单词的注意力权重越大,机器翻译时的注意力权重分布是和人类的直觉认知相符的。相比黑盒模型,注意力机制增强了可解释性,并且这些注意力权重是在翻译时根据输入动态计算的,模型的自适应能力也获得提升。基于这些优点,注意力机制在广告/推荐系统的排序模型上也有很多的探索和应用,下文列举一些比较经典的工作。

4.1 AFM模型

首先,承接上文未展开的AFM模型(2017)[15],模型结构图如上,符号“⊙”表示向量的哈达玛积,不难看出模型实现的也是一种向量级vector-wise的特征交互。相比NFM模型将Bi-Interaction Pooling层两两向量交互后的结果直接求和压缩成一个向量,AFM引入了attention权重因子来对交互后的向量进行加权求和,以增强不同特征交互对的重要度区分:

其中,attention权重因子由Attention Net计算得到,Attention Net的定义为:

最后,模型的表达式:

不过,如上文所说,AFM的不足是模型限制在二阶交叉特征的表达上,缺少更高阶信息的建模。

4.2 AutoInt模型

2018年提出的AutoInt模型[18]是一个使用多头自注意力机制[19]增强模型解释性,同时又具备高阶交叉建模能力的模型。模型结构如上图,主要创新点在interacting layer,因此下面我们也只围绕interacting layer讨论,其他模块层不再赘述。下面我们来看interacting layer是怎么利用注意力机制生成有价值的特征组合的。

一层interacting layer的计算过程:

其中,M表示特征field的总数量,em表示第m个特征field的embedding向量。所有特征field都将进行两两embedding向量的交互组合,而图中展示的是第m个field与其他各个field进行交互的示例。第m个特征field与第k个特征field(k=1~M)组合的权重由以下的attention因子决定,

这里的第h个子空间,也就是multi-head中的第h个head,使用多个子空间能丰富特征组合的语义表达。同时,由于进行attention交互的query和key都来自同一张量,即[e1,e2,...,eM],因此interacting layer的核心原理为多头自注意力机制(Multi-head Self-Attention)。

AutoInt将并行的H个head的输出进行拼接,得到一个考虑组合信息后的特征向量 (combinatorial feature)

除此之外,AutoInt也加入了其他的trick,例如残差连接,以实现更深的网络层数,

最后,模型表达式如下,

其中, RES表示经过若干interacting layer后的第m个考虑组合信息后的特征向量,“⊕”是向量拼接符号。通过级联多层interacting layer,AutoInt可以以显式向量级交互方式实现高阶特征交叉。

附AutoInt论文中的实验结果:

注:AutoInt+表示AutoInt + DNN (2-layer MLP)

4.3 FiBiNET模型

FiBiNET[20],是结合特征重要性和双线性特征交互的CTR预估模型,由新浪微博机器学习团队发表在RecSys19。FiBiNET的整体模型结构如上图,相比传统深度学习模型,主要新颖点是加入了SENET Layer和Bilinear-Interaction Layer。

1)SENET Layer:

SENET Layer的主要作用是学习不同特征的重要度,对不同特征向量进行加权。即该Layer的输入为特征组embedding矩阵 E = [e1, e2, ..., em],Layer内部学习出每组特征的重要度 A = [a1, a2, ..., am],最后输出的“SENET-Like Embeddings”,V = A * E = [a1*e1, a2*e2, ..., am*em]。SENET Layer本质上也是Attention机制,具体包括三个步骤:

① Sequeen,将每个特征组embedding向量ei压缩成标量zi,用zi表示第i个特征组的全局统计信息,m个特征组得到压缩后的统计向量 Z = [z1, z2, ..., zm]。压缩的方法可以是mean-pooling或max-pooling等,不过原文表示mean-pooling效果要优于max-pooling。

② Excitation,基于压缩后的统计向量Z,学习特征组的重要度权重A,原文使用的是两层神经网络,第一层为维度缩减层,第二层为维度提升层,可形式化表示为:

③ Re-Weight,顾名思义,通过前一步得到的重要度权重A对原始特征组embedding向量进行重新赋权,得到SENET-Like Embeddings:

2)Bilinear-Interaction Layer:

原文作者认为传统的内积或哈达玛积形式难以有效对稀疏数据进行交叉特征建模,因此提出了一种双线性特征交叉方式(这种形式前文介绍双线性FFM时也有提到),如上图c,通过引入额外参数矩阵W,先对vi和W进行内积,再与vj进行哈达玛积,增强模型表达能力来学习特征交叉。如前文提到,引入参数W有3种形式,第一种是所有特征共享一个矩阵W,原文称为Field-All Type;第二种是一个Field一个Wi,称为Field-Each Type;第三种是一个Field组合一个Wij,称为Field-Interaction Type。

回到FiBiNet模型整体结构,原始特征组embedding向量p和经过SENET层输出的embedding向量q,经过Combination Layer,得到拼接后的向量c:

原文实验了两种应用方式,一种是直接对向量c的元素求和并经过sigmoid输出,得到一个浅层CTR预估模型。另一种是对向量c后接一个DNN深度神经网络,得到一个深层CTR预估模型。实验结果表明,同浅层/深层模型下,FiBiNET要优于其他模型,并且深层模型要优于浅层模型。

4.4 DIN模型

Deep Interest Network(DIN)[21]是阿里妈妈广告算法团队在2017年提出的,DIN是一个工业应用性很强的方案,特别是在电商领域。在介绍模型创新之前,我们先简单回顾一下DIN的研究动机。在线上广告系统或者其他的推荐场景,为了提升用户体验,同时最大化平台方的流量价值,要求我们的排序模型能精准识别用户兴趣,充分利用用户兴趣信息,对<user, ad/item>的匹配度进行打分。对于在线应用,用户兴趣主要来源于对用户行为数据的刻画,由多种多样的行为数据所表达出来的用户兴趣也应该具有多样性。但这里的一个挑战是,传统DNN模型会将这些用户行为embedding向量通过固定的形式(sum/max/mean等)pooling成一个定长向量作为用户兴趣表示,所有用户的兴趣表示都被映射在一个相同的固定空间,而由于空间维度(即向量维度)的限制,用户兴趣的多样性特点无法得到充足的表达。

举个例子,一个用户在电商网站上的浏览历史中,有30%是美妆相关,30%育儿相关,20%运动健身相关,剩下20%是其他,直观地看,这个用户的兴趣多样性分布是很明显的,但如果我们将这些历史行为向量(embedding vector)用上述的形式pooling成一个向量,恐怕得到的兴趣表示就很模糊,谁都不好解释,甚至模型也难以理解。

而DIN对这个问题的解决方案是“局部激活”(Local Activation),即根据候选广告来自适应的为历史行为向量分配激活权重,以attention-based pooling的方式将其合并作为用户在该候选广告下的兴趣表示,使得与候选广告更相关的历史行为在用户兴趣表示中占更主导的作用。

从特征组合的角度来看,DIN实际上是在建模广告与用户历史行为的交叉特征信息,而“局部激活”的背后原理也正是注意力机制。

除了“局部激活”这一重杀器,DIN论文中还给出了一些非常实用的深度模型技巧,例如,批感知的正则化方法(Mini-batch Aware Regularization)、数据自适应的激活函数(Dice),不过限于篇幅,这里不再展开介绍。

下表是DIN在阿里电商广告数据集中的离线实验结果,DIN模型AUC绝对值比Base模型(Embedding&MLP)高0.0059,同时也要优于Wide&Deep、PNN、DeepFM等模型。作者同时也给了在阿里进行的线上A/B testing实验结果,和Base模型相比,DIN*获得了10% CTR和3.8% RPM (Revenue Per Mille)的提升。

注:gAUC(用户级别的group AUC),好处是可兼顾用户自身内部的广告排序优劣,消除用户偏差

4.5 DIEN模型

DIEN,全称Deep Interest Evolution Network[22],也是来自阿里DIN的提出团队,是DIN的进化版,旨在挖掘用户行为背后的更高抽象语义的用户兴趣演化规律。这个模型我们不再阐述细节,概括DIEN的两个主要创新点:

  1. 兴趣抽取层(Interest Extractor Layer),利用GRU序列建模,从用户历史行为中抽取兴趣状态表示h(t),并且引入辅助loss利用下一时刻的行为信息帮助指导当前时刻h(t)的学习,更准确的建模用户兴趣向量。
  2. 兴趣演化层(Interest Evolving Layer),引入AUGRU(GRU with attentional update gate)建模用户兴趣的演化过程,在AUGRU的隐状态更新中引入目标广告和兴趣向量的attention因子,目的是使最终输出给DNN网络的兴趣终态h'(T)和目标广告有更高的相关度。

最后,在论文的生产环境数据集上,DIEN模型的离线AUC和线上A/B testing实验结果,均优于作者较早之前提出的DIN模型。DIEN作为序列模型结合注意力机制建模用户兴趣演化过程,优化业务问题的创造性工作,值得学习和借鉴。

总结

本文第一部分主要介绍CTR预估问题中的线性模型的演变,演变的主要思路是以因子分解的方法解决高维稀疏数据问题,以更有效的实现低阶交叉特征。第二部分介绍了非线性模型GBDT+LR,它实现了自动化特征工程。第三、第四部分属于深度模型的范畴,贯穿其中的是一个基本的DNN(Deep)框架,即sparse input layer -> embedding layer -> interaction layer -> output layer,其中interaction layer被用于以各种形式构建高阶交叉特征的信息表达。而Wide&Deep的提出,弥补了Deep对低阶信息利用的缺失,同时也丰富了模型架构的可能性。除了Deep部分的interaction layer可被不同形式地改进,Wide部分也被不断探索和优化,例如以FM、CrossNet替代LR,甚至引入一些新的子网络,例如CIN。在这些基础上,注意力机制的引入,也使模型能够自主充分地挖掘特征的重要性,有更好的自适应能力以及可解释性。

参考文献

[1] http://www.cs.cmu.edu/~wcohen/10-605/2015-guest-lecture/FM.pdf
[2] https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf
[3] https://www.csie.ntu.edu.tw/~cjlin/papers/ffm.pdf
[4] 张俊林:FFM及DeepFFM模型在推荐系统的探索
[5] 美团技术团队:深入FFM原理与实践
[6] Practical Lessons from Predicting Clicks on Ads at Facebook, KDD 2014
[7] Efficient Estimation of Word Representations in Vector Space, ICLR Workshop 2013
[8] Deep Learning over Multi-field Categorical Data: A Case Study on User Response Prediction, ECIR 2016
[9] Product-based Neural Networks for User Response Prediction, ICDM 2016
[10] Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features, KDD 2016
[11] Wide & Deep Learning for Recommender Systems, RecSys Workshop 2016
[12] DeepFM: A Factorization-Machine based Neural Network for CTR Prediction, IJCAI 2017
[13] Deep & Cross Network for Ad Click Predictions, KDD 2017
[14] Neural Factorization Machines for Sparse Predictive Analytics, SIGIR 2017
[15] Attentional Factorization Machines: Learning theWeight of Feature Interactions via Attention Networks, IJCAI 2017
[16] xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems, KDD 2018
[17] Neural Machine Translation by Jointly Learning to Align and Translate, ICLR 2015
[18] AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks, CIKM 2019
[19] Attention Is All You Need, NIPS 2017
[20] FiBiNET: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction, RecSys 2019
[21] Deep Interest Network for Click-Through Rate Prediction, IJCAL 2017
[22] Deep Interest Evolution Network for Click-Through Rate Prediction, AAAI 2019

更多干货,请关注微信公众号:炼丹笔记

算法大佬看了流泪,为什么这么好的CTR预估总结之前没分享(上篇)

算法大佬看了流泪,为什么这么好的CTR预估总结之前没分享(下篇)

推荐系统CTR预估学习路线:引入注意力机制相关推荐

  1. 推荐系统CTR预估学习路线:深度模型

    推荐系统CTR预估学习路线:从LR到FM/FFM探索二阶特征的高效实现 推荐系统CTR预估学习路线:利用树模型自动化特征工程 推荐系统CTR预估学习路线:深度模型 推荐系统CTR预估学习路线:引入注意 ...

  2. 【NLP】四万字全面详解 | 深度学习中的注意力机制(四,完结篇)

    作者 | 蘑菇先生 知乎 | 蘑菇先生学习记 深度学习Attention小综述系列: 四万字全面详解 | 深度学习中的注意力机制(一) 四万字全面详解 | 深度学习中的注意力机制(二) 四万字全面详解 ...

  3. 【NLP】四万字全面详解 | 深度学习中的注意力机制(三)

    NewBeeNLP原创出品 公众号专栏作者@蘑菇先生 知乎 | 蘑菇先生学习记 深度学习Attenion小综述系列: 四万字全面详解 | 深度学习中的注意力机制(一) 四万字全面详解 | 深度学习中的 ...

  4. 深度学习中的注意力机制(三)

    作者 | 蘑菇先生 来源 | NewBeeNLP原创出品 深度学习Attenion小综述系列: 深度学习中的注意力机制(一) 深度学习中的注意力机制(二) 目前深度学习中热点之一就是注意力机制(Att ...

  5. 【NLP】四万字全面详解 | 深度学习中的注意力机制(二)

    NewBeeNLP原创出品 公众号专栏作者@蘑菇先生 知乎 | 蘑菇先生学习记  前情提要:四万字全面详解 | 深度学习中的注意力机制(一) 目前深度学习中热点之一就是注意力机制(Attention ...

  6. 【NLP】全面详解 | 深度学习中的注意力机制(一)

    NewBeeNLP原创出品 公众号专栏作者@蘑菇先生 知乎 | 蘑菇先生学习记 目前深度学习中热点之一就是注意力机制(Attention Mechanisms).Attention源于人类视觉系统,当 ...

  7. 深度学习中的注意力机制(二)

    作者 | 蘑菇先生 来源 | NewBeeNLP 目前深度学习中热点之一就是注意力机制(Attention Mechanisms).Attention源于人类视觉系统,当人类观察外界事物的时候,一般不 ...

  8. 深度学习中的注意力机制(一)

    作者 | 蘑菇先生 来源 | NewBeeNLP 头图 | CSDN下载自视觉中国 目前深度学习中热点之一就是注意力机制(Attention Mechanisms).Attention源于人类视觉系统 ...

  9. 【推荐论文】基于多视角学习和个性化注意力机制的新闻推荐(附论文下载链接)...

    编者按:个性化新闻推荐是新闻行业必然的发展方向,在其实现过程中面临着三个关键问题,即分析用户兴趣.根据新闻内容建模和新闻排序.本文将这三个问题划归为新闻信息与用户兴趣的多样性问题,并由此出发,提出了基 ...

最新文章

  1. C++ 多线程:互斥对象 lock_gurad
  2. python在线教学-老男孩Python在线教学|学好Python发展如何?
  3. html5 Canvas画图教程(5)—canvas里画曲线之arc方法
  4. 8个直播底层支撑的创业机会,你都抓住了吗?
  5. opencv 图片叠加_OpenCVSharp学习之——ROI与图像叠加
  6. leetcode 769. Max Chunks To Make Sorted | 769. 最多能完成排序的块(Java)
  7. DB2 SQL 递归实现多行合并
  8. [FWT] 时隔一年再回首FWT(快速沃尔什变换),我终于不再是个门外汉
  9. STM32一种基于NTC的控温电路及软件实现
  10. php 下拉菜单 多个值,PHP,而foreach下拉菜单在所有下拉菜单中都具有相同的选定值...
  11. Verilog inout语句使用方法及技巧
  12. C++ 对象没有显式初始化
  13. 根据26字母排列来搜索排列全国城市
  14. Spring Boot(一):概述(5)——Spring Boot项目推荐工程结构
  15. 关于小米路由r3g,TTL刷openwrt救砖几个坑
  16. Hbase Schema设计与数据模型操作
  17. bcc钱包地址生成linux,从Bcc到xdp原理分析
  18. 选购摄像头前必看,摄像头参数科普
  19. [安卓开发]弹幕滚幕效果自定义View之BarrageView|支持点击事件|隐藏不滞留|颜色随机|大小速度范围随机
  20. bootstrap 上传图片插件 file-input 的简单使用

热门文章

  1. 【深度学习】词的向量化表示
  2. 卓越管理的秘密(Behind Closed Doors)
  3. 韦东山驱动视频笔记——3.字符设备驱动程序之poll机制
  4. tomcat - JVM 配置
  5. 过滤html标签 RemoveHTML
  6. 编写自己的Shell解释器-3[转]
  7. python throw_Python 生成器与它的 send,throw,close 方法(转帖以及记录)
  8. 利用函数wavread对语音信号进行采样_语音信号处理相关知识
  9. 计算机视觉与深度学习 | 几种常见的卡尔曼滤波算法理论
  10. 日志库EasyLogging++学习系列(1)—— 简要介绍