在线最优化求解(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. 凸函数

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

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

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

图1 凸函数

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

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

(1) 无约束优化问题:

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

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

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

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

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

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

针对有等式约束的最优化问题,采用拉格朗日乘数法(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]:

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

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

在算法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正则化更容易产生稀疏性的原因。

图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

在线最优化求解(Online Optimization)之一:预备篇的更多相关文章

  1. 在线最优化求解(Online Optimization)之二:截断梯度法(TG)

    在线最优化求解(Online Optimization)之二:截断梯度法(TG) 在预备篇中我们做了一些热身,并且介绍了L1正则化在Online模式下也不能产生较好的稀疏性,而稀疏性对于高维特征向量以 ...

  2. 在线最优化求解(Online Optimization)之五:FTRL

    在线最优化求解(Online Optimization)之五:FTRL 在上一篇博文中中我们从原理上定性比较了L1-FOBOS和L1-RDA在稀疏性上的表现.有实验证明,L1-FOBOS这一类基于梯度 ...

  3. 在线最优化求解(Online Optimization)之四:RDA

    在线最优化求解(Online Optimization)之四:RDA 不论怎样,简单截断.TG.FOBOS都还是建立在SGD的基础之上的,属于梯度下降类型的方法,这类型方法的优点就是精度比较高,并且T ...

  4. 在线最优化求解(Online Optimization)之三:FOBOS

    在线最优化求解(Online Optimization)之三:FOBOS FOBOS (Forward-Backward Splitting)是由John Duchi和Yoram Singer提出的[ ...

  5. jQuery在线选座订座(影院篇)

    原文:jQuery在线选座订座(影院篇) 我们在线购票时(如电影票.车票等)可以自己选座.开发者会在页面上列出座次席位,用户可以一目了然的看到可以选择的座位及支付.本文以电影院购票为例,为您展示如何选 ...

  6. 微信小程序教学第二章:小程序中级实战教程之预备篇 - 项目结构设计 |基于最新版1.0开发者工具

    iKcamp官网:http://www.ikcamp.com 访问官网更快阅读全部免费分享课程:<iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享>. ...

  7. 【Spring源码分析】预备篇

    前言 最新想学习一下Spring源码,开篇博客记录下学习过程,欢迎一块交流学习. 作为预备篇,主要演示搭建一个最简单的Spring项目样例,对Spring进行最基本梳理. 构建一个最简单的spring ...

  8. 添物零基础到大型全栈架构师 不花钱学计算机及编程(预备篇)— C语言编程基础

    ​C语言介绍 C语言基本是每个编程人员必学的一面语言,很好掌握,是理解编程的关键.很多编程语言基于其编写或者基于此语言的衍生品编写. C语言是人机交互的一个基础语言之一,虽然是之一,单一般其实就是唯一 ...

  9. 预备篇 I :范畴与函子

    拓扑是研究几何图形或空间在连续改变形状后还能保持不变的一些性质的一个学科.它只考虑物体间的位置关系而不考虑它们的形状和大小. 拓扑是集合上的一种结构. 拓扑英文名是Topology,直译是地志学,最早 ...

随机推荐

  1. if条件判断语句的不同

    let number = ["a":1, "b":2, "c":3]; if let num = number["d"] ...

  2. js中的scroll和offset 的使用比较

    1.offsetTop     :当前对象到其上级层顶部的距离.不能对其进行赋值.设置对象到页面顶部的距离请用style.top属性. 2.offsetLeft    :当前对象到其上级层左边的距离. ...

  3. IC卡的逻辑卡号和市民卡卡号

    CPU卡,IC卡等的卡号与卡在出厂时的卡号.

  4. The breakpoint will not currently be hit. No symbols have been loaded for this document."

    C# exe calls function from a native C++ DLL, and breakpoints set inside C++ source code cannot be hi ...

  5. iPhone Tableview分批显示数据

    //非原创   iPhone Tableview分批显示数据是本文要介绍的内容,主要讲解的是数据的显示.iPhone屏幕尺寸是有限的,如果需要显示的数据很多,可以先数据放到一个table中,先显示10 ...

  6. 开始进入Windows Phone 8开发

    和大家一起分享从零开始,入手Windows Phone 8开发,大家一起来吧!

  7. 【风马一族_Android】让app上传到Android市场的网站介绍

    豌豆荚  开发者中心 http://open.wandoujia.com/account/info China app http://www.chinaapp.org

  8. winform 清空界面所有控件已输入的值

    rivate void btnClear_Click(object sender, EventArgs e){ ClearCntrValue(this.pnlContent);}   复制代码/// ...

  9. LINQ to XML(1)

    LINQ to XML可以两种方式和XML配合使用.第一种方式是作为简化的XML操作API,第二种方式是使用LINQ查询工具.下面我使用的是第二种方式. 主要内容:用LINQ查询语句对XML文件里的数 ...

  10. WordPress 主题开发 - (一) 前言 待翻译

    原文出自: http://themeshaper.com/2012/10/22/the-themeshaper-wordpress-theme-tutorial-2nd-edition/ THE TH ...