数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
十一、Online Learning
常见的梯度下降法、牛顿法、拟牛顿法属于批学习
batch
方法,每次迭代都需要对全量训练样本重新学习一遍。当面临搜索、推荐等高维度(数十亿甚至上百亿维度)、大尺度(百亿规模甚至千亿规模)数据的场景时,传统的批学习方法效率太低。
解决该问题的方法是:在线学习
online learning
。最简单的在线学习策略是在线梯度下降
Oneline Gradient Descent:OGD
。它是当batch size = 1
的mini-batch
随机梯度下降法的特殊情形。该算法每次迭代仅训练最新的样本,每个样本只被训练一次。
不同于
mini-batch
随机梯度下降,在OGD
中,算法每次梯度更新并不是沿着全局梯度的负方向进行前进,而是带有非常大的随机性。这样即使采用
L1
正则化,模型也很难产生稀疏解。而在线学习过程中,稀疏性是一个主要追求目标,因为稀疏解有以下优点:- 可以降低有效特征数量,起到特征选择作用
- 降低模型大小
- 线上预测时,降低计算量
11.1 梯度截断法 TG
为得到稀疏解,最简单的方式是进行梯度截断:每隔 $ k $ 步,当权重低于阈值 $ \tau $ 时截断为 0 。
$ \vec\theta^{(t+1)} = \begin{cases} \vec\theta^{(t)} - \epsilon^{(t)} \mathbf{\vec g}^{(t)},& t\%k \ne 0\\ T_0(\vec\theta^{(t)} - \epsilon^{(t)} \mathbf{\vec g}^{(t)};\tau),&t\%k = 0 \end{cases} $其中:
$ T_0(z;\tau) = \begin{cases} 0,& |z| \le \tau\\ z, & |z| \gt \tau \end{cases} $该方法容易理解、实现简单,但是实际中很少应用。因为权重系数较小的原因,很可能是因为该维度训练不足(如出现该特征的样本太少)引起的,并不是因为该特征不重要引起的。简单的截断可能造成该部分特征丢失。
梯度截断法
$ \vec\theta^{(t+1)} = \begin{cases} \vec\theta^{(t)} - \epsilon^{(t)} \mathbf{\vec g}^{(t)},& t\%k \ne 0\\ T_1(\vec\theta^{(t)} - \epsilon^{(t)} \mathbf{\vec g}^{(t)};\lambda k\epsilon^{(t)};\tau),&t\%k = 0 \end{cases} $Truncated Gradient:TG
是对简单截断的一种改进。当权重低于阈值 $ \tau $ 时,它不是直接降低到 0 ,而是慢慢降低到 0 。其中:
$ T_1(z;\alpha,\tau) = \begin{cases} \max(0,z-\alpha) ,& 0\le z\le \tau\\ \min(0,z+\alpha),& -\tau \le z \le 0\\ z ,& z \gt |\tau| \end{cases} $- $ \lambda,\tau $ 决定了参数的稀疏程度。这两个值越大,则模型的稀疏性越强。
- 当 $ \lambda k \epsilon^{(t)} = \tau $ 时,即 $ \alpha = \tau $ ,则有 $ T_1(z;\alpha;\tau) = T_0(z;\tau) $ 。此时
TG
法退化到简单截断法。
下图中,
x
表示z
, $ \theta $ 表示 $ \tau $
11.2 FOBOS
前向后向切分
$ \vec\theta^{(t+1/2)} = \vec\theta^{(t)} - \epsilon^{(t)}\mathbf{\vec g}^{(t)}\\ \vec\theta^{(t+1)} = \arg\min_{\vec\theta} \left(\frac 12 ||\vec\theta - \vec\theta^{(t+1/2)}||^2 + \epsilon^{(t+1/2)} \Psi(\vec\theta)\right) $FOBOS:Forward-Backward Splitting
将权重更新分为两个步骤:其中 $ \Psi(\vec\theta) $ 用于对参数进行正则化。
该更新过程分为两步:
第一步为标准的梯度下降
第二步对梯度下降的结果进行微调。其中:
- $ \frac 12 ||\vec\theta - \vec\theta^{(t+1/2)}||^2 $ 为距离约束,用于保证微调发生在梯度下降结果的附近
- $ \epsilon^{(t+1/2)} \Psi(\vec\theta) $ 为正则化,用于产生稀疏性。 $ \epsilon^{(t+1/2)} $ 是正则化的学习率。
将第一步方程代入第二步,有:
$ J(\vec\theta) = \frac 12 ||\vec\theta-\vec\theta^{(t)} + \epsilon^{(t)}\mathbf{\vec g}^{(t)}||^2 + \epsilon^{(t+1/2)}\Psi(\vec\theta)\\ \vec\theta^{(t+1)} = \arg\min_{\vec\theta} J(\vec\theta) $为求得最优解,根据梯度为零有:
$ \nabla_{\vec\theta} J = \mathbf{\vec 0} \rightarrow \vec\theta-\vec\theta^{(t)} + \epsilon^{(t)} \mathbf{\vec g}^{(t)} + \epsilon^{(t+1/2)} \nabla_{\vec\theta}\Psi(\vec\theta) = \mathbf{\vec 0} $因此有:
$ \vec\theta^{(t+1)} = \vec\theta^{(t)} - \epsilon^{(t)}\mathbf{\vec g}^{(t)} - \epsilon^{(t+1/2)}\nabla_{\vec\theta}\Psi(\vec\theta^{(t+1)}) $可以看到:
- $ \vec\theta^{(t+1)} $ 不仅与迭代期的状态 $ \vec\theta^{(t)} $ 有关,还和迭代后的状态 $ \vec \theta^{(t+1)} $ 有关。这就是 “前向”、“后向” 的由来。
FOBOS
与常规梯度下降在于FOBOS
多了一项: $ - \epsilon^{(t+1/2)}\nabla_{\vec\theta}\Psi(\vec\theta^{(t+1)}) $ 。
当在
$ \vec\theta^{(t+1)} = \arg\min_{\vec\theta} \sum_{i=1}^d\left(\frac 12 ( \theta_i - \theta_i^{(t+1/2)})^2 + \tilde\lambda |\theta_i|\right) $L1
正则化下, $ \Psi(\vec\theta) = \lambda ||\vec\theta||_1 $ 。令 $ \vec\theta = (\theta_1,\cdots,\theta_d)^T $ ,记 $ \tilde \lambda = \lambda \epsilon ^{(t+1/2)} $ 则有:由于求和项中每一项都是非负的,因此当每一项都最小时,整体最小。即:
$ \theta_i^{(t+1)} = \arg\min_{\theta_i}\left(\frac 12 ( \theta_i - \theta_i^{(t+1/2)})^2 + \tilde\lambda |\theta_i|\right) $设 $ \theta_i^* $ 是最优解,则必有 $ \theta_i^* \times \theta_i^{(t+1/2)} \ge 0 $ 。如果 $ \theta_i^* \times \theta_i^{(t+1/2)} \lt 0 $ ,则有:
$ \left(\frac 12 ( \theta_i - \theta_i^{(t+1/2)})^2 + \tilde\lambda |\theta_i|\right)\mid_{\theta_i = 0} = \frac 12 \left(\theta_i^{(t+1/2)}\right)^2\\ \lt \frac 12 \left(\theta_i^{(t+1/2)}\right)^2 - \theta_i^*\times \theta_i^{(t+1/2)} + \frac 12 \left(\theta_i^*\right)^2 \\ \lt \frac 12\left(\theta_i^* -\theta_i^{(t+1/2)} \right)^2 + \tilde \lambda |\theta_i^*| = \left(\frac 12 ( \theta_i - \theta_i^{(t+1/2)})^2 + \tilde\lambda |\theta_i|\right)\mid_{\theta_i = \theta_i^*} $因此 $ \theta_i^* $ 必然不是最优解,矛盾。
既然有 $ \theta_i^* \times \theta_i^{(t+1/2)} \ge 0 $ ,则分情况讨论:
当 $ \theta_i^{(t+1/2)} \ge 0 $ 时,则有 $ \theta_i^{*} \ge 0 $ ,则原始问题转化为:
$ \arg\min_{\theta_i}\left(\frac 12 ( \theta_i - \theta_i^{(t+1/2)})^2 + \tilde\lambda \theta_i \right)\\ s.t.\quad \theta_i\ge 0 $解得: $ \theta^{(t+1)}_i = \theta^*_i = \max(0,\theta_i^{(t+1/2)}-\tilde \lambda) $
当 $ \theta_i^{(t + 1/2)}\lt 0 $ 时,有 $ \theta_i^*\lt 0 $ ,则原始问题转化为:
$ \arg\min_{\theta_i}\left(\frac 12 ( \theta_i - \theta_i^{(t+1/2)})^2 - \tilde\lambda \theta_i \right)\\ s.t.\quad \theta_i\lt 0 $解得: $ \theta^{(t+1)}_i = \theta^*_i = - \max(0,-\theta_i^{(t+1/2)}-\tilde \lambda) $
因此得到
$ \theta_i^{(t+1)} = \text{sgn}(\theta_i^{(t + 1/2)}) \times \max(0,|\theta_i^{(t + 1/2)}| - \tilde\lambda)\\ = \text{sgn}\left(\theta_i^{(t)} - \epsilon^{(t)}g_i^{(t)}\right)\times \max\left(0, \left|\theta_i^{(t)} - \epsilon^{(t)}g_i^{(t)}\right|-\epsilon^{(t+1/2)}\lambda\right) $FOBOS
在L1
正则化条件下的更新方程:其中 $ \text{sgn}(z) $ 为符号函数:当 $ z \lt 0 $ 时取值为
-1
;当 $ z\gt 0 $ 时取值为1
;当 $ z=0 $ 时取值为0
。重新调整更新公式:
$ \theta_i^{(t+1)} = \begin{cases} 0,&\text{if}\; \left|\theta_i^{(t)} - \epsilon^{(t)}g_i^{(t)}\right|\le \epsilon^{(t+1/2)}\lambda\\ \left(\theta_i^{(t)} - \epsilon^{(t)}g_i^{(t)}\right) - \epsilon^{(t+1/2)}\lambda \times \text{sgn}(\theta_i^{(t)} - \epsilon^{(t)}g_i^{(t)}),&\text{else} \end{cases} $当一条样本产生的梯度 $ g^{(t)}_i $ 不足以对维度 $ i $ 的权重产生足够大的变化时,权重 $ \theta_i $ 被截断为 0 。
当 $ k=1 $ , $ \tau = +\infty $ ,
$ \theta^{(t+1)}_i = \begin{cases} \max(0,\left(\theta_i^{(t)} - \epsilon^{(t)}g_i^{(t)}\right)-\lambda_{TG}\epsilon^{(t)}) ,& 0\le \left(\theta_i^{(t)} - \epsilon^{(t)}g_i^{(t)}\right) \\ \min(0,\left(\theta_i^{(t)} - \epsilon^{(t)}g_i^{(t)}\right)+\lambda_{TG}\epsilon^{(t)}),& \left(\theta_i^{(t)} - \epsilon^{(t)}g_i^{(t)}\right) \le 0 \end{cases}\\ = \begin{cases} 0 ,& \text{if}\quad \left|\theta_i^{(t)} - \epsilon^{(t)}g_i^{(t)}\right| \le \lambda_{TG}\epsilon^{(t)})\\ \left(\theta_i^{(t)} - \epsilon^{(t)}g_i^{(t)}\right) - \lambda_{TG}\epsilon^{(t)}\times \text{sgn}\left(\theta_i^{(t)} - \epsilon^{(t)}g_i^{(t)}\right),&\text{else} \end{cases} $TG
更新方程退化为:因此当 $ \epsilon^{(t)} \lambda_{TG} = \epsilon^{(t+1/2)}\lambda $ 时 ,
TG
退化为L1-FOBOS
。
11.3 RDA
TG,FOBOS
等算法都是基于随机梯度下降SGD
算法而来,而正则对偶平均Regularized Dual Averaging: RDA
算法是基于简单对偶平均法Simple Dual Averaging Scheme
而来。
$ \vec\theta^{(t+1)} = \arg\min_{\vec\theta} \left(\frac 1t\sum_{s=1}^t \mathbf{\vec g}^{(s)}\cdot \vec\theta +\Psi(\vec\theta) + \frac{\beta^{(t)}}{t}h(\vec\theta) \right) $RDA
的权重特新方程为:其中:
- $ \frac 1t\sum_{s=1}^t \mathbf{\vec g}^{(s)}\cdot \vec\theta $ 表示梯度 $ \mathbf{\vec g} $ 对 $ \vec\theta $ 的积分中值(积分平均值)
- $ \Psi(\vec\theta) $ 为正则化项
- $ h(\vec\theta) $ 是一个辅助的严格凸函数
- $ \{\beta^{(t)} \mid t\ge 1\} $ 是一个非负的非递减序列
在
$ \vec\theta^{(t+1)} = \arg\min_{\vec\theta} \left(\frac 1t\sum_{s=1}^t \mathbf{\vec g}^{(s)}\cdot \vec\theta +\lambda ||\vec\theta||_1 + \frac{\gamma}{2\sqrt t}||\vec\theta||_2^2 \right) $L1
正则化的情况下, $ \Psi(\vec\theta) = \lambda||\vec\theta||_1 $ 。设 $ h(\vec\theta) = \frac 12 ||\vec\theta||_2^2 $ ,它满足严格凸函数的条件。设 $ \beta^{(t)} = \gamma \sqrt t $ ,它满足非负非递减。则有:将其拆解为各维度的最小化问题,则有:
$ \theta_{i}^{(t+1)} = \arg\min_{\theta_i} \left(\bar g_i^{(t)}\theta_i +\lambda | \theta_i| + \frac{\gamma}{2\sqrt t} \theta_i^2 \right) $其中 $ \bar g_i^{(t)} = \frac 1t\sum_{s=1}^t g_i^{(s)} $ 为所有梯度的均值。
求解该方程,得到权重更新公式:
$ \theta_i^{(t+1)} = \begin{cases} 0,& \text{if}\quad |\bar g_i^{(t)}| \lt \lambda\\ -\frac{\sqrt t}{\gamma}\left(\bar g_i^{(t)} - \lambda\times\text{sgn}(\bar g_{i}^{(t)})\right),&\text{else} \end{cases} $因此当维度 $ i $ 上的累积梯度均值的绝对值小于 $ \lambda $ 时,发生阈值截断。
L1-RDA
和L1-FOBOS
的比较:对于
L1-FOBOS
,当 $ \left|\theta_i^{(t)} - \epsilon^{(t)}g_i^{(t)}\right| \le \epsilon^{(t+1/2)}\lambda $ 时执行梯度截断。通常选择 $ \epsilon^{(t+1/2)} $ 时随着时间 $ t $ 下降的,因此L1-FOBOS
的截断阈值是随着时间变化的。而
L1-RDA
的截断阈值 $ \lambda $ 是固定的常数,因此相比L1-FOBOS
更激进,也更容易产生稀疏性。L1-RDA
基于梯度的累积均值 $ \bar g_i^{(t)} $ 来判断,而L1-FOBOS
基于最近的单次梯度 $ g_i^{(t)} $ 来判断。而梯度累积均值比单次梯度更稳定。
L1-RDA
的更新过程中, $ \theta_i^{(t+1)} $ 与前一时刻的 $ \theta_i^{(t)} $ 无关,仅仅由梯度累积均值 $ \bar g_i^{(t)} $ 来决定。而
L1-FOBOS
的更新过程中, $ \theta_i^{(t+1)} $ 由前一时刻的 $ \theta_i^{(t)} $ 、 $ g_i^{(t)} $ 共同决定。
11.4 FTRL
实验证明:
L1-FOBOS
这类基于梯度下降的方法具有较高的精度,但是L1-RDA
却具有更好的稀疏性。Follow the Regularized Leader : FTRL
结合了两者的优点:即具有较好的稀疏性,又具有较高的精度。
$ \vec\theta^{(t+1)} = \arg\min_{\vec\theta} \left(\sum_{s=1}^t\mathbf{\vec g}^{(s)}\cdot \vec\theta + \lambda_1||\vec\theta||_1 + \lambda_2\frac 12 ||\vec\theta||_2^2+\frac 12 \sum_{s=1}^t\sigma^{(s)}||\vec\theta-\vec\theta^{(s)}||_2^2\right) $FTRL
综合考虑了FOBOS
和RDA
,其特征权重更新公式为:其中 $ \lambda_1,\lambda_2,\sigma^{(s)}\gt 0 $ 为超参数。
重新调整最优化目标为:
$ \left( \sum_{s=1}^t\left(\mathbf{\vec g}^{(s)} - \vec\theta^{(s)}\right)\cdot \vec\theta + \lambda_1||\vec\theta||_1 + \frac 12\left(\lambda_2 +\sum_{s=1}^t\sigma^{(s)}\right) ||\vec\theta||_2^2 + \frac 12 \sum_{s=1}^t\sigma^{(s)}||\vec\theta^{(s)}||_2^2 \right) $令 $ \mathbf{\vec z}^{(t)} = \sum_{s=1}^t\left(\mathbf{\vec g}^{(s)} - \vec\theta^{(s)}\right) $ ,考虑到最后一项与 $ \vec\theta $ 无关,因此有:
$ \vec\theta^{(t+1)} = \arg\min_{\vec\theta} \left(\mathbf{\vec z}^{(t)}\cdot \vec\theta+\lambda_1||\vec\theta||_1 + \frac 12\left(\lambda_2 +\sum_{s=1}^t\sigma^{(s)}\right) ||\vec\theta||_2^2 \right) $将其拆解为各维度的最小化问题,则有:
$ \theta_{i}^{(t+1)} = \arg\min_{\theta_i} \left(z_i^{(t)} \theta_i + \lambda_1 |\theta_i| + \frac{\lambda_2 + \sum_{s=1}^t\sigma^{(s)}}{2}\theta_i^2\right) $求解该最优化问题,得到
$ \theta_i^{(t+1)} = \begin{cases} 0,& \text{if}\quad |z_i^{(t)}|\lt \lambda_1\\ - \left(z_i^{(t)}-\lambda_1 \times\text{sgn}\left(z_i^{(t)}\right)\right)/\left(\lambda_2 + \sum_{s=1}^t\sigma^{(s)}\right),&\text{else} \end{cases} $FTRL
的参数更新方程:因此
L1
正则化项引入稀疏性,L2
正则化项平滑求解结果。对于
TG,FOBOS
等基于随机梯度下降的算法,学习率通常是全局的:每个维度的学习率都是相同的。如: $ \epsilon^{(t)} = \frac {1}{\sqrt t} $ 。RDA
算法没有学习率的概率,该算法未用到学习率。在
$ \epsilon^{(t)}_i = \frac{\alpha}{\beta + \sqrt{\sum_{s=1}^t\left(g_i^{(s)}\right)^2}} $FTRL
算法中,不同维度的学习率是单独考虑的Per-Coordinate Learning Rates
。这是由于:
- 如果某个特征的变化更快(梯度更大),说明损失函数在这一带变化比较剧烈,则我们学习的步伐减缓(学习率更小)。
- 如果某个特征变化更慢(梯度更小),说明损失函数在这一带非常平缓,则我们学习的步伐可以加快(学习率更大)。
同时 $ \sigma^{(t)} $ 也是每个维度不同。令:
$ \sigma^{(t)}_i = \frac{1}{\epsilon_i^{(t)}} - \frac{1}{\epsilon_i^{(t-1)}}\gt 0 $则有:
$ \sum_{s=1}^t\sigma_i^{(t)} = \frac{1}{\epsilon_i^{(t)}}= \frac{\beta + \sqrt{\sum_{s=1}^t\left(g_i^{(s)}\right)^2}}{\alpha} $.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论