两个故事
从前,网络的一头住着个挨踢男,另一头住着一小编。每天小编写一封垃圾邮件给挨踢男。苦命的挨踢男日日分析邮件设计过滤器来过滤垃圾邮件。但聪明的小编每天检查邮件有没有被挨踢男收到,不断增加更多的甜言蜜语来忽悠挨踢男。较量一直进行下去,挨踢男是否能摆脱小编的骚扰呢?
这个故事都属于博弈论里的重复游戏(repeated game),它是对在线学习(online learning)最贴切的刻画:数据不断前来,我们需根据当前所能得到的来调整自己的最优策略。
熟悉机器学习的稳拿可能注意到了在线学习与在机器学习(统计学习)里所讨论的(离线)学习的区别。前者认为数据的分布是可以任意的,甚至是为了破坏我们的策略而精心设计的,而后者则通常假定数据是服从独立同分布。这两种不同的假设带来不一样的设计理念和理论模型。
统计学习考虑算法所求得到的模型与真实模型的差距。数据由真实模型产生,如果能有无限数据、并在包含有真实模型的空间里求解,我们大概率能求得真实模型。但实际上我们只有有限数据,且只能考虑某类模型,因此很可能我们得不到真实解。所以,好的算法是能够用不多的数据来得到一个效果不错的模型。
在线学习的一个主要限制是当前只能看到当前的和过去的数据,未来是未知,有可能完全颠覆现在的认知。因此,对在线学习而言,它追求的是知道所有数据时所能设计的最优策略。同这个最优策略的差异称之为后悔(regret):后悔没能一开始就选对最优策略。我们的希望是,时间一久,数据一多,这个差异就会变得很小。因为不对数据做任何假设,最优策略是否完美我们不关心(例如回答正确所有问题)。我们追求的是,没有后悔(no-regret)。
如果与统计学习一样对数据做独立同分布假设,那么在线学习里的最优策略就是在得知所有数据的离线学习所能得到最优解。因此在线学习可以看成是一种优化方法:随着对数据的不断访问来逐步逼近这个离线最优解。
很早以前优化界都在追求收敛很快的优化算法,例如牛顿迭代法。而最近learning的人却发现,好的优化算法很可能是坏的learning算法。这类算法虽然迭代一些次就能算出一个精度很高的解,但每一步都很贵,而且数据一大根本算不动。而向来被优化界抛弃的在线学习、随机优化算法(例如stochastic gradient descent),虽然收敛不快,不过迭代代价很低,更考虑到learning算法的解的精度要求不高,所以在实际应用中这些方法通常比传统的优化算法快很多,而且可以处理非常大的数据。
随便看看这些年ICML,NIPS,JMLR上online, stochastic关键字文章的数量就知道这类算法的大红大紫了。一个通常的规律是learning界火过的topic在computer vision,data mining等偏应用的方向上会接着火几年,所以肯定CVPR, ICCV, KDD之类会议上还会有茫茫多这类paper。因为最近一直在做这个topic,所以想乘自己知识还新,就自己的理解来谈谈它。希望能用通俗的语言为大家介绍这个topic,为国内learning界做做贡献。
当然,相对于老地主online learning,stochastic绝对是新贵。我会接下来谈这类算法,以及他们动辄数页的convergence rate的证明。我的另外一个topic是大规模矩阵的低秩近似,也算大规模机器里面的一个重要问题,我想有时间也来浅出一下。
下面是有公式的正文。
准确点的定义
我们把挨踢男都称之为learner,并从learner的角度来看问题。在时刻,learner收到问题
,这可以是一封邮件,或者一个样本。learner然后从策略集
中选择一个策略
,例如一个过滤器规则,或是一个线性分类器,并且对问题做出判断
。learner然后收到正确答案
。
用损失函数来衡量learner在
时刻做出不正确判断时所遭受的损失,例如最常用的平方误差损失是
。为了方便起见,简记为
。那么在前
轮learner遭受的总损失就是
。记得我们说过用regret来衡量learner对一开始没能采用最优策略的后悔,记为
,有
learner的目标就是每次挑不错的来使得
最小。一个自然的问题是,
可能小于0吗?好吧,是可以的。毕竟最优策略是要固定
,而如果我们每次都能选很好的
来适应问题
,可能总损失会更小。但这非常难。因为我们是要定好策略
,才能知道正确答案
。如果这个问题和以前的很不一样,答案也匪夷所思,那么猜对它而且一直都猜对的概率很小。而对于最优策略来说,它能事先知道所有问题和答案,所以它选择的最优策略的总损失较小的可能性更大。所以,我们一般只是关心平均regret
是不是随着
变大而变小。我们称一个online算法是不是no-regret,或者说online learnable的,意味着
这个定义不是很准确,因为问题是随机给的,所以这里我们要考虑最坏情况(小编写最狠的邮件)。为了符号的简单,就免去精确的数学定义了。(事实上,除非是统计人写的文章,优化或者机器学习的文章很多采用这种简单的写法)。
听专家的话
no-regret是不是很难达到呢?事实证明很多简单的算法都是no-regret。举个最经典的例子,假设我们有个专家,他们在每轮问题都会给出的答案。简单起见假设答案就两种,0和1。平方损失在这里就是0-1损失函数,答案正确损失为0,否则为1.
先考虑最简单的情况:假设至少有一个完美专家,她永远给出正确的答案。那么什么才是learner的好策略呢?最简单的很work:看多数专家怎么说罗。learner在时刻先挑出前
轮一直是给正确答案的专家们,然后采用他们中多数人给出的那个答案。
此方法被称做Halving Algorithm。记是前
轮一直是给正确答案的专家们的集合,
是这些专家的个数。如果learner在时刻
给出了错误的答案,那么意味着
中大部分专家都给了错误答案,所以下一时刻learner参考的专家就会少一半,既
。因为完美专家的存在,所以
不可能无限变小使得小于1,所以learner不能无限犯错。事实上,
至多有
次变小机会,所以learner最多有
的损失。另一方面,最优策略当然是一直选中一位完美专家,总损失为0,所以regret的上界是个常数
现在考虑并没有传说中的完美专家存在的情况。这时维护的做法就不行了,我们使用一个稍复杂些的策略。记第
个专家为
,对其维护一个信任度
,且使得满足
。在
时刻learner以
的概率挑选专家
,并用她的答案来做作为
时刻的答案。
关键是在于如何调整信任度。直观上来说,对于在某一轮预测不正确的专家,我们需降低对她们的信任度,而对预测正确的,我们则可以更加的相信她们。一种常见的调整策略是基于指数的。我们先维护一个没有归一化(和不为1)的信任度。一开始大家都为1,
. 在
时刻的一开始,我们根据
专家在上一轮的损失,记为
,来做如下调整:
这里是学习率,越大则每次的调整幅度越大。然后再将
归一化来得到我们要的分布:
。此算法被称之为Exponential Weights或者Weighted Majority。
基于指数的调整的好处在于快速的收敛率(它是强凸的),以及分析的简单性。我们有如下结论:如果选择学习率,那么
证明先分析,其上界是关于最优策略的损失,下界是关于learner的损失,移项就得regret的上界(online/stochastic算法的收敛性分析大都走这种形似)。具体的证明这里略过,后面后补上文献。
一个值得讨论的问题是,设定最优学习率需要知道数据的总个数
,而在实际的应用中一般不能知道样本到底会有多少。所以如果设定work的参数很trick。在以后的算法中还会遇到这类需要上帝之手设定的参数,而如何使得算法对这类控制速率的参数不敏感,或者有意的调整参数来控制算法的灵敏度,都是当前研究的热点。这是后话了。
另外一个值得注意的是,同前面存在完美专家的情况相比,regret的上界由增到了
。这两者在实际的应用中有着很大差别。例如我们的目标是要使得平均regret达到某个数值以下,假设前一种方法取1,000个样本(迭代1,000次)就能到了,那么后一种算法就可能需要1,000,000个样本和迭代。这样,在时间或样本的要求上,前者明显优于后者。类似的区别在后面还会更多的遇到,这类算法的一个主要研究热点就是如何降低regret,提高收敛速度。
这次谈的都是online的经典算法。下回我们介绍convex online optimization,这与机器学习更相关。

31 comments
Comments feed for this article
03/27/2011 at 4:09 am
漫谈在线学习 | 增强视觉 | 计算机视觉 增强现实
[...] Mu.Li同学计划撰写一个系列的文章来介绍online training,这里是第一篇。原文在此,全文转载如下。 [...]
03/27/2011 at 4:22 am
丕子
嗯 期待convex online optimization
03/27/2011 at 10:10 am
Sean
最后参数调整的过程类似于Adaboost中调整参数的过程,很棒的文章,期待下一篇。
然后貌似是刚刚开博,希望可以常常更新,也希望wp不被墙。
03/29/2011 at 7:39 am
mli7
如果把专家看做weak classifier的话,这个和boosting的理念是一致的。
03/28/2011 at 6:57 am
lsws33
很不错的文章,赞一个。期待博主早点更新。
03/29/2011 at 7:39 am
mli7
thx:)
03/29/2011 at 5:59 am
wistone
很棒的文章,收敛率是怎么算的?求文献和下一篇blog~~~
03/29/2011 at 7:36 am
mli7
先推荐本书吧,基本cover了online learning的经典内容。
Prediction, learning, and games by Nicolò Cesa-Bianchi and Gábor Lugosi. Cambridge University Press, 2006 ISBN 0521841089
03/29/2011 at 6:30 am
azureaqua
竟然开了学术blog~
03/29/2011 at 7:36 am
mli7
竟然被你发现了。只是想离开前发光发热一把
03/30/2011 at 2:01 am
azureaqua
我在听Elken讲data mining的seminar..下午还看到了Saul..
03/30/2011 at 1:25 pm
mli7
呵呵,跟elken说过我不去啦
03/30/2011 at 1:01 pm
klux
赞沐哥
03/30/2011 at 1:26 pm
mli7
被你发现了:)
04/10/2011 at 5:04 am
shuai
我一直以为online learning是adatpive learning的变种,看了你的文章才知道是一个完全不同的学习策略。有些地方没明白。比如,
1) no statistical assumptions of any kind are made about the process producing the observed data in online learning,这是online learning的一个理论上的优势。但同时,那是不是也意味着,如果it is possible to make some appropriate assumption for the process(the useful prior knowledge),那传统的把所有已知的数据弄到一起来learn就会比online learning更efficient?
2) online learning 是不是一定跟time绑在一起?i.e.,数据是随着时间推移而不断收集的。
3) 文中提及:“在线学习的一个主要限制是当前只能看到当前的和过去的数据,未来是未知,有可能完全颠覆现在的认知。。。们的希望是,时间一久,数据一多,这个差异就会变得很小。。。。” 而这个差异的计算将所有目前为止所收集到的数据以及所有差异都考虑在内,那么,如果未来果然颠覆了现在的认知,那是不是意味着之前过去所有的数据都对未来的数据没有预测力?
我相信online learning肯定有用而且有潜力,主要问题还是我不理解online learning的power 究竟在哪。问的问题可能比较trivial,沐同学见笑了。:)
04/10/2011 at 6:53 pm
Mu
1)online来自game theory,虽然它的对数据的假设非常的general,但从而导致它的theory比较weak:只能同某个固定的最优策略比。这个策略是不见就很fit这个数据。而statistical learning是假设了固定数据分布从而要和最fit这个数据的模型比。
当能你拿到所有数据的时候,如何learn就有很多种选择了。用传统的batch,或者online,后者stochastic都行。如果是固定了目标函数的话,这几种方法的效果都差不多。例如online时,你可以把这些数据做成一个序列,然后头尾连起来。这样你可以在这上面无限循环,到某个时候online总会不比别的方法差。
当然,在这里online是作为一个优化算法看待了。它被认为和stochastic效果差不多,比batch的快。
2)那倒不一定。如果你已经有了所有数据,你可以把它做成一个有序的序列然后(伪)online。当然,最符合online设定还是数据会不断的来,而且数据的分布可能会变。
3)是这样的。online不是很关心过去历史是什么,他希望的是不断的调整来适应新的数据。这也是它的一个特点。
online learning是learning里面一个比较有意思的设定。算是将一般learning推广到时间上。现在有theory保证的online算法还比较简答,而想把一个很fancy算法做成online就很可能没有theory保证了。这也对应了做online的两拨人了,一拨偏理论,一拨偏应用。我是觉得一个好的online算法肯定会有好的理论解释,只是可能一开始没有发现,例如adaboost。
04/10/2011 at 2:01 pm
漫谈在线学习:专家问题 (via Large Learning) « Masonzms's Blog
[...] 四月 10, 2011 漫谈在线学习:专家问题 (via Large Learning) Posted by masonzms under Research Leave a Comment 两个故事 从前,网络的一头住着个挨踢男,另一头住着一小编。每天小编写一封垃圾邮件给挨踢男。苦命的挨踢男日日分析邮件设计过滤器来过滤垃圾邮件。但聪明的小编每天检查邮件有没有被挨踢男收到,不断增加更多的甜言蜜语来忽悠挨踢男。较量一直进行下去,挨踢男是否能摆脱小编的骚扰呢? 这个故事都属于博弈论里的重复游戏(repeated game),它是对在线学习(online learning)最贴切的刻画:数据不断前来,我们需根据当前所能得到的来调整自己的最优策略。 熟悉机器学习的稳拿可能注意到了在线学习与在机器学习(统计学习)里所讨论的(离线)学习的区别。前者认为数据的分布是可以任意的,甚至是为了破坏我们的策略而精心设计的,而后者则通常假定数据是服从独立同分布。这两种不同的假设带来不一样的设计理念和理论模型。 统计学习考虑算法所求得到的模型与真实模型的差距。数据由真实模型产生,如果能有无限数据、并在包含有真实模型的空间里求解,我们大概率能求得真实模型。但实际上我们只有有限数据,且只能考虑某类模型,因 … Read More [...]
04/10/2011 at 5:51 pm
climbingC
online learning的基本定义中,每轮learner判断完新问题,会收到正确答案,请问这个正确答案是如何给出的?
online learning与半监督学习有什么关系?
谢谢
04/10/2011 at 6:33 pm
Mu
答案如何给出就看具体应用了。例如垃圾邮件识别时这个正确答案就是用户的反馈。或者预测当天股票,在早晨预测,到了晚上就可以知道今天股票的真实走向,从来得到正确答案。
半监督是希望能用没有label的数据来改进模型的性能,但online只是说数据是按时刻进来,所以联系不大。当然,现在有很多online半监督学习算法。
04/11/2011 at 3:00 am
shuai
打个擦边球,哪现在有成功的online learning的股票预测的案例没?
04/13/2011 at 7:05 pm
Mu
做股票预测的应该挺多,不过我倒是不熟。我感觉用machine learning的方法直接预测股票最终走向还是挺难,因为这类数据还是很难用简单的模型来建模。一个比较靠谱的方法是用machine learning的方法来分析数据中的一些规律,算出一些结果来帮助人做决策。
04/10/2011 at 7:02 pm
climbingC
奥,谢谢。那我感兴趣的应该是online半监督学习算法,可以不停机一直在线学习,不需要人为输入干涉,自动的根据不断到来的问题提升学习和判别能力。Tom Mitchell搞的NELL系统就是属于这种吧。
关于online半监督学习算法不知理解是否正确?
04/10/2011 at 7:15 pm
Mu
可能说NELL是active learning更合适,毕竟它是要去自己找数据。感觉上它融合了很多算法,semi-supervised learning,multi-task learning,bootstrap。虽然我没细看过它的文章,不过感觉它牛之处在于工程以及方法之间的融合。
04/10/2011 at 5:52 pm
climbingC
基本定义中,每轮learner判断完新问题,会收到正确答案,请问这个正确答案是如何给出的?
online learning与半监督学习有什么关系?
谢谢
04/22/2011 at 12:48 am
lsws33
“我的另外一个topic是大规模矩阵的低秩近似,也算大规模机器里面的一个重要问题,我想有时间也来浅出一下。”—————-强烈期待!!
04/29/2011 at 4:34 pm
xnature
听砖家的话中的m是什么,似乎没有给定义
BTW,您决定去哪个大学了?
07/12/2011 at 9:27 am
wurenzhi
怎么感觉online learing与增强学习和近似动态规划很有关系呢?
07/21/2011 at 10:37 pm
Zhaoyin
写得非常不错,深入浅出。
我想请教一下博主,最近的ICML/NIPS有什么关于online learning的文章推荐的么?
09/04/2011 at 6:20 pm
pluskid
非常精彩的文章!
初次接触 online learning ,发现和我之前以为的确实很大的不一样(我之前理解的 online learning 主要从 optimization 出发呢)。这样子看来,确实和传统的统计学习相差很大呢,不过我也有个疑问,由于对于数据没有什么分布、模型上的假设,所以也不能做期望估算之类的,衡量算法的好坏也用 regret 来衡量了,但是真正在实际中,这些“专家”是从何而来的呢?
感觉算法的效果很大程度上会依赖于专家的好坏,比如你文中提到的,如果有一个 perfect 专家存在(并且我们实现知道这个情况的话),那可以达到一个很好的 bound ,这个 bound 不仅是关于 regret ,并且由于最优的专家是零错误的,所以这个 regret 实际上还是 prediction error 。但是另一方面,如果专家本身不行,那么即使能达到 regret 很低,也不见得“效果一定好”吧?
看起来好像是这个问题被避开了一样,或者我不知道 online learning 有没有关于处理“专家”的构造的问题的?当然如果仅仅作为理论分析的话,避开这个问题不谈也是合理的,因为这里的分析中实际上是对于任意专家都是适用的了。但是不知道 online learning 在应用到具体数据的时候,一般“专家”都是怎么构造的?
谢谢!
12/02/2011 at 5:37 pm
Mu
从expert角度来看online learning就有点像boosting了,例如带权重的版本就和adaboost很像。所以expert就像是weak classifer或者就是feature。ol不怎么考虑怎么得到好的expert,那是和特定问题相关,它更多关注有了feature,如果有效的使用它们,以及得到一些bound。如果考虑如果构造expert,似乎更像是active learning/reinforcement learning,那套理论更复杂和fancy,我不怎么懂:)
12/02/2011 at 10:00 pm
pluskid
多谢解答。:) 经过近期的一些了解,我也了解到一些相关的东西,关于实际问题中的 expert 这个问题,似乎也有 online learning 的 formulation 中 expert 的个数不是有限的,而是一个 hypothesis space ,比如所有线性函数,当这个 hypothesis space 的复杂度不高时(用一些特殊的组合维度来刻画),这样的问题仍然能得到 sublinear regret 的结果。在这种 formulation 下的话,expert 就显得自然了,而且看起来更像传统的 supervised learning 一些。