数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
七、LS-PLM 模型 [2017]
点击率
click-through rate: CTR
预估是价值数十亿美金的在线广告行业的核心问题。为了提高CTR
预估的准确性,越来越多的数据被牵涉进来,使得CTR
预估成为一个大规模的机器学习问题,具有海量样本和高维特征。传统的解决方案是应用以并行方式训练的线性逻辑回归
logistic regression: LR
模型。具有 $ L_1 $ 正则化的LR
模型可以生成稀疏解,使得在线预估更快。不幸的是,
CTR
预估问题是一个高度非线性的问题。特别是,用户点击的生成涉及很多复杂的因素,例如广告质量、上下文信息、用户兴趣以及这些因素的复杂交互。为了帮助LR
模型捕获非线性,人们探索了特征工程技术feature engineering technique
,这既费时又费力。另一个方向是通过精心设计的模型捕获非线性。
Facebook
使用混合模型,将决策树和逻辑回归相结合。决策树起到了非线性特征变换的作用,其输出被馈入LR
模型。然而,基于树的方法不适合非常稀疏和非常高维的数据。Rendle S. 2010
引入了因子分解机Factorization Machine: FM
,它涉及使用二阶函数(或使用其它阶数的函数)的特征之间的交互。但是,FM
无法拟合数据中的所有通用非线性模式(比如比二阶更高的高阶模式)。
在论文
《Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction》
中,作者提出了一个分段线性模型以及针对大规模数据的训练算法,并将其命名为大规模分段线性模型Large Scale Piecewise Linear Model: LS-PLM
。LS-PLM
遵循分而治之的策略,即先将特征空间划分为若干个局部区域,然后在每个区域拟合一个线性模型,最后得到加权线性预测组合的输出。注意:这两步是以监督方式同时学习的,旨在最小化预测损失。LS-PLM
在三个方面优于web-scale
的数据挖掘:- 非线性
nonlinearity
:有了足够多的划分区域,LS-PLM
可以拟合任何复杂的非线性函数。 - 可扩展性
scalability
:和LR
模型类似,LS-PLM
可以扩展到海量样本和高维特征。论文设计了一个分布式系统,可以在数百台机器上并行训练模型。在阿里巴巴在线生产系统中,每天都会训练和部署数十个具有数千万参数的LS-PLM
模型。 - 稀疏性
sparsity
:模型稀疏性是工业场景中online serving
面临的实际问题。论文展示了具有 $ L_1 $ 和 $ L_{2,1} $ 正则化的LS-PLM
可以实现良好的稀疏性。
带有稀疏正则化的
LS-PLM
的学习可以转化为一个非凸、非可微的优化问题,这个问题很难解决。论文针对此类问题提出了一种基于方向导数directional derivatives
和拟牛顿法的有效优化方法。由于能够捕获非线性模式、以及对海量数据的可扩展性,
LS-PLM
已经成为阿里巴巴在线展示广告系统display advertising system
中的主力CTR
预估模型,并从2012
年初以来为数亿用户提供服务。它还应用于推荐系统、搜索引擎、以及其它产品系统。
7.1 模型
给定数据集 $ \mathbb D = \{(\mathbf{\vec x}_1,y_1),\cdots,(\mathbf{\vec x}_N,y_N)\} $ ,其中:
$ \mathbf{\vec x}_i = (x_{i,1},\cdots,x_{i,d})^T\in \mathbb R^d,\quad y_i\in \{0,1\} $
$ p(y=1\mid \mathbf{\vec x}) = g\left(\sum_{m=1}^M \sigma(\mathbf{\vec u}_m\cdot \mathbf{\vec x})\times \eta(\mathbf{\vec w}_m\cdot \mathbf{\vec x})\right) $LS-PLM
算法基于分而治之的策略,将整个特征空间划分为一些局部区域,对每个区域采用广义线性分类模型:其中:
$ \sigma (\mathbf{\vec u}_m\cdot \mathbf{\vec x}) $ 将样本划分到 $ M $ 个区域, $ \eta(\mathbf{\vec w}_m\cdot \mathbf{\vec x}) $ 对每个空间进行预测, $ g(\cdot) $ 用于对结果进行归一化。
$ \mathbf \Theta=\left[\mathbf{\vec u}_1,\cdots,\mathbf{\vec u}_M,\mathbf{\vec w}_1,\cdots,\mathbf{\vec w}_M\right]^\top \in \mathbb R^{2M\times d},\mathbf{\vec u}_m\in \mathbb R^d,\mathbf{\vec w}_m\in \mathbb R^d $ 为模型参数。其中:
$ \Theta_{m,j} = \begin{cases} u_{m,j},& 1\le m\le M\\ w_{m-M,j},& M+1\le m\le 2M \end{cases},\quad j=1,\cdots,d $
一种简单的情形是:
$ \sigma(\mathbf{\vec u}_m\cdot \mathbf{\vec x}) = \frac{\exp(\mathbf{\vec u}_m\cdot \mathbf{\vec x})}{\sum_{m^\prime=1}^M\exp(\mathbf{\vec u}_{m^\prime}\cdot \mathbf{\vec x})}\\ \eta(\mathbf{\vec w}_m\cdot \mathbf{\vec x}) = \frac{1}{1+ \exp(-\mathbf{\vec w}_m\cdot \mathbf{\vec x})}\\ g(z) = z $此时有:
$ p(y=1\mid \mathbf{\vec x}) = \sum_{m=1}^M \frac{\exp(\mathbf{\vec u}_m\cdot \mathbf{\vec x})}{\sum_{m^\prime=1 }^M \mathbf{\vec u}_{m^\prime }\cdot \mathbf{\vec x}} \times \frac{1}{1+ \exp(-\mathbf{\vec w}_m\cdot \mathbf{\vec x})} $这可以被认为是一种混合模型:
$ p(y = 1\mid \mathbf{\vec x}) = \sum_{m=1}^M p(z=m\mid {\mathbf{\vec x}}) \times p(y = 1\mid z=m,\mathbf{\vec x}) $其中:
$ p(z=m\mid {\mathbf{\vec x}}) = \frac{\exp(\mathbf{\vec u}_m\cdot \mathbf{\vec x})}{\sum_{m^\prime }^M \mathbf{\vec u}_{m^\prime }\cdot \mathbf{\vec x}} $ 表示样本划分到区域 $ m $ 的概率。它满足:
$ p(z=m\mid {\mathbf{\vec x}}) \ge 0,\quad \sum_{m=1}^M p(z=m\mid {\mathbf{\vec x}}) = 1 $$ p(y = 1\mid z=m,\mathbf{\vec x}) = \frac{1}{1+ \exp(-\mathbf{\vec w}_m\cdot \mathbf{\vec x})} $ 表示在区域 $ m $ 中,样本 $ \mathbf{\vec x} $ 属于正类的概率。
我们主要研究这种简单的模型。
读者注:该模型的参数空间放大了 $ O(M) $ 倍。考虑到
CTR
预估场景中,逻辑回归模型的参数规模可以高达十亿级,因此 $ M $ 不能太大。但是太小的 $ M $ 无法捕获足够多的非线性,因此该模型比较鸡肋。下图说明了在一个
demo
数据集中,该LS-PLM
和LR
模型的差异。图A)
是demo
数据集,这是一个二分类问题,红点属于正类、蓝点属于负类。图B)
显示了使用LR
模型的分类结果,图C)
显示了使用LS-PLM
模型的分类结果。可以清晰地看到LS-PLM
能够捕获到数据中的非线性模式。
$ \mathcal J = \text{loss}(\mathbf \Theta) + \lambda ||\mathbf \Theta||_{2,1} + \beta ||\mathbf \Theta||_1 $LS-PLM
模型的目标函数为:其中:
$ \text{loss}(\mathbf\Theta) = -\sum_{i=1}^N\left[y_i\log p(y_i = 1 \mid \mathbf{\vec x}_i;\mathbf\Theta) + (1-y_i)\log p(y_i = 0 \mid \mathbf{\vec x}_i;\mathbf\Theta) \right] $loss
是负的对数似然损失函数:$ ||\mathbf \Theta||_{2,1} $ 和 $ ||\mathbf\Theta||_1 $ 是 $ L_{2,1} $ 和 $ L_1 $ 正则化项:
$ ||\mathbf\Theta||_{2,1} = \sum_{j=1}^d\sqrt{\sum_{m=1}^{2M}\Theta_{i,j}^2} ,\quad ||\mathbf\Theta||_1 =\sum_{j=1}^d\sum_{m=1}^{2M}|\Theta_{i,j}| $这些正则化先计算每个维度在各区域的正则化,然后将所有维度的正则化直接累加。
- $ ||\mathbf \Theta||_{2,1} $ 正则化主要用于特征选择。在我们的模型中,特征的每个维度都和 $ 2M $ 个参数相关联。 $ L_{2,1} $ 正则化预期将单个特征的所有 $ 2M $ 个参数推到零,即抑制那些不太重要的特征。
- $ ||\mathbf\Theta||_1 $ 主要用于模型稀疏性,但是它也有助于特征选择。它可以强制特征的参数尽可能为零,这有助于提高模型的解释能力和泛化性能。
但是, $ L_1 $ 范数和 $ L_{2,1} $ 范数都是非平滑函数。这导致目标函数是非凸的和非光滑的,使得很难应用那些传统的梯度下降优化方法或
EM
方法。
7.2 优化算法
定义方向导数为:
$ f^\prime(\mathbf \Theta;\mathbf{ v}) = \lim_{\alpha \rightarrow 0} \frac{f(\mathbf\Theta+\alpha\mathbf{ v}) - f(\mathbf\Theta)}{\alpha} $当 $ f^\prime(\mathbf \Theta;\mathbf{ v} ) \lt 0 $ 时, $ \mathbf{ v} $ 就是使得函数值 $ f(\mathbf \Theta) $ 下降的方向。其中
$ \mathbf v = \begin{bmatrix} v_{1,1}&v_{1,2}&\cdots& v_{1,d}\\ v_{2,1}&v_{2,2}&\cdots &v_{2,d}\\ \vdots&\vdots&\ddots &\vdots\\ v_{2M,d}&v_{2M,2}&\cdots &v_{2M,d}\\ \end{bmatrix}\in \mathbb R^{2M\times d} $$ v_{m,j} $ 对应于参数 $ \Theta_{m,j} $ 的方向。
定义符号函数 $ \text{sgn}(\cdot) $ 为:
$ \text{sgn}(x) = \begin{cases} 1,& x\gt 0\\ 0,& x = 0\\ -1, & x\lt 0 \end{cases} $定义投影函数 $ \pi(\cdot) $ 为:
$ \pi_{m,j}(\mathbf \Theta,\mathbf \Omega) = \begin{cases} \Theta_{m,j}, & \text{sgn}(\Theta_{m,j}) = \text{sgn}(\Omega_{m,j})\\ 0,&\text{other} \end{cases} $它表示将 $ \mathbf \Theta $ 投影到 $ \mathbf \Omega $ 定义的象限
orthant
。
如前所述,我们针对大规模
CTR
预估问题的目标函数既不是凸函数、也不是平滑函数。在这里,我们提出了一种通用且有效的优化方法来解决此类非凸问题。由于我们目标函数的负梯度并不是对所有的 $ \mathbf \Theta $ 都存在,因此我们采用方向 $ \mathbf v $ 来替代,其中该方向是最小化方向导数 $ f^\prime(\mathbf \Theta;\mathbf{ v} ) $ 。方向导数 $ f^\prime(\mathbf \Theta;\mathbf{ v} ) $ 对任何 $ \mathbf \Theta $ 和方向 $ \mathbf v $ 都存在,这就是下面的引理。
引理:当目标函数 $ f(\mathbf \Theta) $ 由一个损失函数、一个 $ L_1 $ 正则化项、一个 $ L_{2,1} $ 正则化项组成时(比如前述的目标函数),那么方向导数 $ f^\prime(\mathbf \Theta;\mathbf{ v} ) $ 对任何 $ \mathbf \Theta $ 和方向 $ \mathbf v $ 都存在。
证明过程:
$ f^\prime(\mathbf \Theta;\mathbf{ v}) = \lim_{\alpha\rightarrow 0 } \frac{f(\mathbf\Theta + \alpha \mathbf{ v})-f(\mathbf\Theta)}{\alpha}\\ = \lim_{\alpha\rightarrow 0 } \frac{\text{loss}(\mathbf\Theta + \alpha \mathbf{ v})-\text{loss}(\mathbf\Theta)}{\alpha} + \lim_{\alpha\rightarrow 0 }\lambda \frac{||\mathbf\Theta + \alpha \mathbf{ v}||_{2,1}-||\mathbf\Theta||_{2,1}}{\alpha}\\ + \lim_{\alpha\rightarrow 0 }\beta \frac{||\mathbf\Theta + \alpha \mathbf{ v}||_{1}-||\mathbf\Theta||_{1}}{\alpha} $第一项:因为 $ \text{loss}(\mathbf\Theta) $ 是光滑的、可微的,所以有:
$ \lim_{\alpha\rightarrow 0 } \frac{\text{loss}(\mathbf\Theta + \alpha \mathbf{ v})-\text{loss}(\mathbf\Theta)}{\alpha} = (\nabla_{\mathbf\Theta}\text{loss}) \cdot \mathbf{ v} = \sum_{m=1}^{2M}\sum_{j=1}^d \frac{\partial \text{loss}}{\partial \Theta_{m,j}}\times v_{m,j} $这里的向量点积是将两个张量展平为两个一维向量,再进行点积。
第二项:
$ \lim_{\alpha\rightarrow 0 }\lambda \frac{||\mathbf\Theta + \alpha \mathbf{ v}||_{2,1}-||\mathbf\Theta||_{2,1}}{\alpha} \\ = \lim_{\alpha\rightarrow 0 }\lambda \frac{\sum_{j=1}^d\left(\sqrt{\sum_{m=1}^{2M}(\Theta_{m,j}+\alpha \times v_{m,j})^2 } -\sqrt{\sum_{m=1}^{2M} \Theta_{m,j}^2 }\right)}{\alpha} $根据:
$ \lim_{\alpha\rightarrow 0 } \frac{ \sqrt{\sum_{m=1}^{2M}(\Theta_{m,j}+\alpha \times v_{m,j})^2 } -\sqrt{\sum_{m=1}^{2M} \Theta_{m,j}^2 } }{\alpha} = \begin{cases} \frac{ \mathbf \Theta_{:,j}\cdot \mathbf v_{:,j}}{ || \mathbf \Theta_{:,j}||_{2}}, &|| \mathbf \Theta_{:,j}||_{2} \ne 0\\ ||\mathbf v_{:,j}||_{2},&|| \mathbf \Theta_{:,j}||_{2} = 0 \end{cases} $其中: $ \mathbf \Theta_{:,j}\in \mathbb R^{2M} $ 为 $ \mathbf \Theta $ 的第 $ j $ 列组成的向量; $ \mathbf v_{:,j}\in \mathbb R^{2M} $ 是 $ \mathbf v $ 的第 $ j $ 列组成的向量。
则有:
$ \lim_{\alpha\rightarrow 0 }\lambda \frac{||\mathbf\Theta + \alpha \mathbf{ v}||_{2,1}-||\mathbf\Theta||_{2,1}}{\alpha} = \lambda \left( \sum_{\substack{1\le j\le d\\|| \mathbf \Theta_{:,j}||_{2 }\ne 0}}\frac{ \mathbf \Theta_{:,j}\cdot \mathbf v_{:,j}}{ || \mathbf \Theta_{:,j}||_{2 }} +\sum_{\substack{1\le i\le d\\|| \mathbf \Theta_{:,j}||_{2 } = 0}} || \mathbf v_{:,j}||_{2 }\right) $第三项:
$ \lim_{\alpha\rightarrow 0 }\beta \frac{||\mathbf\Theta + \alpha \mathbf{ v}||_{1}-||\mathbf\Theta||_{1}}{\alpha} = \lim_{\alpha\rightarrow 0 }\beta \frac{\sum_{j=1}^d\sum_{m=1}^{2M} \left(|\Theta_{m,j} +\alpha\times v_{m,j}|-|\Theta_{m,j}|\right)}{\alpha} $考虑到:
$ \lim_{\alpha\rightarrow 0 } \frac{|\Theta_{m,j} +\alpha\times v_{m,j}|-|\Theta_{m,j}|}{\alpha} = \begin{cases} \text{sgn}(\Theta_{m,j})\times v_{m,j},& \Theta_{m,j}\ne 0\\ |v_{m,j}|,&\Theta_{m,j} = 0 \end{cases} $因此有:
$ \lim_{\alpha\rightarrow 0 }\beta \frac{||\mathbf\Theta + \alpha \mathbf{ v}||_{1}-||\mathbf\Theta||_{1}}{\alpha} = \beta \left(\sum_{\substack{1\le j \le d\\ 1\le m\le 2M\\ \Theta_{m,j} \ne 0}} \text{sgn}(\Theta_{m,j})v_{m,j}+\sum_{\substack{1\le j \le d\\ 1\le m\le 2M\\ \Theta_{m,j} = 0}} |v_{m,j}| \right) $
最终得到方向导数。
注意:这里的方向导数中假设 $ \alpha \gt 0 $ ,即右方向导数。
由于方向导数 $ f^\prime(\mathbf \Theta;\mathbf{ v} ) $ 对任何 $ \mathbf \Theta $ 和方向 $ \mathbf v $ 都存在,因此当 $ f(\mathbf \Theta) $ 的负梯度不存在时,我们选择最小化方向导数 $ f^\prime(\mathbf \Theta;\mathbf{ v} ) $ 的方向作为下降方向。
由于代价函数降低的幅度与方向 $ \mathbf{ v} $ 的长度有关,因此我们约束方向 $ \mathbf v $ 的长度 $ ||\mathbf v ||\le C $ ,其中 $ C $ 是一个常数。因此我们得到一个带约束的最优化问题:
$ \mathbf{ v}^* = \arg\max_{\mathbf{ v}} f^\prime(\mathbf\Theta;\mathbf{ v})\\ s.t. ||\mathbf{ v}|| \le C $命题:给定一个光滑的损失函数 $ \text{loss}(\mathbf \Theta) $ 、以及一个目标函数 $ f(\mathbf \Theta)=\text{loss}(\mathbf \Theta) + \lambda ||\mathbf \Theta||_{2,1} + \beta||\mathbf \Theta||_1 $ ,则有界的、且最小化方向导数 $ f^\prime(\mathbf \Theta;\mathbf{ v} ) $ 的方向 $ \mathbf v $ 如下:
$ v_{m,j} = \begin{cases} s_{m,j} - \beta\times \text{sgn}(\Theta_{m,j}),&\Theta_{m,j}\ne 0\\ \max(|s_{m,j}|-\beta,0)\times\text{sgn}(s_{m,j}),& \Theta_{m,j}=0,||\mathbf \Theta_{:,j}||_{2}\ne 0\\ \frac{\max(||\mathbf b_{:,j}||_{2} -\lambda,0)}{||\mathbf b_{:,j}||_{2}} \times b_{m,j},&||\mathbf \Theta_{:,j}||_{2} = 0 \end{cases} $其中:
$ s_{m,j} = - (\nabla_{\mathbf\Theta}\text{loss})_{m,j} - \lambda\frac{\Theta_{m,j}}{||\mathbf \Theta_{:,j}||_{2}}\\ b_{m,j} = \max(|- (\nabla_{\mathbf\Theta}\text{loss})_{m,j}|-\beta,0)\times \text{sgn}(- (\nabla_{\mathbf\Theta}\text{loss})_{m,j}) $证明见原始论文。
受
$ \xi_{m,j}^{(t)} = \begin{cases} \text{sgn}\left(\Theta_{m,j}^{(t)}\right),&\Theta_{m,j}^{(t)} \ne 0\\ \text{sgn}\left(v_{m,j}^{(t)}\right),&\Theta_{m,j}^{(t)} = 0 \end{cases} $OWLQN
方法的启发,我们还限制模型参数在每次迭代中不改变符号sign
。在第 $ t $ 次迭代,给定最小化方向导数的方向 $ \mathbf v^{(t)} $ 和旧的模型参数 $ \mathbf \Theta^{(t)} $ ,则下一轮参数的象限约束为:即:
- 当 $ \Theta_{m,j}^{(t)}\ne 0 $ 时,新的 $ \Theta_{m,j} $ 在不改变符号。
- 当 $ \Theta_{m,j}^{(t)} = 0 $ 时,我们为新的 $ \Theta_{m,j} $ 选择由 $ d_{m,j}^{(t)} $ 决定的象限。
得到最小化方向导数的方向 $ \mathbf v $ 之后,我们并不是沿着 $ \mathbf v $ 的方向更新参数,而是沿着由
LBFGS
计算的下降方向来更新模型参数(从而加快收敛速度,因为二阶优化算法收敛速度更快)。此时需要计算在给定象限上目标函数的逆海森矩阵,其中用到辅助向量 $ \mathbf{ y}^{(t)},\mathbf{ s}^{(t)} $ 的序列。最后得到参数更新的方向 $ \mathbf H^{(t)} \mathbf v^{(t)} $ 。 这里我们采用两个技巧:首先,我们约束参数更新的方向位于针对于 $ \mathbf v^{(t)} $ 的象限。
其次,由于我们的目标函数是非凸的,我们无法保证 $ \mathbf H^{(t)} $ 为正定的。我们使用 $ \mathbf y^{(t)}\cdot \mathbf s^{(t)}\gt 0 $ 作为条件来确保 $ \mathbf H^{(t) } $ 是正定矩阵:当 $ \mathbf{ y}^{(t)}\cdot \mathbf{ s}^{(t)} \gt 0 $ 时,采用 $ \mathbf H^{(t)} $ 来更新;新当 $ \mathbf{ y}^{(t)}\cdot \mathbf{ s}^{(t)} \le 0 $ 时,采用 $ \mathbf v^{(t)} $ 来更新。
$ \mathbf p^{(t)} = \begin{cases} \pi\left(\mathbf H^{(t)}\mathbf v^{(t)},\mathbf v^{(t)}\right),& \mathbf{ y}^{(t)}\cdot \mathbf{ s}^{(t)} \gt 0\\ \mathbf v^{(t)},&\mathbf{ y}^{(t)}\cdot \mathbf{ s}^{(t)} \le 0 \end{cases} $其中 $ \mathbf{\vec p}^{(t)} $ 为参数更新的方向。
给定参数更新方向,我们使用回溯线性搜索
$ \mathbf \Theta^{(t+1)} = \pi\left(\mathbf\Theta^{(t)} + \alpha \mathbf p^{(t)},\xi^{(t)}\right) $backtracking line search
来找到合适的步长 $ \alpha $ 。和QWLQN
一样,我们将新的 $ \mathbf \Theta^{(t+1)} $ 投影到 $ \xi^{(t)} $ 给定的象限:因此要想参数 $ \Theta_{m,j} $ 符号发生改变,唯一的机会是当 $ \Theta_{m,j} =0 $ 时基于 $ v_{m,j} $ 的符号来改变。
LS-PLM
模型优化算法:输入:训练集 $ \mathbb D = \{(\mathbf{\vec x}_1,y_1),\cdots,(\mathbf{\vec x}_N,y_N)\} $
输出:模型参数 $ \mathbf \Theta $
步骤:
随机初始化参数 $ \mathbf\Theta^{(0)} $ 。
迭代: $ t=0,1,2,\cdots, T $ ,其中 $ T $ 为最大迭代步数。迭代步骤为:
计算 $ \mathbf v^{(t)} $ 、 $ \mathbf p^{(t)} $ 、 $ \mathbf\Theta^{(t+1)} $ 。
判断停止条件:如果 $ \mathbf \Theta^{(t+1)} $ 满足停止条件(如 $ ||\mathbf \Theta^{(t+1)} - \mathbf \Theta^{(t)}||_2\le \epsilon $ ,或者 $ |\mathcal J(\mathbf \Theta^{(t+1)}) - \mathcal J(\mathbf \Theta^{(t)})|\le \epsilon $ ),则停止迭代并返回 $ \mathbf \Theta^{(t+1)} $ 。否则继续迭代,并更新 $ \mathbf{ y} , \mathbf{ s} $ :
$ \mathbf{y}^{(t+1)} = \mathbf{\Theta}^{(t+1)}-\mathbf{\Theta}^{}\\ \mathbf{s}^{(t+1)} = -\mathbf{v}^{(t+1)}- (-\mathbf{v}^{(t)} ) $
上述伪代码相比标准
LBFGS
算法仅有几处不同:- 使用最小化非凸目标函数的方向导数的方向 $ \mathbf v^{(t)} $ 代替负梯度。
- 更新方向被约束到由所选方向 $ \mathbf v^{(t)} $ 定义的给定象限。当 $ \mathbf H^{(t)} $ 是非正定矩阵时,切换到 $ \mathbf v^{(t)} $ 。
- 在线性搜索期间,每个搜索点都投影到前一个点的象限。
7.3 模型实现
这里我们首先提供针对大规模数据的
LS-PLM
模型的并行实现,然后介绍一个有助于大大加快训练过程的重要技巧。为了在大规模
setting
中应用LS-PLM
模型优化算法,我们使用分布式学习框架实现它,如下图所示。这是parameter server
的变体。在我们的实现中,每个计算节点同时运行一个server
节点和一个worker
节点,目的是:- 最大限度地利用
CPU
的计算能力。在传统的parameter server setting
中,server
节点作为分布式KV
存储来使用,具有push/pull
操作的接口,计算成本低。将server
节点与worker
节点一起运行可以充分利用算力。 - 最大限度地利用内存。今天的机器通常有大内存,例如
128 GB
。通过运行在同一个计算节点上,server
节点和worker
节点可以更好地共享和利用大内存。
简而言之,框架中有两个角色:
- 第一个角色是
worker
节点。每个worker
结点存储部分训练样本,以及一个局部模型。该局部模型仅仅保存用于训练本地样本的模型参数。 - 第二个角色是
server
节点。每个server
结点分别独立的存储全局模型中的一部分。
在每次迭代过程中:
- 每个
worker
首先用本地数据和局部模型计算损失和下降方向(数据并行)。 - 然后
server
将损失loss
、方向 $ \mathbf v^{(t)} $ 、以及其它需要用于计算 $ \mathbf \Theta^{(t+1)} $ 的项汇总,从而计算 $ \mathbf\Theta^{(t+1)} $ (模型并行)。 - 最终
worker
同步最新的 $ \mathbf{\Theta}^{(t+1)} $ 。
- 最大限度地利用
除了通用并行实现之外,我们还优化了在线广告环境中的实现。
CTR
预估任务中的训练样本通常具有非常相似的共同特征common feature
模式。如下图所示:用户U1
在一个session
中看到三条广告,因此产生三个样本。事实上,这三个样本共享U1
的画像特征(如:年龄、性别、城市、兴趣爱好等)。由于大量的计算集中在 $ \mathbf{\vec u}_m\cdot \mathbf{\vec x} $ 和 $ \mathbf{\vec w}_m\cdot \mathbf{\vec x} $ , 因此可以将计算拆解成样本共享特征和样本非共享特征:
$ \mathbf{\vec u}_m\cdot \mathbf{\vec x} = \mathbf{\vec u}_{m,c}\cdot \mathbf{\vec x}_c + \mathbf{\vec u}_{m,nc}\cdot \mathbf{\vec x}_{nc}\\ \mathbf{\vec w}_m\cdot \mathbf{\vec x} = \mathbf{\vec w}_{m,c}\cdot \mathbf{\vec x}_c + \mathbf{\vec w}_{m,nc}\cdot \mathbf{\vec x}_{nc} $其中: $ \mathbf{\vec x}_c $ 表示样本的共享特征, $ \mathbf{\vec x}_{nc} $ 为样本的非共享特征。
对于共享特征,每个用户只需要计算一次并保存起来,后续该用户的所有样本都可以直接复用该计算结果。
具体而言,我们在以下三个方面优化了具有共同特征的并行实现技巧::
- 将训练样本根据共享特征分组(如:“年龄、城市、性别” ),共享特征相同的样本划分到同一个
worker
中。 - 每组共享特征仅需要存放一次,从而节省内存。如:“年龄 = 20, 城市 = 北京,性别 = 女” 这组特征只需要存放一次,该组的所有样本不需要重复存储该组特征。
- 在更新损失函数和梯度时,每组共享特征只需要计算一次,从而提高计算速度。
由于阿里巴巴的生产数据具有共享特征的模式,因此该技巧可以大幅度提高训练速度。在
100
个worker
、每个worker
12
个CPU core
、11GB
内存的条件下,实验结果表明:内存显著降低到1/3
,计算速度加快12
倍左右。- 将训练样本根据共享特征分组(如:“年龄、城市、性别” ),共享特征相同的样本划分到同一个
7.4 实验
数据集:我们的数据集来自于阿里巴巴的移动展示广告产品系统。我们在连续的一段时间收集了七个数据集,旨在评估所提出模型的一致性
consist
性能。在每个数据集中,训练集/验证集/测试集是从不同的日期不相交地收集的,比例约为7:1:1
。我们的评估指标为AUC
。数据集的详细数据如下表所示。
区域数量 $ M $ 的效果:参数 $ M $ 的物理意义是区域数量,它控制了模型的容量。
$ M $ 越大则模型容量越大,拟合能力越强,但是模型训练代价也越大。因此实际应用中必须在模型的拟合能力和训练成本之间平衡。
模型在数据集
1
上的结果如下图所示。我们测试了M = 6,12,24,36
。可以看到:- 当 $ M=12 $ 时,模型测试
AUC
明显强于 $ M=6 $ 。 - 当 $ M = 24,36 $ 时,模型测试
AUC
相对于 $ M =12 $ 虽然有所提升,但是提升幅度很小。因此后续实验采用 $ M = 12 $ 。
- 当 $ M=12 $ 时,模型测试
正则化的效果:为了使得模型更简单、泛化能力更强,我们使用了了 $ L_1 $ 和 $ L_{2,1} $ 正则化来约束模型使得模型更稀疏。这里我们评估这两个正则化的效果,结果如下表所示。可以看到:
- 不出所料, $ L_1 $ 和 $ L_{2,1} $ 正则化都可以使得我们的模型更稀疏。
- 仅采用 $ L_{2,1} $ 正则化,最终保留了
9.4%
的非零权重,从而保留了18.7%
的特征。 - 仅采用 $ L_1 $ 正则化,最终保留了
1.9%
的非零权重,从而保留了12.7%
的特征。 - 联合采用 $ L_1 $ 正则化和 $ L_{2,1} $ 正则化,最终得到更稀疏的模型,以及泛化能力更强的模型。
在这个实验中: $ M = 12 $ ; $ \beta $ 和 $ \lambda $ 在范围
{0.01, 0.1, 1, 10}
内执行网格搜索,最后 $ \beta=1,\gamma=1 $ 表现最佳。和
LR
的对比:LS-PLM
和LR
模型在7
个数据集上的对比如下图所示(评估指标为测试auc
)。所有超参数通过
grid search
搜索。其中:LS-PLM
的超参数 $ \beta \in \{0.01,0.1,1,10\},\lambda \in \{0.01,0.1,1,10\} $ , 最佳超参数为 $ \lambda = 1,\beta = 1 $ 。LR
采用 $ L_1 $ 正则化,超参数 $ \beta \in \{0.01,0.1,1,10\} $ ,最佳超参数为 $ \beta = 1 $ 。
可以看到:
LS-PLM
显著超越了LR
,平均AUC
提升为1.4%
,这对于在线广告系统的整体性能有显著影响。- 此外这个提升是稳定的,这确保了
LS-PLM
可以安全地部署到在线生产系统中。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论