早期工作Fi-GNN
《Fi-GNN: Modeling Feature Interactions via Graph Neural Networks for CTR Prediction》CIKM’19
类似session-base RS里的SR-GNN,是GNN最早用在CTR上的模型,所以成了经典baseline。
Motivation
CTR模型的输入由以下几部分组成:用户id、用户特征、用户历史行为、物品id、物品特征。由于模型输入有特征,因此简单的 LR 模型就可以实现CTR任务,但是LR只根据一阶特征进行预测,因此大量的CTR模型都在追求有效的“特征组合”方法,以利用到“高阶特征”。
FM、FFM、Wide&Deep、DCN、xDeepFM等模型都是为了学习高阶特征而设计的,然而作者认为这些特征组合方法是“unstructured combination”的! 为了利用特征之间的结构特性,作者利用GNN来建模特征交互。
因此在这篇文章中是把一个特征field当作一个节点(也可以理解为一个特征是一个节点,因为一个field最后只产出一个embedding),构成一个Feature Graph。比如一条样本:用户id、城市、性别、职业,那么Feature Graph就有这四个节点构成,图上的边表示特征交互。
Method
由Fi-GNN的模型图可以看出,需要重点理解的是红框内的模块,其余模块很好理解。
Feature Graph
Feature Graph是个全连通图,每个特征节点都和其他特征节点都有一条边相连(假设共 m m m 种,文章数据集种分别是23和39),边的权重是由Attention计算出来的。
w ( n i , n j ) = exp ( LeakyRelu ( W w [ e i ∥ e j ] ) ) ∑ k exp ( LeakyRelu ( W w [ e i ∥ e k ] ) ) w\left(n_{i}, n_{j}\right)=\frac{\exp \left(\operatorname{LeakyRelu}\left(\mathrm{W}_{w}\left[\mathrm{e}_{i} \| \mathrm{e}_{j}\right]\right)\right)}{\sum_{k} \exp \left(\operatorname{LeakyRelu}\left(\mathrm{W}_{w}\left[\mathrm{e}_{i} \| \mathrm{e}_{k}\right]\right)\right)} w(ni,nj)=∑kexp(LeakyRelu(Ww[ei∥ek]))