©作者 | 汪方野
单位 | 复旦大学
论文标题:
Enhancing CTR Prediction with Context-Aware Feature Representation Learning
收录会议:
SIGIR 2022
论文链接:
https://arxiv.org/abs/2204.08758
简介与主要贡献
目前大多数提升点击率预估效果的模型主要是通过建模特征交互,但是如何设计有效的特征交互结构需要设计人员对数据特点以及结构设计等方面有很强的要求。目前的以建模特征交互为主的模型可以总结为三层范式:embedding layer, feature interaction layer, 以及 prediction layer。大多数论文改进集中在 Featrue interaction layer。
然而大部分的模型都存在一个问题:对于一个相同的特征,他们仅仅学到了一个固定的特征表示,而没有考虑到这个特征在不同实例中不同上下文环境下的重要性。例如实例 1:{female, white, computer, workday} 和实例 2:{female, red, lipstick, workday} 中,特征 “female” 在这两个实例中的重要性(对最后的预测结果的影响或者与其他特征的关系)是不同的,因此在输入特征交互层之前我们就可以调整特征 “female” 的重要性或者是表示。
现有的工作已经注意到了这个问题,例如 IFM、DIFM 等,但是他们仅仅在不同的实例中为相同特征赋予不同的权重(vector-level weights),导致不同实例中的相同特征的表示存在严格的线性关系,而这显然是不太合理的。
另一方面,本文希望一个理想的特征细化模块应该识别重要的跨实例上下文信息,并学习不同上下文下显著不同的表示。
给出了一个例子:{female, red, lipstick, workday} and {female, red, lipstick, weekend},在这两个实例汇总,如果使用self-attention(在 CTR 中很常用的模块,来识别特征之间的关系),那么因为 “female”和“red”以及“lipstick”的关系比“workday”或者“weekend”的更加紧密,所以在两个实例中,都会赋予“red”和“lipstick”更大的注意力权重,而对“workday”或者“weekend”的权重都很小。但是用户的行为会随着“workday”到“weekend”的变化而变化。
因此本文提出了一个模型无关的模块 Feature Refinement Network(FRNet)来学习上下文相关的特征表示,能够使得相同的特征在不同的实例中根据与共现特征的关系以及完整的上下文信息进行调整。主要贡献如下:
- 本文提出了一个名为 FRNet 的新模块,它是第一个通过将原始和互补的特征表示与比特级权值相结合来学习上下文感知特征表示的工作。
- FRNet 可以被认为是许多 CTR 预测方法的基本组成部分,可以插入在 embedding layer 之后,提高 CTR 预测方法的性能。
- FRNet 表现出了极强集兼容性和有效性。
FRNet模块
FRNet模型主要包含两个模块:
- Information Extraction Unit (IEU):IEU 主要是来捕获上下文相关的信息(Self-Attention unit)以及特征之间的关系信息(Contextual Information Extractor)来共同学习上下文相关的信息。再 Integration unit 进行融合。
- Complementary Selection Gate (CSGate):CSGate 可以自适应融合原始的和互补的特征表示,这种融合是在 bit-level 级别上的。
2.1 IEU
通过对以往模型的总结,FRNet 主要通过学习特征间的关系(vector-level)以及上下文相关的信息(bit-level)的信息来学习最后的 context-aware representation。首先在在 IEU 中使用以下两个模块:
- Self-Attention unit:self-attention 善于学习特征之间的关联信息。FRNet 中使用了一个基本的 Self-attention 结构。
- Contextual Information Extractor:在 motivation 部分提到过,self-attention 虽然擅长学习特征之间的关系,但是无法学习整体的上下文信息。所以特地使用了一个简单的 DNN 模块来提取不同实例的上下文信息。一个之间的理由是 DNN 可以关注到所有的特征信息(bit-level 信息)。
以上两个单元分别学习了特征之间的关系,对输入信息进行压缩,保存了特征的上下文信息。接下来通过一个 Integration unit 对这两部分信息进行融合:
可以看到每个实例只有一个上下文信息维度为 d,而经过 self-attention 之后的关系信息维度是 f*d。所以融合之后相当于赋予了每个特征上下文信息,而这部分信息仅仅 self-attention 是无法获取的。
2.2 CSGate
公式主要分为两部分:
- Selected features:首先最后的结果并没有完全舍弃原有的特征表示 E,但是也没有像 ResNet 那样将原始表示 E 直接保留,而是通过权重矩阵进行自适应的选择。
- Complementary features:另一方面,如果仅仅使用原有的特征也会导致模型的表达能力受限。现有的一些方法也仅仅通过分配一个权重的方法来对特征进行调整。同时仅仅分配权重没有考虑哪些 unselected information。在计算权重的时候使用可 sigmoid 方式,如果只使用选择的一部分信息,会导致最后的信息
- “不完整”(这里有点借鉴 GRU 以及 LSTM 的设计思路)。因为我们从互补矩阵 上选择互补的信息。
实验分析
实验数据集:
3.1 整体分析
主要将 FRNet 应用到 FM 模型中说明 FRNet 的效果。
这一部分说明了 FRNet 的效果和效率。
3.2 兼容性分析
将 FRNet 应用到其他模型中查看效果。
和其他模块进行对比。
3.3 超参数分析
对 IEU 模块中的两个超参数进行了分析:
- DNN 的层数
- Self-attention 的 attention size
3.4 消融分析
通过消融实验来说明 FRNet 中的设计都是有效的:
- Learning context-aware feature representations是有效的。这里面所有的变式都对原始的特征进行改进,从而获得了更好的效果(和#1对比)
- Cross-feature relationships and contextual information 是必要的。#2中学习了特征之间的关系,超过了 #1。#13 和 #3 学习了 contextual information,分别超过了 #4 和 #2。
- Assigning weights to original features 是合理的。#5 移除了权重信息,发现 #10 和 #11 超过了 #5。同时 #6 和 #7 超过了 #1 也说明了相同的结论。
- Learning bit-level weights is more effective than learning vector-level。(#7, #9, #11, #13)超过了对应的(#6, #8, #10, #12),前者学习位级别的权重,而后者学习向量级别的权重。
- Complementary Features 也是很关键的. 添加了辅助特征 之后 #10,#11 分别超过了 #6 和 #7。而且 #12 和 #13 分别超过了 #10 和 #11,说明给辅助特征分配权重也是必要的。
3.5 特征表示可视化分析
本文的 context-aware feature representation 总结起来就是一句话:相同的特征在不同的实例下应该有不同的表示,而且不同实例下的表示不应该有严格的线性关系。为了说明这一点,本文通过可视化的方式进行了说明。图中都是同一个特征的原始表示和 1000 个不同实例中经过 FRNet(或者其他模块)之后的表示。
- EGate 无法学习不同的表示;DIFM 学到的表示存在严格的线性关系。而 FRNet 学到的表示同时解决了这些问题。
- #6 也是学习向量级别的权重,但是和 DIFM 比可以看到,使用 IEU 学到的权重可以使得特征空间更加分明。#6 中没有添加辅助特征,所以可以看到还是存在线性关系的,而 FRNet-vec 中添加了辅助特征,消除了线性关系。
- FRNet 是学习 bit-level 的权重,而 FRNet-vec 是学习向量级别的权重,从分区的形状可以看到 FRNet 的非线性特征更加显著,即更加集中。
3.6 IEU可视化分析
前面说到 Self-attention 中存在的问题:在大部分特征都相同的情况下,无法区分某些不重要的特征表示。在这个实验中,选择了两个特征(只有一个特征是不同的,其他特征都相同),在经过 self-attention 之后,获得的表示都是相同的。
但是在经过 CIE(DNN)压缩之后,可以看到仅仅因为这一个特征的不同,最后获得的表示是权重不同的,而这就是 self-attention 无法学习的上下文信息。最后 IEU 将上下文信息融合到 self-attention 中获得了图 8(c)的效果:两个实例中的每一组对应特征都有显著的差别。
3.7 bit-level权重分析