赞
踩
这篇文章旨在介绍自步学习的基本概念及最基础的算法原理。
我们先看自步学习的定义,在了解自步学习之前,有必要看一看什么是课程学习:
-2009年Bengio教授在ICML上提出课程学习。
-课程学习是通过模拟人的认知机理,首先学习简单的、普适性的知识结构,然后逐渐增加难度,过渡到学习更复杂、更专业化的知识。
而自步学习在课程学习上进行了改进:
-Koller教授在2010年NIPS上给出了自步学习的数学表达。
两者的最主要区别是:
-课程学习:根据先验知识赋予样本学习先后顺序。如同在学习数学课程时,根据课本封面的信息(先验知识)从小学低年级到高年级进行学习。
-自步学习:学习算法在每一步迭代中决定下一步学习样本。
举同样的例子来说,就像是把所有的数学课课本同时给了右边的小朋友,而小朋友会根据课本内容的难易程度判断(和实际情况不一定相同)来一本一本的学习。(先学一本他认为最简单的,再学一本他认为次简单的...)
算法原理:
首先需要明确的是,在下面的讨论中,我们认为:
贴两张自己画的比较丑的原理流程图来说明:
在线性回归问题中,蓝色的圆圈代表在本次迭代中未被选择的样本点;红色圆圈代表在本次迭代中被选择的样本点;红色直线代表每次调整后的模型。
回忆自步学习的概念:样本的选择在自步学习中并不是随机的,或是在一次迭代中全部纳入训练过程中,而是通过一种由简到难的有意义的方式进行选择的。
那么,选择简单的样本,也就是选择损失小的样本,也就是在线性回归问题中,和模型间距离近的样本。
上图显示了选择样本——>调整模型的过程。
而在调整完模型之后,再次选择损失相对较小的样本,然后调整模型,不断进行这样的迭代。如下图所示:
在橘色框里可以看出,最后仍有和模型直线相距甚远损失非常大的样本(我们认为很有可能是噪声点或异常值)没有进入任何一次迭代中,这就很robust(算法特点)了。
公式推导:
首先我们来看传统的机器学习方法:
这里argmin的意思是:求使得括号内值最小的w值。
那么自步学习呢?
之前也说过了,自步学习在每次迭代过程中倾向于从所有样本中选择具有很小的训练误差的样本,然后更新模型参数。
所以,在每次迭代过程中,并不是所有的样本都能够被选择(想一想蓝色和红色的圆圈)。
因此,自步学习在传统机器学习目标函数中引入二分变量vi(1/0),用于表征每个样本是否被选择(若未被选择,则vi=0,就可以不在求和公式中考虑此样本),其目标函数可以改为:
那么,看到这个公式,我们可以很明显的发现问题,这个公式的目的是找到能使得求和项最小的w和vi,什么时候求和项最小呢?损失值是不为负数的,故所有的vi都为0时,求和项最小。但这也相当于没有选择任何的样本,肯定是不对的。
为了解决这个问题,更新了模型:
这个公式的意思就很明显了,当f>1的时候,f-1>0,vi取0则求和项较小。
当f<=1,f-1<=0,vi取1则求和项较小。这样,就可以解决vi取值的问题了,用线性回归的图来描述的话:
选取了在两条橘色线内的红色圆圈(和模型相比损失较小的样本)。此外,红线代表模型,即公式中的f。模型y=ax+b的a和b即为公式中的待优化参数w。
那么这时的问题就是模型无法调节,每次都选择f<=1的样本。所以这时候非常自然的调整一下两条橘色线的间隔,让算法更灵活自然:引入系数K,随着迭代次数的增加,我们逐渐减小K的值,当K值趋近于0时,越来越多的样本被选择。
现在两条橘色线的间隔就是2/K啦,这也就是最终的推导公式。
最后贴一下原始论文给的伪代码:
其中, λ=1/k 且满足:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。