数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
- 线性模型
- 支持向量机
- 朴素贝叶斯
- 决策树
- knn
- 集成学习
- 梯度提升树
- 数据预处理
- 模型评估
- 降维
- 聚类
- 半监督学习
- EM 算法
- 最大熵算法
- 隐马尔可夫模型
- 概率图与条件随机场
- 边际概率推断
- 主题模型
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- CRF ++
- lightgbm
- xgboost
- xgboost 使用指南
- scikit-learn
- spark
- numpy
- matplotlib
- matplotlib 使用指南
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
三十三、AFN [2020]
-
手工制作有用的交叉特征是昂贵的、耗时的,而且结果可能无法泛化到未见过的特征交互。为了解决这个问题,人们提出了
Factorization Machine: FM
,通过将交叉特征的权重参数化为原始特征的embedding
向量的内积从而显式地建模二阶交叉特征。为了更加通用,在最初的工作中还引入了涉及高阶特征组合的高阶FM
(HOFM
)。尽管有卓越的预测能力,但在
FM/HOFM
中仍有两个关键问题需要回答:- 首先,我们应该考虑交叉特征的最大阶次是什么?虽然较大的阶次可以建模更复杂的特征交互,并且似乎是有益的,但交叉特征的数量会随着最高阶次的增加而呈指数级增长,从而导致高的计算复杂度。这限制了高阶交叉特征的实际使用。
- 其次,在最高阶数下有用的交叉特征集合是什么?必须认识到,并非所有的特征都包含针对估计目标的有用信号,不同的交叉特征通常具有不同的预测能力。不相关的特征之间的交互可以被认为是噪音,对预测没有贡献,甚至会降低模型的性能。
AFM
通过用注意力分数来reweighing
每个交叉特征来区分特征交互的重要性。然而,在复杂的特征组合上应用注意力机制会大大增加计算成本。因此,AFM
旨在仅仅建模二阶的特征交互。
在论文
《Adaptive Factorization Network: Learning Adaptive-Order Feature Interactions》
中,作者认为现有的因子分解方法未能适当地回答上述两个问题。通常而言,现有的因子分解方法是按照列举、以及过滤的方式来建模特征交互:首先定义最大阶次,然后枚举最大阶次以内的所有交叉特征,最后通过训练来过滤不相关的交叉特征。这个过程包括两个主要的缺点:- 首先,预设最大阶数(通常较小)限制了模型在寻找有
discriminative
的交叉特征方面的潜力,因为要在表达能力和计算复杂性之间进行trade-off
。 - 其次,考虑所有的交叉特征可能会引入噪音并降低预测性能,因为并非所有无用的交叉特征都能被成功过滤掉。
因此,论文
《Adaptive Factorization Network: Learning Adaptive-Order Feature Interactions》
提出了Adaptive Factorization Network: AFN
,从数据中自适应地学习任意阶次的交叉特征及其权重。其关键思想是:将feature embedding
编码到一个对数空间中,并将特征的幂次转换为乘法。AFN
的核心是一个对数神经转换层logarithmic neural transformation layer
,由多个vector-wise
对数神经元组成。每个对数神经元的目的是:在可能有用的特征组合中,自动学习特征的幂次(即,阶次)。在对数神经转换层上,AFN
应用前馈神经网络来建模element-wise
的特征交互。与FM/HOFM
不同的是,AFN
能够自适应地从数据中学习有用的交叉特征,而且最大阶次可以通过数据自动学到。论文主要贡献:
- 据作者所知,他们是第一个将对数转换结构与神经网络结合起来,从而建模任意阶次的特征交互。
- 基于所提出的对数转换层,作者提出了
AFN
从而从数据中自适应地学习任意阶次的交叉特征及其权重。 - 作者表明:
FM/HOFM
可以被解释为AFN
的两种特例,并且AFN
中学到的阶次允许在不同的交叉特征中rescaling feature embedding
。 - 论文在四个公共数据集上进行了广泛的实验。结果表明:所学的交叉特征的阶次跨度很大;与
SOTA
方法相比,AFN
取得了卓越的预测性能。
33.1 背景
-
Feature Embedding
:遵从传统,我们将每个输入样本表示为一个稀疏的向量:其中:
$ m $ 为feature field
的数量, $ \mathbf{\vec x}_i $ 为第 $ i $ 个feature field
的representation
, $ [\cdot,\cdot] $ 为向量的拼接。-
由于大多数
categorical features
是稀疏的、高维的,一个常见的做法是将它们映射到低维潜空间中的稠密向量(即,embedding
)。具体而言,一个categorical feature
$ \mathbf{\vec x}_i $ 被初始化为一个one-hot encoded vector
,然后计算embedding
向量 $ \mathbf{\vec e}_i $ :其中
$ \mathbf V_i $ 为feature field
$ i $ 的embedding matrix
。 -
对于数值特征
$ \mathbf{\vec x}_j $ ,它的representation
是一个标量 $ x_j $ 。为了捕获数值特征和categorical feature
之间的交互, $ x_j $ 也被转换为同一低维空间中的密集向量:其中:
$ \mathbf{\vec v}_j $ 为field
$ j $ 的embedding vector
(由该field
内的所有特征取值所共享)。
最终我们得到
feature embedding
集合 $ \mathbf{ e} = \left\{\mathbf{\vec e}_1,\mathbf{\vec e}_2,\cdots,\mathbf{\vec e}_m\right\} $ 从而用于FM
或其他模型。 -
-
FM
:FM
显式建模高维数据的二阶特征交互。从公式上看,FM
的预测为:其中
$ <\cdot, \cdot> $ 为内积。直观地,第一项
$ <\mathbf{\vec w}, \mathbf{\vec x}> $ 是原始特征的线性组合,第二项是feature embedding
的pair-wise
内积之和。此外,
Higher-Order Factorization Machine: HOFM
用于捕获高阶的特征交互:其中:
$ n $ 为交叉特征的最大阶次;内积运算被扩展为多个feature embedding
的element-wise
的乘积之和。HOFM
的时间复杂度为 $ O(km^n) $ ,其中 $ k $ 为feature embedding
的维度。由于计算复杂度高,HOFM
很少被应用于真正的工业系统。FM
和HOFM
的一个共同局限性是:它们以相同的权重来建模所有的特征交互。由于并非所有的交叉特征都是有用的,纳入所有的交叉特征进行预测可能会引入噪音并降低模型性能。如前所述,一些方法致力于缓解这一问题:
AFM
利用注意力机制为不同的交叉特征分配非均匀的权重,xDeepFM
只为保留的交叉特征学习权重。然而,这些方法引入了额外的成本,并且在模型训练前仍被限制在一个预设的最大特征交互阶次 $ n $ 。在实践中, $ n $ 通常被设置为一个小值,以使模型大小适中。这样的设计阻碍了寻找具有discriminative
的高阶交叉特征的机会。在本文中,我们建议从数据中自适应地学习任意阶交叉特征。最大阶次和交叉特征集合都将通过模型训练自适应地确定,从而在不牺牲预测能力的前提下实现高计算效率。
-
Logarithmic Neural Network: LNN
:对数神经网络Logarithmic Neural Network
最初是为了近似unbounded
的非线性函数而提出的。LNN
由多个对数神经元组成,其结构如下图所示。从形式上看,一个对数神经元可以表述为:LNN
的理念是将输入转换到对数空间,将乘法转化为加法,除法转化为减法,幂次转化为乘法。尽管多层感知机(multi-layer perceptron: MLP
)是众所周知的通用函数逼近器,但当输入无界时,它们在逼近某些函数如乘法、除法和幂次方面的能力有限。相反,LNN
能够在整个输入范围内很好地逼近这些函数。在本文中,我们利用对数神经元来自适应地学习数据中交叉特征的每个
feature field
的幂次。我们强调LNN
和我们提出的AFN
之间的三个关键区别:-
AFN
学到的幂次被应用到vector-wise level
,并且在相同field
的所有feature embedding
之间共享。 -
我们模型的输入是待学习的
feature embedding
。因此,我们需要使用一些技术来保持梯度稳定,并学习适当的feature embedding
和combination
。 -
在
AFN
中,我们在学到的交叉特征上进一步应用前馈隐层,以增强我们模型的表达能力。AFN
有几个显著的缺点:- 要求
embedding
为正数,这对模型施加了很强的约束。 - 由于大多数
embedding
在零值附近,一个很微小的扰动(如计算精度导致的计算误差)就可能对模型产生影响,因此读者猜测模型难以训练。
- 要求
-
33.2 模型
-
AFN
的整体结构如下图所示。-
Input Layer and Embedding Layer
:AFN
的inpyt layer
同时采用sparse categorical feature
和numerical feature
。如前所述,所有的原始输入特征首先被转换为共享潜在空间的embedding
。这里我们介绍两个实现
embedding layer
的关键技术:-
首先,由于我们将对后续的层中的
feature embedding
进行对数转换,我们需要保持embedding
中的所有数值为正数。如何确保
embedding
中的所有数值都是正的?论文没有说明。此外,embedding
非负,这对模型施加了一个很强的约束。然后,即使采用了非负的embedding
,然后对于接近零的embedding
,它的 “对数--指数” 变换非常敏感,一个很微小的扰动(如计算精度导致的计算误差)就可能对模型产生影响,因此读者猜测模型较难训练。 -
其次,建议在
zero embedding
中加入一个小的正值(如 $ 10^{-7} $ )从而避免数值溢出。
最后,
embedding layer
的输出是positive feature embedding
的一个集合: $ \mathbf{ e} = \left\{\mathbf{\vec e}_1,\mathbf{\vec e}_2,\cdots,\mathbf{\vec e}_m\right\} $ 。 -
-
Logarithmic Transformation Layer
:AFN
的核心是对数转换层logarithmic transformation layer
,它学习交叉特征中每个feature field
的幂(即阶次)。该层由多个vector-wise
的对数神经元组成,第 $ j $ 个vector-wise
对数神经元的输出为:其中:
$ w_{i,j} $ 为第 $ j $ 个神经元在第 $ i $ 个feature field
上的系数; $ \ln(\cdot) $ 和 $ \exp(\cdot) $ 以及幂次 $ (\cdot)^{w_{i,j}} $ 都是element-wise
的; $ \odot $ 为逐元素乘法。对上式的主要观察是:每个对数神经元
$ \mathbf{\vec y}_j $ 的输出能够代表任何交叉特征。例如,当 $ w_{1,j} = w_{2,j} = 1 $ ,而 $ w_{i,j} = 0, \quad 3\le i \le m $ 时,我们有 $ \mathbf{\vec y}_j = \mathbf{\vec e}_1\odot \mathbf{\vec e}_2 $ ,这是前两个原始feature field
的二阶交叉特征。因此,我们可以使用多个对数神经元来获得任意阶次的不同feature combination
作为该层的输出。注意,系数矩阵
$ \mathbf W_\text{LTL}\in \mathbb R^{m\times N} $ 为可学习的参数并且没必要收敛到0
或1
,其中 $ N $ 为该层的对数神经元的数量。 -
Feed-forward Hidden Layers and Prediction
:在对数转换层上,我们堆叠了几个全连接层从而组合所得到的交叉特征。-
我们首先将所有的交叉特征拼接起来作为前馈神经网络的输入:
其中:
$ N $ 为前一层的对数神经元的数量, $ [\cdot,\cdot] $ 表示向量拼接操作。 -
然后我们将
$ \mathbf{\vec z}_0 $ 馈入到 $ L $ 个隐层:其中:
$ \mathbf W_L $ 和 $ \mathbf{\vec b}_L $ 分别表示第 $ L $ 层的权重矩阵和偏置向量。 -
最后,隐层的输出
$ \mathbf{\vec z}_L $ 被转换为最终预测值 $ \hat y $ :其中:
$ \mathbf{\vec w}_p, b_p $ 分别表示prediction layer
的权重向量和偏置。
-
-
-
Optimization
:目标函数针对不同的任务(分类、回归、ranking
)而做出相应的选择。常见的目标函数是对数损失:其中:
$ K $ 为训练样本数量, $ \sigma(\cdot) $ 为sigmoid
函数。我们采用
Adam
优化器进行随机梯度下降。此外,我们对logarithmic transformation
、exponential transformation
和所有隐层的输出进行batch normalization: BN
。有两个原因:- 首先,
feature embedding
$ \mathbf{\vec e} $ 通常被初始化并被优化为接近于零。在对数变换后,embedding
往往涉及大的负值,并有显著的方差,这对后续几层的参数优化是有害的。由于BN
可以缩放并shift
输出为归一化的数值,因此它对AFN
的训练过程至关重要。 - 其次,我们在对数转换层之后采用多层神经网络。对隐层的输出进行
BN
有助于缓解协方差漂移问题,从而导致更快的收敛和更好的模型性能。
- 首先,
-
Ensemble AFN with DNN
:之前的工作(Wide&Deep
、DeepFM
、xDeepFM
)提出将基于交叉特征的模型(如FM
)的预测结果与基于原始特征的神经方法的预测结果进行ensemble
,以提高性能。类似地,我们也可以将AFN
与深度神经网络进行结合。为了执行AFN
和神经网络之间的ensemble
,我们首先分别训练这两个模型。之后,我们建立一个ensemble
模型来结合两个训练好的模型的预测结果:其中:
$ \hat y_\text{AFN}, \hat y_\text{DNN} $ 分别为训练好的AFN
和DNN
的预测结果, $ w_1, w_2 $ 分别为相应的系数, $ b $ 为偏置项。ensemble model
可以通过logloss
损失来进行训练。我们把这个ensemble
模型称为"AFN+"
。我们的
ensemble
方法与DeepFM
使用的方法有些不同:DeepFM
的feature embedding
在FM
和DNN
之间共享,而我们将AFN
和DNN
的embedding layer
分开从而避免干扰。主要的原因是:与DeepFM
不同,AFN
中的embedding value
的分布应该始终保持positive
,这和DNN
中embedding value
的分布相差甚远。众所周知,在
CTR
预测任务中,DNN
模型的参数主要集中在embedding table
。这里用到了两套embedding table
,模型参数翻倍。根据我们的实验,这种分离方法略微增加了模型的复杂性,但会带来更好的性能。
-
讨论:
-
理解
AFN
中的阶次:AFN
通过对数转换层学习交叉特征中每个特征的阶次。由于对数转换层的权重矩阵 $ \mathbf W_\text{LTL} $ 没有限制,学到的特征阶次可以是小数或负值。为了理解AFN
学到的特征阶次,我们借鉴了field-aware factorization machine: FFM
的一些思想。在
FFM
中,每个特征都关联 $ m $ 个feature embedding
,其中 $ m $ 是feature field
的数量。FFM
与FM
的区别在于,每个特征在与不同field
的其它特征进行交互时采用不同的embedding
。FFM
的启示是:要避免不同field
的特征空间之间的干扰。 在AFN
中,每个特征的阶次可以被看作是相应feature embedding
的一个比例因子。例如,考虑一个取值从0
到1
之间的embedding
,大于1
的阶次会缩小embedding
值,而小于1
的阶次则扩大embedding
值。通过与FFM
的类比,当与不同field
的其它特征进行交互时,可以利用AFN
学到的阶次来rescale feature embedding
。 -
与
FM
和HOFM
的关系:我们首先表明,FM
可以被看作是AFN
的一个特例。根据公式 $ \mathbf{\vec y}_j = \exp\left(\sum_{i=1}^m w_{i,j} \ln \mathbf{\vec e}_i\right) = \mathbf{\vec e}_1^{w_{1,j}}\odot \mathbf{\vec e}_2^{w_{2,j}}\odot\cdots\odot \mathbf{\vec e}_m^{w_{m,j}} $ ,通过适当设置每个feature embedding
的幂次 $ w_{i,j} $ ,对数神经元的输出 $ \mathbf{\vec y}_j $ 能够表示任何二阶交叉特征。假设我们有足够多的对数神经元来产生所有的二阶交叉特征,并且后续的隐层在element-level
上近似于一个简单的sum
函数,那么AFN
可以准确地恢复FM
。类似地,当我们有足够多的对数神经元来提供最大阶次内的所有交叉特征,并允许隐层近似
sum
函数时,AFN
能够恢复HOFM
。 -
时间复杂度:令
$ k $ 和 $ m $ 分别表示feature embedding
维度和feature field
数量。在AFN
中,对数神经元可以在 $ O(km) $ 时间内计算出来。假设有 $ N $ 个对数神经元,则对数变换层的计算复杂度为 $ O(kmN) $ 。考虑到隐层的额外成本,AFN
的总时间复杂度是 $ O(kmN + n_W) $ ,其中 $ n_W $ 是隐层的权重总数。至于
HOFM
,假设 $ n $ 是预先定义的特征组合的最大阶次,它需要 $ O(km^n) $ 时间来提供预测,通过动态编程可以减少到 $ O(kmn^2) $ 。注意,HOFM
的时间复杂度与交叉特征的最大阶次 $ n $ 高度相关,而在AFN
中,由于其自适应的交叉特征生成方式, $ N $ 和 $ n_W $ 都仅由模型结构决定。根据经验,在最佳设置下,训练AFN
的时间成本与CIN
接近。
-
33.3 实验
-
数据集:
Criteo
:包含13
个数值特征和26
个categorical feature
。Avazu
:包含22
个feature field
,包括用户特征和广告属性。Movielens
:我们将每个tagging record
((user ID, movie ID, tag)
三元组)转换为一个特征向量来作为输入。target
为:用户是否为电影分配了一个特定的tag
。Frappe
:我们将每条日志(user ID, app ID, context features
)转换为一个特征向量来作为输入。target
为:用户是否在上下文中使用过该app
。
所有数据集的统计信息如下表所示。
-
评估指标:
AUC, Logloss
。 -
baseline
方法:- 一阶方法(对原始特征进行线性相加):
Linear Regression: LR
。 - 考虑二阶交叉特征的
FM-based
方法:FM
、AFM
。 - 建模高阶特征交互的高级方法:
HOFM
、NFM
、PNN
、CrossNet
、CIN
。 - 涉及
DNN
作为组件的ensemble
方法:Wide&Deep
(为公平比较,我们省略了手工制作的交叉特征),DeepFM
、Deep&Cross
、xDeepFM
。
- 一阶方法(对原始特征进行线性相加):
-
实现细节:
- 使用
Tensorflow
实现、采用Adam
优化器、学习率0.001
、mini-batch size = 4096
。 - 对于
Criteo/Avazu/Movielens/Frappe
数据集,默认的对数神经元数量 $ N $ 分别被设置为1500/1200/800/600
。 AFN
中默认使用3
个隐层、每层400
个神经元。- 为了避免过拟合,根据验证集的
AUC
进行early-stopping
。 - 在所有的模型中,我们将
feature embedding
的维度设置为10
。 - 我们对所有涉及
DNN
的方法使用相同的神经网络结构(即3
层:400-400-400
)以进行公平的比较。 HOFM
的最高阶次设为3
。- 所有其他的超参数都是在验证集上调优的。
- 对于每个经验结果,我们运行实验
3
次并报告平均值。
- 使用
-
单模型的比较:单模型的比较如下表所示。可以看到:
-
AFN
在所有的数据集上产生了最好的或有竞争力的性能。- 对于
Criteo
和Frappe
,AFN
比第二好的模型CIN
要好得多。 - 对于
Movielens
,AFN
取得了第二好的性能。 - 对于
Avazu
,AFN
取得了最好的logloss
,而AUC
适中。
关于较简单的模型在
Movielens
和Avazu
上的良好表现,我们猜测这两个数据集的预测更多依赖于低阶交叉特征,AFN
的优势因此受到限制。请注意,Movielens
只包含三个feature field
,找到有用的高阶交叉特征的好处可能是微不足道的。 - 对于
-
AFN
在所有数据集上的表现一直优于FM
和HOFM
,这验证了学习自适应阶次的交叉特征比建模固定阶次的交叉特征可以带来更好的预测性能。 -
利用高阶交叉特征的模型通常优于基于低阶交叉特征的模型,特别是当
feature field
的数量很大时。这与高阶特征交互具有更强的预测能力的直觉是一致的。
AFN
并没有在所有数据集上展示出显著的提升。ensemble
模型的比较:ensemble
模型的比较如下表所示。可以看到:-
AFN+
在四个数据集上取得了最佳性能。平均而言,AFN
相比xDeepFM
,在AUC
和logloss
上分别取得了0.003
和0.012
的改善。这表明,
AFN
学到的自适应阶次的交叉特征与DNN
建模的隐式特征交互有很大不同,因此在结合两种不同类型的特征交互进行预测时,性能增益显著提高。
-
-
超参数研究:我们只提供
Frappe
的结果,因为其他三个数据集的结果是相似的。-
对数神经元的数量:如下图
(a)
所示:- 当神经元的数量变大时,
AFN
的性能呈现上升趋势,随后是下降趋势。这表明应该采用适当数量的对数神经元,在表达能力和泛化之间做出权衡,以达到最佳性能。 - 令人惊讶的是,即使对数神经元的数量少于
5
个,AFN
的优势也很稳定。这一结果表明,找到少量的discriminative
交叉特征对预测的准确性至关重要,而AFN
对于找到这些关键的交叉特征是有效的。
- 当神经元的数量变大时,
-
隐层深度:如下图
(b)
所示:- 在学到的自适应阶次的交叉特征上堆叠隐层有利于提高模型性能。
- 值得注意的是,
AFN
的性能并不高度依赖于隐层的数量。当深度被设置为0
时,AFN
仍然可以取得相当好的结果。这证明了对数转换层在学习discriminative
交叉特征方面的有效性。
-
隐层神经元数量:如下图
(c)
所示:AFN
的性能首先随着神经元数量的增加而增长。这是因为更多的参数给模型带来了更好的表达能力。- 当隐层的神经元数量超过
600
时,性能开始下降,这是由于过拟合导致的。
-
-
学到的阶次:下图显示了在
Criteo
数据集上整个训练过程中特征阶次的变化。-
从下图
(a)
可以看到:各个feature field
的阶次通常以0
为中心,在[-1,1]
的范围内。这与典型的factorization-based
的方法截然不同,在这种方法中,每个特征的阶次要么为0
、要么为1
。学到的特征阶次的relaxation
允许原始feature embedding
在组成不同的交叉特征时被rescale
。 -
下图
(b)
给出了交叉特征的阶次的分布,其中交叉特征的阶次是组成它的各个特征的阶次的绝对值之和来计算的。可以看到:在训练过程中,学到的交叉特征的阶次被逐渐优化。最终的交叉特征阶次分布在一个很宽的范围内(从
4
到10
),而不是像许多factorization-based
方法那样被固定在一个预定义的值上(例如2
)。
-
-
案例研究:我们对
Frappe
数据集进行了案例研究。为了说明问题,我们将对数神经元的数量限制为3
个。Figure 4(c)
提供了每个神经元上单个特征阶次的绝对值和总和。从图中,我们可以大致推断出,三个交叉特征
(item id, is free, country), (user id, item id), (item id, is free)
在各自的对数神经元中被学习。此外,通过
sum
三个神经元的特征阶次,发现最discriminative
的feature field
是item id, is free, user id
。这是合理的,因为user id
和item id
是协同过滤中最常用的特征;而is free
表示用户是否为mobile app
付费,是用户对app
偏好的一个有力指标。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论