FTRL的理解

article/2025/9/27 11:26:41

个人理解:FTRL是针对LR学习器,设计了一种独特的梯度下降更新方法

从Logistic Regression到FTRL

Logistic Regression在Linear Regression的基础上,使用sigmoid函数将y=θx+b的输出值映射到0到1之间,且log(P(y=1)/P(y=0)) = θx+b。并且在靠近0.5处坡度较大,使两侧快速趋于边界。

Hypothesis可以认为是y=1时的概率,表示为:


如果使用与线性回归相同的平方损失函数函数,那么是“non-convex”的,不利于求得最优解。因此选择对数似然损失函数(log-likelihood loss function)作为逻辑回归的Cost Function:

将两式合并可以得到Cost Function(最大似然的负数就是损失函数,最大化似然函数和最小化损失函数是等价的):

正则化

为控制模型的复杂度,通常在损失函数中加L1或L2范数做正则化(regularization),通过惩罚过大的参数来防止过拟合。L1范数是指向量中各个元素绝对值之和,也称为Lasso regularization;L2范数是指向量中各个元素平方之和, 也称为Ridge Regression。
L1正则化产生稀疏的权值,因此可用来做特征选择,在高维数据中使用更为广泛一些;L2正则化产生平滑的权值(还有一种说法认为L2限制了解的空间,因此可以加速收敛速度,但实际作用并不大)。L1在实际中使用的更多一些,L2和L1要配合使用,增加L2会减弱L1的系数作用。

数学公式解释

  • L1的权值更新公式为wi = wi – η * 1, 权值每次更新都固定减少一个特定的值(学习速率),那么经过若干次迭代之后,权值就有可能减少到0。
  • L2的权值更新公式为wi = wi – η * wi,虽然权值不断变小,但每次减小的幅度不断降低,所以很快会收敛到较小的值但不为0。

几何空间解释


在二维空间中,左边的方形线上是L1中w1/w2取值区间,右边得圆形线上是L2中w1/w2的取值区间,圆圈表示w1/w2取不同值时整个正则化项的值的等高线。从等高线和w1/w2取值区间的交点可以看到,L1中两个权值倾向于一个较大另一个为0,L2中两个权值倾向于均为非零的较小数。

求解方法

Gradient Descent

梯度下降法通过沿着目标函数梯度相反的方向更新参数达到最小化目标函数的目的。梯度下降的最终点并非一定是全局最小点,受初始点的选择影响可能会陷入局部最小点。

根据g(z)y=lnx的偏导y'=1/x,对LR的损失函数求偏导,可以得到梯度:
 
更新时θi会向着全局梯度最小的方向进行减少:

按照每次更新使用的样本量,梯度下降分为批量梯度下降法(Batch Gradient Descent)、随机梯度下降法(Stochastic Gradient Descent)、小批量梯度下降法(Mini-batch Gradient Descent)

Batch Gradient Descent:

更新每一参数时都使用所有的样本来进行更新。

  • 优点:凸函数保证得到全局最优解;易于并行实现。
  • 缺点:大数据更新速度慢,内存无法装下所有数据;无法实时更新

Stochastic Gradient Descent 

利用每个样本的损失函数对θ求偏导得到对应的梯度

  • 优点: 迭代速度快;可用于实时更新
  • 缺点: 目标函数zigzag波动大;不保证得到全局最优解,但是随着更新逐渐缩小步长几乎可以达到与BGD相同的效果;不利于并行实现

Mini-batch Gradient Descent

MBGD在BGD和SGD之间做了取舍,既保证了高效的训练速度,又保证了稳定的收敛,是大数据集下常用的方法。batch的大小一般取50-256之间。

L-BFGS & OWLQN

  1. 梯度下降法是基于目标函数梯度进行搜索,收敛速度是线性的。
  2. 牛顿法同时使用一阶段数和二阶导数(Hessian矩阵)进行搜索,收敛速度快。尤其在最优值附近时,收敛速度是二次的。牛顿法需要计算Hessian矩阵的逆矩阵,当维度过高矩阵稠密时运算和存储量巨大。
  3. 拟牛顿法(Quasi-Newton)用一个近似矩阵来替代逆Hessian矩阵。BFGS是拟牛顿法的一种,使用”Backtracking line search”搜索步长,使用”two loop recursion”更新参数。
  4. BFGS虽然不需要计算Hessian矩阵了,但是保存历史记录仍需要消耗大量的内存。L-BFGS,即限定内存的BFGS算法,由最近的m次输入变量和梯度变量的差值近似更新矩阵。
  5. OWLQN(Orthant-Wise Limited-memory Quasi-Newton)是在L-BFGS基础上解决L1-norm不可微提出的,每次迭代都不改变参数的正负性,使得正则项变成可微的。对于需要变换符号的参数,将其置为0,通过在下次迭代中选择合适的象限来改变参数的正负。

Online Learning

使用流式样本进行模型的实时训练时,OGD(online gradient descent)不能非常高效的产生稀疏解,常见的做稀疏解的途径:

  • 简单截断:设定一个阈值,每online训练K个数据截断一次。无法确定特征确实稀疏还是只是刚刚开始更新。
  • 梯度截断(Truncated Gradient): 当t/k不是整数时,采用标准的SGD,当t/k是整数时,采取截断技术。
  • FOBOS(Forward-Backward Splitting):由标准的梯度下降和对梯度下降的结果进行微调两部分组成,确保微调发生在梯度下降结果的附近并产生稀疏性。FOBOS可以看做TG在特定条件下的特殊形式随着的增加,截断阈值会随着t的增加逐渐降低。
  • RDA(Regularized Dual Averaging): 是一种非梯度下降类方法,判定对象是梯度的累加均值,避免了由于某些维度由于训练不足导致截断的问题;RDA的“截断阈值”是常数,截断判定上更加aggressive,更容易产生稀疏性,但会损失一些精度。

FTRL(Followed the Regularized Leader)

FTRL综合考虑了FOBOS和RDA的优点,兼具FOBOS的精确性和RDA优良的稀疏性,Google 2013年发布在KDD的《Ad Click Prediction: a View from the Trenches》给出了详细的工程实践。

思想及实现

特征权重更新公式为:

第一部分为累计梯度和,代表损失函数下降的方向;第二部分表示新的结果不要偏离已有结果太远;第三部分是正则项,用于产生稀疏解。将第二项展开可以表示为:

因此只需要保存第一部分的累加和,并在每轮更新前都进行累计就可以完成权重的更新。更新算法如下:

Per-Coordinate根据每个特征在样本中出现的次数来推算它的学习率。如果出现的次数多,那么模型在该特征上学到的参数就已经比较可信了,所以学习率可以不用那么高;而对于出现次数少的特征,认为在这个特征上的参数还没有学完全,所以要保持较高的学习率来使之尽快适应新的数据。

Memory Saving策略

  • Probabilistic Feature Inclusion:丢弃训练数据中很少出现的特征。离线训练可以通过预处理过滤,这里给出了两个在线训练的方法:
    • Poisson Inclusion:当一个新特征出现时,以固定概率P接受并更新
    • Bloom Filter Inclusion:用布隆过滤器记录某个特征是否出现了n次,同样也是基于概率的,因为布隆过滤器有一定的概率误判
  • Encoding Values with Fewer Bits:由于需要保存的数据一般处于[-2,2]之间所以使用64位浮点数存储浪费了空间。使用q2.13编码保存,即小数点前寸2位小数点后寸13位正负号寸一位。这样可以节省75%的内存,并且准确度基本没有损失。
  • Training Many Similar Models:当需要训练多个模型的变种时,每个模型都单独训练会浪费很多资源;如果把一个固定的模型作为先验学习残差,无法处理移除或替换特征的情况。经过观察发现:每一维的特征都跟特定的数据有关,每个模型的变种都有自己独特的数据。因而,可以用一张hash表来存储所有变种的模型参数,以及该特征是哪个变种模型。
  • A single Value Structure:当模型需要增加或者减少一批特征时,此时共享的特征只保留一份,用一个位数组来记录某个特征被哪些模型变种共享。对于一个样本,计算所有模型的更新值并取平均值更新共享参数。
  • Computing Learning Rates with Counts:使用正负样本的比例来近似计算梯度的和。
  • Subsampling Training Data:负样本按r的概率采样在训练时乘一个1/r的权重来弥补负样本的缺失。

参考

  • coursera斯坦福机器学习笔记
  • Sparsity and Some Basics of L1 Regularization 给出了详细的几何解释及L1的求解
  • 为什么L1稀疏,L2平滑? 给出了数学角度的解释
  • An overview of gradient descent optimization algorithms
  • 梯度下降法的三种形式BGD、SGD以及MBGD
  • Logistic Regression的几个变种
  • 理解L-BFGS算法
  • 牛顿法和拟牛顿法 – BFGS, L-BFGS, OWL-QN
  • 逻辑回归及OWLQN的算法和实现
  • 各大公司广泛使用的在线学习算法FTRL详解
  • 在线最优化求解(Online Optimization)系列

http://chatgpt.dhexx.cn/article/qCLpgOMo.shtml

相关文章

2021-09-08FTRL 跟随正确的领导者

2.2.3 FTRL FTRL(Follow the Regularized Leader)是一种优化算法,在处理诸如逻辑回归 之类的带非光滑正则化项的凸优化问题上性能出色,自 2013 年谷歌发表 FTRL 算 法的工程性实现论文后[17],业界纷纷上线该算法&…

python编程之np.argmin()用法解析

疑惑 np.argmin()究竟是干嘛用的? 解惑 给出水平方向最小值的下标; list最小的值是3,对应的下标是2; list1展平是9,8,7,66,23,55,4,23,33;最小的值是4,对应的下标是6

关于argmin和argmax的一点说明

一、定义 首先我们应该知道,arg是元素(变元)argument的英文缩写。 在数学中,arg max的参数是指使函数值最大化的某个函数域的点。与全局最大值相反,其指的是函数的最大输出 ,同理,arg min指的是…

clickhouse的argMin()和argMax()函数

1.语法规则 函数语法argMin(arg,val)计算最小值的arg值。如果val的最小值有几个不同的arg值,则遇到的第一个值是输出。argMax(arg,val)计算最大值的参数值。如果存在多个不同的arg值来表示val的最大值,则遇到的第一个…

LaTeX 书写 argmax and argmin 公式

LaTeX 书写 argmax and argmin 公式 1. arg max or argmax For a real-valued function f f f with domain S S S, arg ⁡ max ⁡ f ( x ) x ∈ S \underset{x\in S}{{\arg\max} \, f(x)} x∈Sargmaxf(x)​ is the set of elements in S S S that achieve the global maxi…

torch.argmin()的使用举例

参考链接: argmin(dimNone, keepdimFalse) → LongTensor 参考链接: torch.argmin() 代码实验举例: Microsoft Windows [版本 10.0.18363.1256] (c) 2019 Microsoft Corporation。保留所有权利。C:\Users\chenxuqi>conda activate ssd4pytorch1_2_0(ssd4pytorch1_2_0) C:\U…

numpy.argmin()||argmax()结构及用法||详解axis

numpy.argmin(a, axisNone, outNone)官方文档 参数详解 a : array_like 输入数组 axis : int, optional 默认输入数组展平,否则,按照指定的axis方向 按照指定轴,可以理解为将数据投影到这个轴上。 out : array, optional如果设置了某个数…

ARG MIN的含义是什么?

ARG MIN的含义是什么? 最通俗的理解:表示使目标函数取最小值时的变量值 From Wikipedia In mathematics, arg max (or argmax) stands for the argument of the maximum, that is to say, the set of points of the given argument for which the value…

Matlab中关于argmax、argmin函数的使用

1、在matlab的现有函数中,并没有argmax,argmin函数可以直接调用,要根据这两个函数的实际意义,自己编写程序进行计算 2、我要求解的函数是下式: 其中mad(theta)和amd(theta)两个均为1 * 11的double型向量 括号里得到一…

argmax和argmin的理解

1、符号 :argmax: 2、符号 :argmin:

argmin ,argmax函数

在数学中,ARG MAX(或ARGMAX)代表最大值,即给定参数的点集,给定表达式的值达到其最大值: 换一种说法, 是f(x)具有最大值M的x的值的集合。例如,如果f&#xff0…

全网最详细numpy的argmin与argmax解析(一次性理解np.argmin)

本文以np.argmin()进行讲解,np.argmax()与之类似,np.argmin()求最小值对应的索引,np.argmax()求最大值对应的索引 首先看一下官方注释 def argmin(a, axisNone, outNone):"""Returns the indices of the minimum values alo…

矩阵的内积和外积,三向量混合积

矩阵的内积指的是矩阵点乘,即矩阵的对应元素相乘;矩阵的外积指的是矩阵的叉乘,即矩阵相乘,比如CA*B,则A的列数要与B的行数一致,例如A为[m,n], B 为[n,k], 则C为 [m,k].三向量混合积的…

矩阵与向量的乘积

下面是定义: Ax的结果会让我们想起之前的线性系统和多元一次方程组 也就是说,向量x在经过矩阵A的变换后,得到了向量B 下面以两种观点来看矩阵与向量的乘积。 row aspect 矩阵的第n行与向量做内积,然后将结果放在第n行 2.colum…

【矩阵论】内积空间与等距变换(2)

内积空间与等距变换之正交补空间与等距变换 一. 正交补空间的定义及概念 1. 正交关系的定义 (1)向量正交于子空间 若某空间V中的向量α垂直于V的子空间W中的任意一个向量,就说该向量α垂直于子空间W。 (2)子空间正交…

【矩阵论】内积空间与等距变换(1)

内积空间与等距变换之基本概念 前面有关于“线性空间与线性变换”的概念主要是对几何空间中的线性运算(数乘和加法运算)进行了推广; 不论我们讨论线性空间的什么性质和定义,其本质都是围绕着线性运算进行展开的。 但是在几何空间…

矩阵分析L3内积空间

一、内积空间的概念 1.概念 两个向量的点乘操作应该算内积空间 2.性质 3.类型 Rn上的标准内积 因为要对应位置相乘,所以后一个转置了一下 Rnn上的内积 同样也是对应位置相乘 Rmn上的内积 转置后再相乘,因为对应 二、向量的长度及夹角 1.向量长度 …

矩阵分析(三)内积空间

根据前面的知识,可知,在线性空间中,向量之间的基本运算只有加法和数乘向量两种运算,而向量的度量在线性空间理论中没有反映,这局限了线性空间理论的应用。在本篇中,我们将借助于内积把度量概念引入到线性空…

矩阵论 内积空间几何表示图解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/baimafujinji/article/details/6478123 一、内积的定义 例1: (对于实数而言&#xff…

矩阵的各种乘积

矩阵的各种乘积 First Name Last Name Points Jill 1.向量点积。变成一个数。 2.矩阵点积。矩阵的点积是每行每列的点积的矩阵。 Eve 94 John 80 Adam Johnson 67 操作 数学符号 举例 说明 点积(dot product),也称内积(inner product),标量积&am…