背景及简单介绍
基于深度学习的 CTR 预估模型用处已经很广泛,模型也提出了很多,比如 wide&deep,DCN,DIN 等等。但是许多模型在计算特征交互时用的还是较简单的方法:比如 Hadamard 乘积或者内积,而很少去关注特征的重要性。本文提出了一种新的 CTR 预估被称为 FiBiNET,该模型名是 Feature Importance and Bilinear feature Interaction NETwork 的缩写。一方面,FiBiNET 可通过 Squeeze-Excitation network 动态学习不同特征的重要性权重,因为不同的特征其实对目标预测的重要性是不一样的,比如在一个人的收入时,职业的特征肯定比爱好的特征来的更加重要;另一方面,通过双线性变换函数从更加细粒度的角度高效学习特征的交互。通过结合 DNN,deep FiBiNET 模型在 realworld datasets 上取得了很好的性能。
相关工作
Squeeze-and-Excitation Network(SENet)模块
上图是 SENet 的 Block 单元,图中的 [公式] 是传统的卷积结构,X 和 U 是[公式]的输入(C’H’W’)和输出(CHW),这些都是以往结构中已存在的。SENet 增加的部分是 U 后的结构:对 U 先做一个 Global Average Pooling(图中的 [公式] ,作者称为 Squeeze 过程),输出的 11C 数据再经过两层的全连接(图中的 [公式] ,作者称为 Excitation 过程),最后用 sigmoid(论文中的 self-gating mechanism)限制到[0,1]的范围,把这个值作为 scale 系数乘到 U 的 C 个通道上, 作为下一级的输入数据。这种结构的原理是想通过控制 scale 的大小,把重要的特征增强,不重要的特征减弱,从而让提取的特征指向性更强。
模型结构
Sparse Input and Embedding layer
首先是输入层和 Embedding 层,和常规的 DeepFM,AFM 等模型没什么区别,输出是 [公式] ,其中 f 是特征 fields 的数目, [公式] ,表示第 i 个 field 的 embedding 向量,维度为 k。
SENET Layer
输入是 embedding 层输出的 [公式] ,SENET Layer 输出一个权重向量 [公式] ,每个值都对应一个特征 field。然后将该权重向量与 embedding 层的输出相乘得到: [公式] 。
展开来说,SENET 一共三个步骤:
squeeze step:计算每个 field embedding 的概况统计(summary statistics)。使用 max 或者 mean pool 针对每个 field 得到一个统计向量: [公式] 。其中 mean pool 的效果要好于 max pool,这也很好理解,因为 embedding 提取出来的 k 维度的向量,如果只是取最大的一个值是会损失很多信息的。
Excitation:根据向量 Z 计算每个 field embedding 的权重,使用的是两层 FC:
Re-Weight:将原来的 field embedding 与 Excitation 步骤输出的 A 向量逐元素相乘:
3. Bilinear-Interaction
传统的特征交叉方式广泛采用了内积(fm,ffm 等)和哈达玛积(AFM,NFM 等)。其中内积可被表示为:
哈达玛积可被表示为:[公式] 。而这两种方式在稀疏数据上很难有效对特征交叉进行建模。文章提出结合内积和哈达玛积并引入一个额外的参数矩阵 W 来学习特征交叉。如上图有半部分所示: [公式] 和 W 之间是内积,W 和 [公式] 之间是哈达玛积。
交叉向量 [公式] 可通过三种方式得到:
Field-All Type:这种情况下,所有特征组交叉时共享一个参数矩阵 W,额外参数量为 W 矩阵的大小 k×k。
Field-Each Type:每个特征组 field i 维护一个参数矩阵 Wi,额外参数量为(f-1)kk。
Filed-Interaction Type:每对交互特征[公式] 都有一个参数矩阵 [公式] 。额外参数量为 0.5*(f-1)kk。
最终,交叉层由原始的特征组 embedding 向量 E 以及 SENET 层输出的 embedding 向量 V 分别得到交叉向量 p 和 q。
Combination Layer
组合层将交叉向量 p 和 q 进行拼接操作:
若直接对 c 向量中的元素进行求和并使用一个 sigmoid 函数输出,则得到一个浅层的 CTR 预估模型,若将该向量输入深度神经网络,则得到一个深度 CTR 预估模型。
Deep Network
输入是组合层的输出 c,通过几层的 MLP 转化,最后通过 sigmoid 函数输出 CTR 的预估值 [公式] 。
Output Layer
实验
浅层 FiBiNET
深层 FiBiNET
参考文献:
https://arxiv.org/pdf/1905.09433.pdf
https://blog.csdn.net/u012151283/article/details/95234555
https://zhuanlan.zhihu.com/p/32
本文转载自 Alex-zhai 知乎账号。
原文链接:https://zhuanlan.zhihu.com/p/76698689
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论