在线最优化求解(Online Optimization)之一:预备篇

在线最优化求解(Online Optimization)之一:预备篇

动机与目的

在实际工作中,无论是工程师、项目经理、产品同学都会经常讨论一类话题:“从线上对比的效果来看,某某特征或因素对xx产品的最终效果有很大的影响”。这类话题本质上说的是通过已有的数据反映出某些特定的因素对结果有很强的正(或负)相关性。而如何定量计算这种相关性?如何得到一套模型参数能够使得效果达到最优?这就是最优化计算要做的事情。

举一类典型点的例子:在推荐和广告计算中,我们经常会需要对某些值进行预测,例如在一条推荐或广告在曝光之前先预测用户是否会产生点击(CTR预估),或者是否会由此产生某些转换(RPM预估)。这类问题可以表示为:针对一个输入,通过某个函数计算(预测)输出 。根据值为连续的还是离散的,预测问题被划分成回归问题(Regression)和分类问题(Classification)。而利用已有的样本数据 训练 的过程往往转换成一个最优化求解的过程。

无论是线性回归(Linear Regression)、逻辑回归(Logistic Regression)、支持向量机(SVM)、深度学习(Deep Learning)中,最优化求解都是基本的步骤。常见的梯度下降、牛顿法、拟牛顿法等属于批量处理的方法(Batch),每次更新都需要对已经训练过的样本重新训练一遍。而当我们面对高维高数据量的时候,批量处理的方式就显得笨重和不够高效,因此需要有在线处理的方法(Online)来解决相同的问题。关于在线最优化问题(Online Optimization)的论文比较多,逐一查找阅读费时费力,那么本系列文章就以高维高数据量的应用场景中比较看重的稀疏性作为主线,逐一介绍几个在线最优化求解算法,并进行推导,力求讲清楚算法的来龙去脉,以及不同算法之间的区别和联系,达到融会贯通。在各个算法原理介绍之后,都会给出该算法的工程实现伪代码,可以用于实际工作的参考。

本系列的主要内容如下:

预备篇:关于最优化求解的预备知识

截断梯度法(TG):以简单的截断思路构造稀疏模型

FOBOS (Forward-Backward Splitting):TG在特定条件下的特殊形式

RDA (Regularized Dual Averaging):微软多年的研究成果,能较好地在精度与稀疏性间进行权衡

FTRL (Follow the Regularized Leader):Google的研究成果,结合了FOBOS和RDA的优点,并且能针对不同维度单独进行训练

废话少说,下面进行先进入预备知识的介绍。

1. 凸函数

如果null是定义在N维向量空间上的实值函数,对于在null的定义域null上的任意两个点nullnull,以及任意[0,1]之间的值 都有:

null
null

那么称null是凸函数(Convex)[1]。一个函数是凸函数是它存在最优解的充分必要条件。 此外,如果null满足:

null
null

null是严格凸函数(Strict Convex)。如图1所示,(a)为严格凸函数,(b)为凸函数。严格凸函数&凸函数

图1 凸函数

2. 拉格朗日乘数法及KKT条件

通常我们需要求解的最优化问题有如下三类:

(1) 无约束优化问题:

null

含义是求解null,令目标函数null最小。

(2) 有等式约束的优化问题:

null

含义是在n个等式约束的条件下,求解null,令目标函数null最小。

(3)  有不等式约束的优化问题:

null

含义是在n个等式约束以及m个不等式约束的条件下,求解null,令目标函数null最小。

针对无约束最优化问题,通常做法就是对null求导,并令,求解可以得到最优值。如果null为凸函数,则可以保证结果为全局最优解。

针对有等式约束的最优化问题,采用拉格朗日乘数法(Lagrange Multiplier)[2]进行求解:通过拉格朗日系数把等式约束和目标函数组合成为一个式子,对该式子进行最优化求解:

 其中,。相当于将有等式约束的最优化问题转换成了无约束最优化求解问题,解决方法依旧是对的各个参数求偏导,并令其等于,联立等式求解。

针对有不等式约束的最优化问题,常用的方法是KKT条件(Karush-Kuhn-Tucker Conditions)[3],同样地,把所有的不等式约束、等式约束和目标函数全部写为一个式子:

KKT条件是说最优值必须满足以下条件:

其中,,。KKT条件是求解最优值的必要条件,要使其成为充分必要条件,还需要为凸函数才行。 在KKT条件中,这个条件最有趣,因为,如果要满足这个等式,需要或者。我们在后续篇章中会运用这个性质。

3. 从Batch到Online

我们面对的最优化问题都是无约束的最优化问题(有约束最优化问题可以利用拉格朗日乘数法或KKT条件转换成无约束最优化问题),因此我们通常可以将它们描述成:

    公式(1)

这里为观测样本集合(训练集);为为第j条样本的特征向量;为预测值;为特征向量到预测值的映射函数;为最优化求解的目标函数,也称作损失函数;为特征权重,也就是我们需要求解的参数。损失函数通常可以分解为各样本损失函数的累加,即:

以线性回归和逻辑回归为例,它们的映射函数和损失函数分别为:

在上一节中我们给出了无约束最优化问题解析解的求法。而在我们实际的数值计算中,通常做法是随机给定一个初始的,通过迭代,在每次迭代中计算损失函数在当前的下降方向,并更新直到损失函数稳定在最小的点[4]。例如著名的梯度下降法(GD, Gradient Descent)就是通过计算损失函数的在当前处的梯度[5](Gradient),以梯度的反方向作为下降方向更新,如果损失函数是一个非平滑的凸函数(Non-smooth convex),在不可导处用次梯度[6](Subgradient)方向的反方向作为下降方向。算法如下[7]:

Algorithm 1. Batch Gradient Descent

GD是一种批量处理的方式(Batch),每次更新W的时候都要扫描所有的样本以计算一个全局的梯度

考虑另一种权重更新策略[7]:

Algorithm 2. Stochastic Gradient Descent

在算法2中,每次迭代仅仅根据单个样本更新权重 ,这种算法称作随机梯度下降[8](SGD, Stochastic Gradient Descent)。

与GD相比较,GD每次扫描所有的样本以计算一个全局的梯度,SGD则每次只针对一个观测到的样本进行更新。通常情况下,SGD能够比GD“更快”地令 逼近最优值。当样本数 特别大的时候,SGD的优势更加明显,并且由于SGD针对观测到的“一条”样本更新 ,很适合进行增量计算,实现梯度下降的Online模式(OGD, Online Gradient Descent)。

4. 正则化

正则化(Regularization)的意义本质上是为了避免训练得到的模型过度拟合(overfitting)训练数据。我们用图2来说明什么是过拟合,该图来自于王科的微博(@王小科科科)。图2是一个局部加权线性回归(Locally weighted linear regression)的训练结果,当学习度为1时,相当于进行线性回归,这时候模型与训练样本以及实际曲线拟合得都不够好,模型处于欠拟合(underfitting)状态;当学习度逐渐增加到4的过程中,模型逐渐与实际曲线吻合;随着学习度继续增加,越来越多的样本直接落到模型曲线上(模型拟合训练数据),但是模型却与实际曲线相差越来越大,出现了过拟合。

欠拟合&过拟合

 图2. 欠拟合 & 过拟合

 过拟合体现出来的现象就是特征权重 的各个维度的绝对值非常大:一些大正数,一些大负数。这种模型虽然能够很好匹配样本(如图2中Degree = 20的情况),但是对新样本做预测的时候会使得预测值与真实值相差很远。

为了避免过拟合的情况,我们通常在损失函数的基础上加一个关于特征权重 的限制,限制它的模不要太大,如果用表示特征权重的一种求模计算,那么公式(1)转换成:

其中称作正则化因子(Regularizer),是一个关于求模的函数,我们常用正则化因子有L1和L2正则化:


不管是使用L1还是L2正则化,其基本原理都是一样的,即在最小化损失函数的同时,还要考虑的模带来的贡献,从而避免的维度上取一些绝对值很大的值。

L1和L2正则化的区别主要有两个:(1) L1正则化在0处不可导,而L2正则化可导。好在无论是L1还是L2正则化本身都是凸函数,因此在计算L1正则化的梯度方向的可以采用次梯度代替;(2) 在Batch模式下,L1正则化通常产生更加稀疏(Sparse)的模型,W的更多维度为0,这些为0的维度就代表了不是很相关的维度,从而起到了特征选择(Feature Selection)的目的。

我们对稀疏性(Sparsity)比较感兴趣。除了特征选择的作用以外,稀疏性可以使得预测计算的复杂度降低。那么为什么L1正则化会产生这种稀疏性?通常可以根据文献[9]中的理解,如图3所示:假如特征维度N=2,那么L1正则化引入的约束条件是 只能取转置方形中的值(图3-(a)中黑色方框内),L2正则化对应的是一个圆形区域(图3-(b)中黑色圆形区域),图3中绿色部分代表损失函数的等高线,等高线与约束区域的首次相交的地方就是最优解。可以看到,由于L1正则化的约束区域与坐标轴相交的地方都有“角”出现,等高线更容易在这个“角”上与约束区域相交,导致另一个维度上的权重值为0;而L2正则化则没有这种性质,因为没有“角”,等高线在坐标轴上与约束区域相交的概率大为减小。这样从直观上就解释了L1正则化更容易产生稀疏性的原因。

L1正则化与L2正则化产生稀疏解示意图

图3. L1正则化与L2正则化产生稀疏解示意图

 那么在Online模式下呢,不同于Batch,Online中每次 的更新并不是沿着全局梯度进行下降,而是沿着某个样本的产生的梯度方向进行下降,整个寻优过程变得像是一个“随机”查找的过程(SGD中Stochastic的来历),这样Online最优化求解即使采用L1正则化的方式,也很难产生稀疏解。后面介绍的各个在线最优化求解算法中,稀疏性是一个主要的追求目标。

参考文献

[1]  Convex functionhttp://en.wikipedia.org/wiki/Convex_function
[2]  Lagrange multiplier. http://en.wikipedia.org/wiki/Lagrange_multiplier
[3]  Karush-Kuhn-Tucker conditions. http://en.wikipedia.org/wiki/Karush-Kuhn-Tucker_conditions
[4]  冯扬. 并行逻辑回归.http://blog.sina.com.cn/s/blog_6cb8e53d0101oetv.html
[5]  Gradient. http://sv.wikipedia.org/wiki/Gradient
[6]  Subgradient. http://sv.wikipedia.org/wiki/Subgradient
[7]  Andrew Ng. CS229 Lecture notes. http://cs229.stanford.edu/notes/cs229-notes1.pdf
[8]  Stochastic Gradient Descent.http://en.wikipedia.org/wiki/Stochastic_gradient_descent
[9]  T. Hastie, R. Tibshirani & J. Friedman. The Elements of Statistical Learning, Second Edition: Data Mining, Inference, and Prediction. Springer Series in Statistics. Springer, 2009

原文地址:https://www.cnblogs.com/yymn/p/4686995.html