数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
三、PNN [2016]
学习和预测用户响应
response
在信息检索information retrieval: IR
的许多个性化任务中起到至关重要的作用,例如推荐系统、web
搜索、在线广告。用户响应预测的目标是估计用户positive response
(如点击、购买等)的概率。这个预测的概率表示用户对特定item
(如新闻文章、电商的商品等)的兴趣,并影响后续决策,例如document ranking
、广告出价等等。这些
$ \underbrace{[0,1,0,0,0,0,0]}_{\text{Weekday = Tuesday}}\quad\underbrace{[0,1]}_{\text{Gender = Male}}\quad\underbrace{[0,0,1,0,\cdots,0,0]}_{\text{City=London}} $IR
任务中的数据集大多数采用multi-field
的离散categorical
形式,例如[Weekday=Tuesday, Gender=Male, City=London]
。通常通过one-hot
编码将这种形式的特征转换为高维稀疏二元特征。例如包含上述三个field
的特征向量被one-hot
编码为:许多机器学习模型,包括线性逻辑回归
logistic regression: LR
、非线性梯度提升决策树gradient boosting decision tree: GBDT
、分解机factorization machine: FM
等等,已经被提出来用于处理此类高维稀疏二元特征并产生高质量的用户响应预测。然而,这些模型高度依赖于特征工程来捕获高阶high-order
潜在模式latent pattern
。因此面对极端的稀疏性,传统模型可能会受限于从数据中挖掘浅层模式的能力。最近,深度神经网络
DNN
在分类和回归任务中表现出强大的能力,包括计算机视觉、语音识别、自然语言处理。在用户响应预测中采用DNN
很有前景,因为DNN
可以自动学习更具有表达性expressive
的特征并提供更好的预测性能。但是面对高维输入的场景,DNN
模型的参数规模巨大导致难以应用。为了改善
multi-field
离散数据交互,《Deep learning over multi-field categorical data: A case study on user response prediction》
提出了一种基于FM
预训练的embedding
方法。该方法基于拼接的embedding
向量,并构建了多层感知机MLP
来探索特征交互feature interaction
。然而,
embedding
初始化的质量在很大程度上受限于FM
。更重要的是,感知机layer
的add
操作可能无法用于探索multi-field
中离散数据的交互。先前的工作表明,可以通过特征向量product
操作而不是add
操作来有效地探索来自不同field
的特征之间的局部依赖关系。为了利用神经网络的学习能力,并以比
MLP
更有效的方式挖掘数据的潜在模式,论文《Product-based Neural Networks for User Response Prediction》
提出了Product-based Neural Network: PNN
,它具有以下特点:- 使用没有预训练的
embedding
层。 - 基于
embedding
的特征向量构建一个product layer
,从而建模inter-field
特征交互。 - 使用全连接的
MLP
进一步提取高阶特征模式。
论文出了两种类型的
PNN
,分别在product layer
执行内积inner product
操作(即IPNN
)和外积outer product
操作(即OPNN
),从而有效地对交互模式进行建模。论文以在线广告的
CTR
预估为例,探讨PNN
模型的学习能力。在两个大规模真实世界数据集上的大量实验结果表明:PNN
模型在各种指标上始终优于state-of-the-art
的用户响应预测模式。- 使用没有预训练的
相关工作:响应预测
response prediction
问题通常被表述为基于最大似然或交叉熵的二分类问题。从建模的角度来看,线性逻辑回归
logistic regression: LR
、非线性梯度提升决策树gradient boosting decision tree: GBDT
、非线性因子分解机factorization machine: FM
在工业application
中得到广泛应用。然而,这些模型在挖掘高阶潜在模式或学习高质量特征representation
方面受到限制。深度学习能够探索高阶潜在模式
high-order latent pattern
以及泛化的、有表达力的数据representation
。DNN
的输入通常是稠密实值向量,而multi-field
离散categorical
数据的解决方案尚未得到很好的研究。《Deep learning over multi-field categorical data: A case study on user response prediction》
中提出了Factorization-machine supported neural network: FNN
,它通过预训练的FM
学习离散数据的embedding
向量。《A convolutional click prediction model》
中提出了Convolutional Click Prediction Model: CCPM
来预测广告点击。然而在CCPM
中,卷积仅在某种对齐alignment
的相邻fields
上执行,无法对非相邻fields
之间的完整交互进行建模。《Sequential click prediction for sponsored search with recurrent neural networks》
利用RNN
将用户queries
建模为一系列用户上下文,从而预测广告点击行为。《Training product unit neural networks》
提出了Product unit neural network: PUNN
来构建输入的高阶组合。然而,PUNN
既不能学习局部依赖local dependency
,也无法产生有界的输出bounded output
从而适应响应率response rate
(即点击率)。
在本文中,我们展示了我们的
PNN
模型学习局部依赖和高阶特征交互的方式。
3.1 模型
我们以在线广告的
CTR
预估为例来描述我们的模型,并探索该模型在各种指标上的表现。CTR
预估任务是构建一个预估模型从而估计用户在给定上下文中点击特定广告的概率。每个数据样本由
multi-field
的离散数据组成,例如用户信息(性别、城市等)、广告信息(广告ID
、广告类目ID
)、上下文信息(曝光时刻等)。所有信息都表示为一个multi-field categorical
特征向量,其中每个field
(例如城市)都是one-hot
编码的,如前所述。这种
field-wise
的one-hot
编码会导致维数灾难和巨大的稀疏性。此外,field
之间存在局部依赖性local dependency
和层级结构hierarchical structure
。因此,我们正在寻求一种DNN
模型来捕获multi-field
离散数据中的高阶潜在模式。我们提出的
product layer
的想法来自自动探索特征交互。在FM
中,特征交互被定义为两个特征向量的内积。因此,我们提出了Productbased Neural Network: PNN
模型。接下来我们详细介绍PNN
模型并讨论该模型的两种变体,即Inner Product-based Neural Network: IPNN
(采用inner product layer
)、Outer Product-based Neural Network : OPNN
(采用outer product layer
)。PNN
模型的架构如下图所示。假设one-hot
向量为 $ \mathbf{\vec x}\in \mathbb R^n $ 包含 $ F $ 个field
,field i
在向量中的起始位置为 $ s_i $ 、终止位置为 $ e_i $ (包含),即 $ \mathbf x[s_i:e_i] $ 。其中 $ n=e_F-s_1 $ 。每个field
生成一个embedding
向量,即field i
生成 $ \mathbf{\vec f}_i = \left(f_1^{(i)},f_2^{(i)},\cdots,f_K^{(i)}\right)^\top \in \mathbb R^{K} $ 。模型包含以下几层:
第
0
层输入层:categorical
特征经过one-hot
编码之后作为输入。第
1
层embedding
层:模型从每个field
中学得各field
的embedding
表示。输入位置 $ s_i \sim e_i $ 仅仅与 $ \mathbf{\vec f}_i $ 相连,即局部连接: $ \mathbf{\vec f}_i = \mathbf W_0^{(i)} \mathbf x[s_i:e_i] $ ,其中 $ \mathbf W_0^{(i)} \in \mathbb R^{K\times (e_i-s_i+1)} $ 为映射参数。
第
$ \mathbf Z = \left[\mathbf{\vec f}_1,\cdots,\mathbf{\vec f}_F\right]\in \mathbb R^{K\times F}\\ \mathbf P = \{p_{i,j}\}=\left\{g\left(\mathbf{\vec f}_i,\mathbf{\vec f}_j\right)\right\},\quad i=1,\cdots,F;j=1,\cdots,F $2
层product
层:由embedding
特征的一阶特征和二阶交互特征拼接而成。其中 $ \mathbf Z $ 表示一阶特征, $ \mathbf P $ 表示二阶特征。为统一生成方式, $ \mathbf Z $ 由常数1
和一阶特征进行交互而生成。其中 $ g(\cdot,\cdot) $ 表示成对特征交互。当定义不同的 $ g $ 函数时,就定义了不同的
PNN
实现。
$ h_z^{(i)} = \mathbf W_z^{(i)}\odot \mathbf Z,\quad h_p^{(i)} = \mathbf W_p^{(i)}\odot \mathbf P\\ \mathbf{\vec h}_z = \left(h_z^{(1)},h_z^{(2)},\cdots,h_z^{(d_2)}\right)^\top\\ \mathbf{\vec h}_p = \left(h_p^{(1)},h_p^{(2)},\cdots,h_p^{(d_2)}\right)^T\\ \mathbf{\vec h}_{2} = \text{relu}\left(\mathbf{\vec h}_z + \mathbf{\vec h}_p + \mathbf{\vec b}_1\right) $product
层的输出为:其中:
- $ \odot $ 表示张量的内积,定义为: $ \mathbf A\odot \mathbf B = \sum_{i,j}A_{i,j}\times B_{i,j}\in \mathbb R $ 。
- $ \mathbf W_z^{(i)}\in \mathbb R^{K\times F},\mathbf W_p^{(i)}\in \mathbb R^{F\times F} $ 类似于
CNN
的卷积核,它们在整个输入上进行张量内积。 $ i $ 表示第 $ i $ 个卷积核,一共有 $ d_2 $ 个卷积核。
第
$ \mathbf{\vec h}_{3} = \text{relu}\left(\mathbf W_2 \mathbf{\vec h}_2+\mathbf{\vec b}_2\right)\in \mathbb R^{d_3}\\ \vdots\\ \mathbf{\vec h}_{L} = \text{relu}\left(\mathbf W_{L-1} \mathbf{\vec h}_{L-1}+\mathbf{\vec b}_{L-1}\right)\in \mathbb R $3
层到第 $ L $ 层:全连接层。最后一层:
$ \hat y = \text{sigmoid}(h_L) $sigmoid
输出层。
模型的损失函数为
$ \mathcal L(y,\hat y) = -y\times \log \hat y - (1-y)\times \log(1-\hat y) $logloss
:
3.1.1 IPNN
$ p_{i,j} = g\left(\mathbf{\vec f}_i,\mathbf{\vec f}_j\right) = \mathbf{\vec f}_i\cdot\mathbf{\vec f}_j $Inner Product-based neural network: IPNN
:IPNN
的特征交互函数为:则有:
$ h_z^{(i)} = \mathbf W_z^{(i)}\odot \mathbf Z =\sum_{t=1}^F\sum_{s=1}^K \left(W_z^{(i)}\right)_{t,s}\times z_{t,s}=\sum_{t=1}^F\sum_{s=1}^K \left(W_z^{(i)}\right)_{t,s}\times f_{t,s}\\ h_p^{(i)} = \mathbf W_p^{(i)}\odot \mathbf P = \sum_{t=1}^F\sum_{s=1}^F\left(W_p^{(i)}\right)_{t,s}\times p_{t,s} = \sum_{t=1}^F\sum_{s=1}^F \left(W_p^{(i)}\right)_{t,s}\times \mathbf{\vec f}_t\cdot \mathbf{\vec f}_s $则计算 $ \mathbf{\vec h}_2 $ 的复杂度为:
- 空间复杂度: $ O(d_2F\times (K+F)) $ 。它们分别是计存储 $ \mathbf W_z,\mathbf W_p $ 的空间需求。
- 时间复杂度: $ O(F^2d_2+FKd_2) $ 。其中 $ \left\{ \mathbf{\vec f}_t\cdot \mathbf{\vec f}_s\right\}_{t,s} $ 可以预先计算好,其计算复杂度为 $ O(F^2d_2) $ 。
为降低复杂度,可以将 $ \mathbf W_p^{(i)} $ 分解为 $ \mathbf W_p^{(i)} = \vec\theta^{(i)} \left(\vec\theta^{(i)} \right)^\top $ ,其中 $ \vec\theta^{(i)} = \left(\theta^{(i)}_1,\cdots,\theta^{(i)}_F\right)^\top\in \mathbb R^F $ 。则有:
$ h_p^{(i)} = \mathbf W_p^{(i)}\odot \mathbf P = \sum_{t=1}^F\sum_{s=1}^F \left(W_p^{(i)}\right)_{t,s}\times\mathbf{\vec f}_t\cdot\mathbf{\vec f}_s\\ = \sum_{t=1}^F\sum_{s=1}^F \theta^{(i)}_t\theta^{(i)}_s\times\mathbf{\vec f}_t\cdot\mathbf{\vec f}_s = \left( \sum_{s=1}^F \vec\delta_s^{(i)}\right)\cdot \left( \sum_{s=1}^F \vec\delta_s^{(i)}\right) $其中 $ \vec\delta_s^{(i)} = \theta_s^{(i)} \mathbf{\vec f}_s \in \mathbb R^K $ 。
则有:
$ \mathbf{\vec h}_p = \left(\left\|\sum_{s=1}^F \vec\delta_s^{(1)}\right\|^2,\cdots,\left\|\sum_{s=1}^F \vec\delta_{s}^{(d_2)}\right\|^2\right)^\top $则计算 $ \mathbf{\vec h}_2 $ 的复杂度为:空间复杂度 $ O(d_2FK) $ ,时间复杂度 $ O(d_2FK) $ 。
$ \mathbf W_p^{(i)} = \vec\theta^{(i)} \left(\vec\theta^{(i)} \right)^\top $ 仅仅是一阶分解,实际上可以进行更加通用的 $ M $ 阶分解:
$ h_p^{(i)} = \mathbf W_p^{(i)}\odot \mathbf P = \sum_{t=1}^F\sum_{s=1}^F \left(W_p^{(i)}\right)_{t,s}\times\mathbf{\vec f}_t\cdot\mathbf{\vec f}_s\\ = \sum_{t=1}^F\sum_{s=1}^F \left(\vec \theta^{(i)}_t\cdot\vec \theta^{(i)}_s\right)\times\mathbf{\vec f}_t\cdot\mathbf{\vec f}_s = \left( \sum_{s=1}^F \vec\delta_s^{(i)}\right)\cdot \left( \sum_{s=1}^F \vec\delta_s^{(i)}\right) $其中 $ \vec\theta_s^{(i)} \in \mathbb R^M $ 。此时有:
$ \mathbf W_p^{(i)} =\mathbf\Theta^{(i)}\left(\mathbf\Theta^{(i)}\right)^{\top},\quad \mathbf \Theta ^{(i)} = \begin{bmatrix} \left(\vec\theta_1^{(i)}\right)^\top\\ \vdots\\ \left(\vec\theta_F^{(i)}\right)^\top \end{bmatrix}\in \mathbb R^{F\times M} $这种分解的代价更高,同时约束更弱。
3.1.2 OPNN
给定两个输入向量,向量内积输出一个标量,而向量外积输出一个矩阵。
$ p_{i,j} = g\left(\mathbf{\vec f}_i,\mathbf{\vec f}_j\right) = \mathbf{\vec f}_i \mathbf{\vec f}_j ^\top\in \mathbb R^{K\times K} $Outer Product-based neural network: OPNN
利用了向量外积,它和IPNN
的唯一区别在于特征交互函数 $ g(\cdot,\cdot) $ 。在OPNN
中,特征交互函数为:与内积产生标量不同,这里的外积产生一个矩阵。则 $ \mathbf P \in \mathbb R^{F\times F\times K\times K}, \mathbf W_p^{(i)} \in \mathbb R^{F\times F\times K\times K} $ 。
计算 $ \mathbf{\vec h}_2 $ 的复杂度为:
- 空间复杂度: $ O(d_2\times F^2\times K^2) $ 。它完全由 $ \mathbf W_p $ 主导。
- 时间复杂度: $ O(d_2\times F^2\times K^2) $ 。它完全由 $ \mathbf{\vec h}_p $ 主导。
为降低复杂度,定义:
$ \mathbf P = \sum_{i=1}^F\sum_{j=1}^F \mathbf{\vec f}_i \mathbf{\vec f}_j ^\top = \mathbf{\vec f}_\Sigma \mathbf{\vec f}_\Sigma ^\top \in \mathbb R^{K\times K}\\ \mathbf{\vec f}_\Sigma = \sum_{i=1}^F \mathbf{\vec f}_i \in \mathbb R^K $此时 $ \mathbf W_p^{(i)} \in \mathbb R^{ K\times K} $ 。
则计算 $ \mathbf{\vec h}_2 $ 的复杂度为:空间复杂度 $ O(d_2K\times (F+K)) $ ,它们分别是计存储 $ \mathbf W_z,\mathbf W_p $ 的空间需求;时间复杂度: $ O(d_2 K\times (K+F)) $ 。
3.1.3 讨论
和
FNN
相比,PNN
有一个product layer
。如果移除product layer
中的 $ \mathbf{\vec h}_p $ 部分时,FNN
和PNN
完全相同。IPNN
和FM
模型非常相似。FM
模型将抽取的一阶、二阶特征直接送入分类器。IPMM
模型将抽取的一阶、二阶特征,首先使用类似CNN
的 “核函数” (由 $ \mathbf W_z,\mathbf W_p $ 给出)抽取 $ d_2 $ 个特征,然后将抽取后的特征送入DNN
。
PNN
使用product layer
来探索特征交互。向量的product
可以视为一系列的 “乘法&加法” 操作,内积和外积只是两种不同的实现。事实上可以定义更通用或者更复杂的
product layer
,从而获得PNN
更好的探索特征交互的能力。类似于电子电路,乘法相当于
AND
、加法相当于OR
。product layer
似乎学习特征以外的规则。因此我们相信在神经网络中引入product
运算将提高网络对multi-field
离散数据建模的能力。
3.2 实验
数据集:
Criteo
:Criteo 1TB
点击日志是著名的广告技术工业benchmark
数据集。我们选择连续7
天的样本进行训练,第8
天的数据进行评估。由于数据规模巨大,因此我们对数据集进行负降采样。我们将降采样比例定为 $ w $ ,将预估的
CTR
定义为 $ p $ ,重新校准的CTR
$ q $ 为: $ q = p/(0+ \frac{1-p}{w}) $ 。经过降采样和特征映射之后,我们得到一个数据集,其中包含
7938
万个样本,特征维度为164
万维。iPinYou
:iPinYou
数据集是另一个真实世界数据集,记录了超过10
天的广告点击日志。经过one-hot
编码之后,我们得到一个包含1950
万个样本的数据集,特征维度为937.67K
。我们保留原始的训练/测试拆分方案:对于每个广告主,最后
3
天的数据用作测试集,其余的数据用作训练集。
baseline
方法:LR
:LR
是工业中使用最广泛的线性模型,它易于实现且训练速度快,但是无法捕获非线性信息。FM
:FM
在推荐系统和用户响应预测任务中有很多成功的应用。FM
探索特征交互,这对稀疏数据很有效。FNN
:FNN
能够捕获multi-field
离散数据的高阶潜在模式。CCPM
:CCPM
是一种用于点击预估的卷积模型。该模型有效地学习local-global
特征。然而,CCPM
高度依赖特征对齐feature alignment
,并且缺乏解释。IPNN
:采用内积的PNN
。OPNN
:采用外积的PNN
。PNN*
:该模型的product layer
是IPNN product layer
和OPNN product layer
的拼接。
模型配置:
所有方法都是基于
TensorFlow
实现,并采样随机梯度下降SGD
来训练。在
FM
中,我们采用10
维的分解。相应地,我们在网络模型中采用10
维的embedding
。网络结构:
CCPM
有1
个embedding
层、2
个卷积层(具有最大池化)、1
个隐层,一共4
层。FNN
有1
个embedding
层、3
个隐层,一共4
层。- 每种
PNN
都有1
个embedding
层、1
个product layer
、3
个隐层,一共5
层。
为了防止过拟合,
LR
和FM
模型使用L2
正则化训练,而FNN, CCPM, PNN
使用dropout
训练。默认情况下,我们设置
dropout rate = 0.5
。下图给出了Criteo
数据集上OPNN
模型的AUC
随着dropout rate
变化的曲线。
评估指标:我们采用评估指标为
AUC
和相对信息增益Relative Information Gain: RIG
。其中,RIG
定义为: $ \text{RIG = 1- NE} $ ,NE
为归一化的交叉熵。此外,我们还使用
LogLoss
和RMSE
作为额外的评估指标。
3.2.1 模型对比
不同模型在这两个数据集上的实验结果如下表所示。首先我们关注
AUC
性能,表I
和表II
的结果表明:FM
优于LR
,证明了特征交互的有效性。- 神经网络优于
LR
和FM
,这证明了高阶潜在模式的重要性。 PNN
在所有数据集上表现最好。- 另外,结合了
IPNN
和OPNN
的PNN*
没有明显优于IPNN
或OPNN
。我们认为IPNN
和OPNN
足以捕获multi-field
离散数据中的特征交互。
关于
logloss, RMSE, RIG
指标,结论也是类似的。然后我们还在
PNN
和baseline
模型之间进行t-test
。下表给出了两个数据集上logloss
损失下计算的p-value
。结果验证了我们的模型相对于baseline
模型显著提高了用户响应预测性能。下图显示了在
iPinYou
数据集上训练迭代的AUC
性能。可以看到:- 我们发现神经网络模型比
LR
和FM
收敛得更快。 - 我们还发现,我们提出的两个
PNN
比其它网络模型具有更好的收敛性。
- 我们发现神经网络模型比
3.2.2 消融研究
这里我们讨论神经网络架构的影响。对于
IPNN
和OPNN
,我们考虑三个超参数:embedding
维度、网络深度、激活函数。由于
CCPM
和其它神经网络几乎没有相似之处,而PNN*
只是IPNN
和OPNN
的组合,因此我们在这里仅比较FNN
、IPNN
、OPNN
。embedding layer
:我们采用了FNN
论文中的embedding layer
的思想。我们比较了不同的embedding
维度,例如[2, 10, 50, 100]
。但是当维度增加时,模型训练更加困难,并且模型更容易过拟合。在我们的实验中,我们使用embedding
维度等于10
。网络深度:我们还通过调整
FNN
和PNN
中隐层的数量来探索网络深度的影响。我们比较了不同数量的隐层,例如[1,3,5,7]
。下图给出了随着网络深度增长的性能。可以看到:一般而言,具有3
层隐层的网络在测试集上表现更好的泛化能力。为方便起见,我们将卷积层或者
product layer
都称作representation layer
。这些层可以用较少的参数捕获复杂的特征模式,因此训练效率高,并且在测试集上可以更好地泛化。激活函数:我们比较三种主要的激活函数,
sigmoid
、tanh
、relu
。与sigmoid
族激活函数相比,relu
函数具有稀疏性和梯度计算效率高的优点,有可能在multi-field
离散数据上获得更多的好处。下图比较了
FNN
、IPNN
、OPNN
上的这些激活函数。可以看到:tanh
激活函数 比sigmoid
激活函数具有更好的性能。除了
tanh
,我们发现relu
函数也有很好的表现。可能的原因包括:- 稀疏激活,即负输出的节点不会被激活。
- 高效的梯度传播,没有梯度消失问题或爆炸问题。
- 计算效率高,只有比较、加法、乘法运算。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论