数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- 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
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
九、AFM [2017]
监督学习是机器学习和数据挖掘的基本任务之一。目标是推断出一个函数,该函数可以将给定的预测变量
predictor variables
(又叫做特征)作为输入来预测目标target
。监督学习具有广泛的应用,包括推荐系统、图像识别等等。在对离散
categorical
变量进行监督学习时,重要的是要考虑离散变量之间的交互interactions
。例如,考虑使用三个离散变量预测客户收入的 “玩具” 问题:1 occupation = {banker,engineer,...}2 level = {unior,senior}3 gender = {male,female}
虽然
junior bankers
的收入低于junior engineers
,但是对于senior level
的客户可能正好相反:senior bankers
的收入通常高于senior engineers
。如果机器学习模型假设预测变量之间的独立性,并忽略它们之间的交互,那么模型将无法准确预测。例如线性回归模型为每个特征关联一个权重,并将目标预测为所有特征的加权和。为了利用特征之间的交互,一种常见的解决方案是使用特征的乘积(又叫做交叉特征
cross features
)显式增加特征向量。例如多项式回归polynomial regression
中学习每个交叉特征的权重。然而PR
(以及其它类似的基于交叉特征的解决方案,例如Wide & Deep
中的wide
组件)的关键问题在于,对于稀疏数据集(其中仅仅一小部分交叉特征被观测到)无法估计未观察到unobserved
的交叉特征的参数。为了解决
PR
的泛化问题,人们提出了分解机factorization machine: FM
。FM
将交叉特征的权重参数化为每个特征(构成交叉特征的)的embedding
向量的内积。通过学习每个特征的embedding
向量,FM
可以估计任何交叉特征的权重。由于这种泛化能力,FM
已成功应用于各种application
,从推荐系统到NLP
。尽管前景广阔,但是
AFM
的作者认为FM
可能会因为它对所有特征交互使用相同权重来建模而受到阻碍。在实际应用中,不同的预测变量通常具有不同的预测能力,并且并非所有特征都包含用于估计目标的有用信号。例如,和无用特征的交互甚至可能引入噪声并对性能产生不利影响。因此,应该为不太有用的特征的交互分配较低的权重,因为它们对预测的贡献较小。然而,FM
缺乏区分特征交互重要性的能力,这可能导致次优预测。在论文
《Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks》
中,论文通过区分特征交互的重要性来改进FM
。作者设计了一个叫做注意力分解机Attentional Factorization Machine: AFM
的新模型,它利用了神经网络建模的最新进展(即注意力机制),从而使得不同特征交互对预测有不同的贡献。更重要的是,特征交互的重要性是从数据中自动学习的,无需任何人类领域知识human domain knowledge
。论文对上下文感知预测
context-aware prediction
和个性化tag
推荐的两个公共benchmark
数据集上进行了实验。大量实验结果表明,在FM
上使用注意力机制有两个好处:不仅可以带来更好的性能,而且可以深入了解哪些特征交互对预测的贡献更大。这大大增强了FM
的可解释性interpretability
和透明性transparency
,允许从业人员对模型行为进行更深入的分析。另外,AFM
始终优于state-of-the-art
的深度学习方法Wide & Deep
和Deep-Cross
,并且AFM
结构更简单、模型参数更少。相关工作:
FM
主要用于稀疏setting
下的监督学习,例如在离散变量通过one-hot encoding
转换为稀疏特征向量的情况下。与在图像和音频中发现的连续continuous
的原始特征不同,web
领域的输入特征大多数是不连续discrete
的、离散categorical
的。当使用这类稀疏数据进行预测时,对特征之间的交互进行建模至关重要。与仅对两个实体之间的交互进行建模的矩阵分解
matrix factorization: MF
相比,FM
被设计为通用的machine learner
,用于对任意数量的实体之间的交互进行建模。通过指定specifying
输入特征,论文《Factorization machines》
表明FM
可以模拟很多特定的分解模型,例如标准的MF
、并行因子分析parallel factor analysis
、SVD++
。因此,FM
被认为是稀疏数据预测最有效的线性embedding
方法。已经提出了
FM
的许多变体,如NFM
在神经网络框架下deepen
了FM
从而学习高阶特征交互,FFM
将一个特征关联了多个embedding
向量从而区分不同field
的其它特征的交互。在这项工作中,我们通过区分特征交互的重要性来改进FM
。我们知道有一项与我们方法类似的工作GBFM
,它通过梯度提升选择 “好的” 特征,并且只对好的特征之间的交互进行建模。对于选定特征之间的交互,GBFM
也是像FM
一样以相同的权重对它们求和。因此,GBFM
本质上是一种特征选择算法,它与我们的AFM
有着本质的不同,我们的AFM
可以学习每个特征交互的重要性。另一方面,深度神经网络正在变得越来越流行,并且最近被用于在稀疏
setting
下进行预测。具体而言:Wide & Deep
用于App
推荐,其中Deep
组件是在特征embedding
向量拼接之后的MLP
,从而学习特征交互。DeepCross
用于点击率预估,它用深度残差MLP
来学习交叉特征。
我们指出,在这些方法中,特征交互被深度神经网络隐式地捕获,而不是将每个交互显式建模为两个特征的内积的
FM
。因此,这些深度方法是不可解释的,因为每个特征交互的贡献是未知的。通过使用学习每个特征交互重要性的注意力机制直接扩展FM
,我们的AFM
更具有可解释性,并且实验证明优于Wide & Deep
和DeepCross
的性能。
9.1 模型
9.1.1 FM
作为监督学习的通用机器学习模型,
$ \hat y_\text{FM}\left(\mathbf{\vec x}\right) = \underbrace {w_0 + \sum_{i=1}^n w_i x_i }_{\text{linear regression}}+ \underbrace { \sum_{i=1}^n\sum_{j=i+1}^n\hat w_{i,j}\times x_ix_j}_{\text{pair-wise feature interactions}};\quad \hat w_{i,j} = \mathbf{\vec v}_i^\top\mathbf{\vec v}_j $FM
最初用于协同推荐collaborative recommendation
。给定一个实值特征向量 $ \mathbf{\vec x}\in \mathbb R^n $ ,FM
通过分解交互参数interaction parameters
,从而对每个对特征之间的所有交互进行建模,进而估计目标target
:其中:
$ w_0 $ 为全局
bias
, $ w_i $ 建模第 $ i $ 个特征和target
的交互。$ \hat w_{i,j} =\mathbf{\vec v}_i^\top \mathbf{\vec v}_j $ 表示分解的交互
factorized interaction
,代表交叉特征 $ x_ix_j $ 的权重。其中 $ \mathbf{\vec v}_i\in \mathbb R^k $ 为特征 $ i $ 的embedding
向量, $ k $ 为embedding
向量的维度。注意,由于存在系数 $ x_ix_j $ ,因此只考虑非零特征的交互。
值得注意的是,
FM
以相同的方式对所有特征交互进行建模:- 首先,在估计第 $ i $ 个特征涉及的所有特征交互时共享一个潜在向量 $ \mathbf{\vec v}_i $ 。
- 其次,所有估计的特征交互 $ \hat w_{i,j} $ 都具有统一的权重
1
。
在实践中,一个常见的现象是:并非所有特征都与预测相关。以新闻分类问题为例,考虑新闻 “美国继续在外国支付透明度方面发挥主导作用” 的分类。显然,除了 “对外支付透明度” 之外的单词并不代表新闻主题(即金融主题)。那些涉及不相关特征的交互可以被视为对预测没有贡献的噪声。
然而,
FM
以相同的权重对所有可能的特征交互进行建模,这可能会不利地降低模型的泛化性能。
9.1.2 AFM
下图说明了我们提出的
AFM
模型的神经网络架构。为了清晰起见,我们省略了图中的线性回归部分。输入层和embedding
层与FM
相同,即:输入特征采用稀疏表示,并将每个非零特征嵌入到一个稠密向量中。接下来我们详细介绍了pair-wise
交互层和attention-based
池化层,这是本文的主要贡献。pair-wise
交互层Pair-wise Interaction Layer
:受使用内积对每对特征之间的交互进行建模的FM
的启发,我们在神经网络建模中提出了一个新的Pairwise Interaction Layer
。该layer
将 $ m $ 个向量扩展为 $ m(m-1)/2 $ 个交互向量interacted vector
,其中每个交互向量是一对向量的逐元素乘积从而编码这对向量的交互。形式上,假设特征向量 $ \mathbf{\vec x} $ 中非零元素的索引集合为 $ \mathcal I $ ,那么
$ f_\text{PI}\left(\mathcal E\right) = \left\{\left(\mathbf{\vec v}_i\odot \mathbf{\vec v}_j\right)x_ix_j\right\}_{i\in \mathcal I,j\in \mathcal I, j\gt i} $embedding layer
的输出为 $ \mathcal E = \left\{ \mathbf{\vec v}_ix_i\right\}_{i\in \mathcal I} $ 。然后我们可以将Pairwise Interaction Layer
的输出表示为一组向量:其中: $ \odot $ 表示两个向量之间的逐元素乘积。
通过定制化
$ \hat y = \mathbf{\vec p}^\top \left(\sum_{i\in \mathcal I}\sum_{j\in \mathcal I,j\gt i}\left(\mathbf{\vec v}_i\odot \mathbf{\vec v}_j\right)x_ix_j\right) + b $Pairwise Interaction Layer
,我们可以在神经网络架构下表达FM
。为了证明这一点,我们首先使用sum
池化来压缩 $ f_\text{PI}\left(\mathcal E\right) $ ,然后使用全连接层将其投影到prediction score
上:其中 $ \mathbf{\vec p}\in \mathbb R^k,b\in \mathbb R $ 为
prediction layer
的权重和bias
。显然,当我们固定 $ \mathbf{\vec p} = (1,1,\cdots,1)^\top, b=0 $ ,那么我们准确地恢复了FM
模型。注意,我们在
$ f_\text{BI}\left(\mathcal V_{\mathbf{\vec x}}\right)=\text{sum_pooling}\left(f_\text{PI}\left(\mathcal E\right) \right) = \sum_{i\in \mathcal I}\sum_{j\in \mathcal I,j\gt i}\left(\mathbf{\vec v}_i\odot \mathbf{\vec v}_j\right)x_ix_j\in \mathbb R^k $NFM
中提出的Bi-Interaction
池化操作可以视为在Pairwise Interaction Layer
上使用sum
池化而来。即:
attention-based
池化层Attention-based Pooling Layer
:注意力机制自从引入神经网络建模以来,已被广泛应用于许多任务,例如推荐、信息检索、计算机视觉等等。注意力机制的思想是:在将不同部分压缩为单个representation
时允许不同部分做出不同的贡献。受
$ f_\text{Att}(f_\text{PI}(\mathcal E)) = \sum_{i\in \mathcal I}\sum_{j\in \mathcal I,j\gt i}a_{i,j}\left(\mathbf{\vec v}_i\odot \mathbf{\vec v}_j\right)x_ix_j\in \mathbb R^k $FM
缺点的启发,我们提出通过对交互向量执行加权求和来对特征交互采用注意力机制:其中 $ a_{i,j} $ 是针对特征交互 $ \hat w_{i,j} $ 的
attention score
,可以解释为 $ \hat w_{i,j} $ 在预测目标过程中的重要性。为了估计 $ a_{i,j} $ ,一种直觉的方案是通过最小化预测损失来直接学习它,这在技术上似乎也是可行的。然而问题在于,对于从未在训练数据中同时出现的特征,无法估计它们交互的
attention score
。为了解决这个泛化问题,我们使用多层感知机multi-layer perceptron: MLP
进一步参数化attention score
,我们称之为注意力网络attention network
。注意力网络的输入是交互向量,这个交互向量在
$ a_{i,j}^\prime = \mathbf{\vec h}^\top \text{relu}\left(\mathbf W \left(\mathbf{\vec v}_i\odot \mathbf{\vec v}_j\right) x_i x_j + \mathbf{\vec b}\right)\\ a_{i,j} = \frac{\exp\left(a_{i,j}^\prime\right)}{ \sum_{i^*\in \mathcal I}\sum_{j^*\in \mathcal I,j^*\gt i^*} \exp\left(a_{i^*,j^*}^\prime\right)} $embedding
空间中对两个特征的交互信息进行编码。形式上,注意力网络定义为:其中: $ \mathbf W\in \mathbb R^{t\times k},\mathbf{\vec b}\in \mathbb R^t,\mathbf{\vec h}\in \mathbb R^t $ 都是模型参数。 $ t $ 为
attention network
的隐向量维度,称作attention factor
。attention score
通过softmax
函数进行归一化,这是已有工作的常见做法。我们使用relu
激活函数,实验表明它的性能良好。attention-based
池化层的输出是一个 $ k $ 维向量,它通过区分特征交互的重要性来压缩embedding
空间中的所有特征交互。然后我们将这个 $ k $ 维向量投影到prediction score
。总而言之,我们给出了
$ \hat y_\text{AFM}(\mathbf{\vec x}) = w_0 + \mathbf{\vec w}^\top \mathbf{\vec x} + \mathbf{\vec p}^\top\left(\sum_{i=1}^n\sum_{j=i+1}^n a_{i,j} (\mathbf{\vec v}_i\odot \mathbf{\vec v}_j)x_ix_j\right) $AFM
模型的整体公式为:模型的参数为: $ \mathbf\Theta=\left\{w_0, \mathbf{\vec w},\{\mathbf{\vec v}_i\},\mathbf{\vec p} ,\mathbf W,\mathbf{\vec h},\mathbf{\vec b}\right\} $ 。
当移除
attention network
时,AFM
模型退化为NFM-0
模型,即标准的FM
模型。和NFM
相比,AFM
模型缺少隐层来提取高阶特征交互。
9.1.3 学习
由于
$ \mathcal L = \sum_{(\mathbf{\vec x},y)\in \mathbb D} \left(\hat y(\mathbf{\vec x}) - y \right)^2 $AFM
从数据建模的角度直接增强了FM
,因此它也可以应用于各种预测任务,包括回归、分类、以及ranking
。应该使用不同的目标函数来为不同的任务量身定制AFM
模型学习。对于目标 $ y $ 是实值的回归任务,常见的目标函数是平方损失:其中: $ \mathbb D $ 为训练集, $ \mathbf{\vec x} $ 为样本特征, $ y $ 为样本
label
, $ \hat y(\mathbf{\vec x}) $ 为样本的预测值。对于二分类任务、或者带隐式反馈的推荐任务,我们可以最小化
log loss
。在本文中,我们聚焦于回归任务并优化平方损失。为了优化目标函数,我们采用了随机梯度下降
SGD
。实现SGD
算法的关键是获得预测值 $ \hat y(\mathbf{\vec x}) $ 关于每个参数的导数。由于大多数现代深度学习工具包都提供了自动微分的功能,因此我们这里省略了导数的细节。防止过拟合
overfitting
:过拟合是机器学习模型的永恒问题。结果表明,FM
可能会出现过拟合,因此L2
正则化是防止FM
过拟合的重要手段。由于AFM
比FM
具有更强的表达能力,因此可能更容易过拟合训练数据。这里我们考虑两种在神经网络模型中广泛使用的防止过拟合的技术:dropout
和L2
正则化。dropout
的思想是在训练期间随机丢弃一些神经元。dropout
被证明能够防止神经元对训练数据的复杂的协同适应co-adaptation
。由于
AFM
对特征之间的所有pairwise
交互进行建模,但并非所有交互都是有用的,因此Pair-wise Interaction Layer
的神经元可能很容易协同适应co-adapt
并导致过拟合。因此,我们在Pair-wise Interaction Layer
上应用dropout
来避免协同适应。此外,由于
dropout
在测试期间被禁用并且整个网络用于预测,因此dropout
可以视为使用大量较小的神经网络执行模型平均,这可能会提高性能。对于单层
$ \mathcal L = \sum_{(\mathbf{\vec x},y)\in \mathbb D} \left(\hat y(\mathbf{\vec x}) - y \right)^2 + \lambda \|\mathbf W\|^2 $MLP
的注意力网络组件,我们在权重矩阵 $ \mathbf W $ 上应用L2
正则化从而防止可能的过拟合。也就是说,我们优化的实际目标函数是:其中 $ \lambda $ 控制正则化强度。
我们不在注意力网络上使用
dropout
,因为我们发现在Pair-wise Interaction Layer
和注意力网络上联合使用dropout
会导致一些稳定性问题并降低性能。
9.2 实验
我们进行实验以回答以下问题:
RQ1
:AFM
的关键超参数(即特征交互上的dropout
和注意力网络的正则化)如何影响其性能?RQ2
:注意力网络能否有效地学习特征交互的重要性?RQ3
:和state-of-the-art
的稀疏数据预测方法相比,AFM
的表现如何?
数据集:我们使用两个公开可用的数据集
Frappe
、MovieLens
。Frappe
:给出了不同上下文时用户的app
使用日志记录,一共包含96203
个app
。除了userID, appID
之外,每条日志还包含8
个上下文特征:天气、城市、daytime
(如:早晨、上午、下午) 等。采用
one-hot
编码之后,特征有5382
维。label = 1
表示用户使用了app
。MovieLens
:GroupLens
发布的最新MovieLens
数据集的完整版,包含17045
个用户在23743
个item
上的49657
种不同的tag
。这里我们研究个性化的tag
推荐任务,而不是仅考虑二阶交互的协同过滤。将
userID,movieID,tag
进行one-hot
编码之后,特征有90445
维;label = 1
表示用户给movie
贴了tag
。
由于两个原始数据集都只包含正样本(即所有样本的
label
都是1
),我们为每个正样本随机采样了两个负样本,从而确保预测模型的泛化。- 对于
Frappe
数据集,对每条记录,随机采样每个用户在上下文中未使用的其它两个app
。 - 对于
MovieLens
数据集,对每个用户每个电影的每个tag
,随机分配给该电影其它两个该用户尚未分配的tag
。
每个负样本的
label = -1
。下表给出了最终评估数据集的统计数据。评估指标:我们将数据集随机划分为训练集(
70%
)、验证集(20%
)、测试集(10%
)。验证集用于调优超参数,并在测试集上进行最终的性能比较。为了评估性能,我们采用了均方根误差RMSE
,其中较低的RMSE
得分表示更好的性能。对于模型的预测结果,如果超出了
1
或者-1
的范围,那么我们将结果截断为1
或者-1
。baseline
方法:我们将AFM
和以下设计用于稀疏数据预测的竞争方法进行比较。LibFM
:这是Rendle
发布的FM
的官方实现。我们选择SD learner
与其它所有使用SGD
(或者变体)优化的方法进行公平比较。HOFM
:这是高阶FM
的TensorFlow
实现,如论文《Factorization machines》
所述。我们尝试了三阶,因为MovieLens
数据涉及用户、电影、tag
之间的三元关系。Wide & Deep
:deep
部分首先拼接特征embedding
,然后是MLP
对特征交互进行建模。由于DNN
的结构难以完全调优fully tuned
,我们使用了与原始论文中报道的相同的结构:三层MLP
,隐层维度分别为[1024, 512, 256]
。而wide
组件与FM
的线性回归部分相同。DeepCross
:它在特征embedding
拼接之后应用多层残差网络来学习特征交互。我们使用了原始论文中报道的相同结构:五层残差单元(每层单元有两个子隐层),每个残差单元的维度为[512, 512, 256, 128, 64]
。
配置:
- 所有模型的优化目标为平方损失。
- 除了
LibFM
,所有方法都是通过mini-batch Adagrad
算法学习的,其中:Frappe
数据集的batch size = 128
;MovieLens
数据集的batch size = 4096
。libFM
使用常规SGD
优化。 - 所有方法的
embedding size = 256
。如无特殊说明,则注意力因子也是256
,与embedding size
相同。 - 我们仔细调优了
LibFM
和HOFM
的L2
正则化,以及Wide & Deep
和DeepCross
的droupout rate
。 - 我们根据验证集的性能使用了早停策略。
- 对于
Wide & Deep, DeepCross, AFM
,我们发现FM
预训练初始化feature embedding
会导致比随机初始化更低的RMSE
。因此我们报告了这些模型在预训练初始化时的性能。
9.2.1 RQ1: 超参数研究
首先我们探讨了
dropout
对Pair-wise Interaction Layer
的影响。我们将 $ \lambda = 0 $ 以便在注意力网络上不使用L2
正则化。我们还通过移除AFM
的注意力组件来验证我们实现的FM
的dropout
。下图显示了AFM
和FM
在不同dropout rate
下的验证误差。我们也显示了LibFM
的结果作为benchmark
。可以看到:通过将
dropout rate
设为合适的值,AFM
和FM
都可以得到显著改善。具体而言,对于AFM
,Frappe
和MovieLens
的最佳dropout rate
分别为0.2
和0.5
。这验证了Pair-wise Interaction Layer
上dropout
的有效性,从而提高了FM
和AFM
的泛化能力。我们的
FM
实现提供了比LibFM
更好的性能。原因有两个:- 首先,
LibFM
使用平凡的SGD
进行优化,它对所有参数采用固定的学习率。而我们使用Adagrad
优化FM
,它根据每个参数的频率来调整每个参数的学习率(即,对高频特征的参数进行较小的更新、对低频特征的参数进行较大的更新)。 - 其次,
LibFM
通过L2
正则化防止过拟合,而我们采用dropout
。由于dropout
的模型平均效应,这可以更有效。
- 首先,
AFM
大大优于FM
和LibFM
。即使在不使用dropout
并且在一定程度上存在过拟合问题的情况下,AFM
的性能也明显优于LibFM
和FM
的最佳性能(参考dropout rate = 0
的结果)。这证明了注意力网络在学习特征交互权重方面的好处。
然后我们研究注意力网络上的
L2
正则化是否有利于AFM
。正如前面的实验所验证的那样,dropout rate
被设置为每个数据集的最佳值。下图为验证误差和 $ \lambda $ 的关系。可以看到:
结论:当 $ \lambda \gt 0 $ 时,
AFM
得到了改善。注意,当 $ \lambda = 0 $ 时的结果对应于前面实验中AFM
获得的最佳性能。这意味着仅在Pair-wise Interaction Layer
上应用dropout
不足以防止AFM
过拟合。更重要的是,调优注意力网络可以进一步提高AFM
的泛化能力。注意:
FM
和LibFM
均没有注意力网络,因此它们在图上都是直线。
9.2.2 RQ2: 注意力网络的影响
我们现在聚焦于分析注意力网络对
AFM
的影响。首先要回答的问题是如何选择一个合适的注意力因子?下图显示了AFM
的验证误差和注意力因子的关系。注意,针对每个注意力因子已经独立地调优了 $ \lambda $ 。可以看到:对于这两个数据集,AFM
的性能在所有注意力因子上都相当稳定。具体而言,当注意力因子为1
时,矩阵 $ \mathbf W $ 退化为一个向量,注意力网络本质上退化为一个线性回归模型,以交互向量(即 $ \mathbf{\vec v}_i\odot \mathbf{\vec v}_j $ )作为输入特征。尽管注意力组件的模型容量如此有限,但是AFM
仍然非常强大,并且比FM
有显著改进。这证明了
AFM
设计的合理性,该设计基于交互向量来估计特征交互的重要性score
,这是这项工作的关键发现。下图比较了每个
epoch
的AFM
和FM
的训练误差和测试误差。我们观察到AFM
比FM
收敛得更快。- 在
Frappe
上,AFM
的训练误差和测试误差都远低于FM
,表明AFM
可以更好地拟合数据并导致更准确的预测。 - 在
MovieLens
上,虽然AFM
的训练误差略高于FM
,但是较低的测试误差表明AFM
对未见unseen
的数据的泛化能力更好。
- 在
除了提高性能之外,
AFM
的另一个关键优势是通过每个特征交互的attention score
来得到更好的可解释性。为了证明这一点,我们通过调研MovieLens
上每个特征交互的得分来进行一些微观分析micro-level analysis
。- 我们首先固定 $ a_{i,j} $ 为均匀得分 $ \frac{1}{\sum_{i\in \mathcal I}\sum_{j\in \mathcal I,j\gt i}1} $ ,并训练模型。该模型模拟
simulate
了FM
,因此我们记作FM
。 - 然后我们固定
feature embedding
,仅训练注意力网络。该模型记作FM + A
。模型收敛之后,性能提高了大约3%
,这证明了注意力网络的有效性。
我们从测试集中随机选择
3
个正样本 ,下表中显示了每个特征交互的attention score
(即 $ a_{i,j} $ )和interaction score
(即 $ \hat w_{i,j} $ )。0.33*-1.81
表示attention sore = 0.33
、interaction score = -1.81
(interaction score
可能为负值)。可以看到:在所有三个交互中,
item-tag
交互是最重要的。然而,FM
为所有交互分配相同的重要性得分,导致更大的预测误差。通过使用注意力网络增强FM
(参考FM+A
那一行),item-tag
交互被分配了更高的重要性得分,从而减少了预测误差。- 我们首先固定 $ a_{i,j} $ 为均匀得分 $ \frac{1}{\sum_{i\in \mathcal I}\sum_{j\in \mathcal I,j\gt i}1} $ ,并训练模型。该模型模拟
9.2.3 RQ3: 模型比较
最后我们比较了不同方法在测试集上的性能。下表给出了每种方法在
embedding size = 256
上获得的最佳性能,以及每种方法的可训练参数数量。M
表示百万。首先,我们看到
AFM
在所有方法中取得了最佳性能。具体而言:AFM
通过少于0.1M
的附加参数、以8.6%
的相对提升优于LibFM
。AFM
以4.3%
的相对提升优于第二好的方法Wide & Deep
,同时模型参数少得多。
这证明了
AFM
的有效性。尽管AFM
是一个浅层模型,但是它比深度学习方法实现了更好的性能。其次,
HOFM
优于FM
,这归因于HOFM
对高阶特征交互的建模。然而,略微的提升是基于参数数量几乎翻倍的相当昂贵的代价,因为HOFM
使用一组独立的embedding
来建模每个阶次的特征交互。这指出了未来研究的一个有希望的方向:设计更有效的方法来捕获高阶特征交互。
最后,由于过拟合的严重问题,
DeepCross
表现最差。我们发现,DeepCross
的dropout
效果不佳,这可能是由于它使用了batch normalization
造成的。考虑到DeepCross
是所有比较方法中最深层的方法(在embedding layer
之后叠加了10
层),这表明更深层的学习并不总是有帮助的,因为更深的模型可能会过拟合并且在实践中更难优化。
AFM
和NFM
的工作是正交的,其中NFM
聚焦于建模高阶的、非线性的特征交互的FM
的深层变体,而AFM
将注意力机制引入FM
。未来工作:- 通过在
attention-based
池化层之后堆叠多个非线性层来探索AFM
的深度版本,看看是否可以进一步提高性能。 - 由于
AFM
具有与非零特征数量呈二次关系的、相对较高的复杂度,因此我们将考虑提高学习效率,例如通过使用learning to hash
、或者数据采样技术。 - 另一个有前途的方向是开发用于半监督学习和多视图学习的
FM
变体,例如通过结合广泛使用的图拉普拉斯算子,以及结合协同正则化co-regularization
的设计。 - 最后,我们探索
AFM
为不同application
建模其它类型的数据,如用于问答的文本数据、以及语义更丰富的多媒体内容。
- 通过在
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论