KCF跟踪算法学习笔记(1)

KCF跟踪是相关滤波跟踪器最具有代表性的,但是作为一个从来没接触过跟踪算法,线代苦手来说,看懂KCF中的原理简直是难上加难,网上所有的相关文档要说也够多了,可惜水平太差,看完以后只想问两个问题,这是什么?这又是什么?再难啃的骨头也是要啃的,所以决定把目前还一知半解的学习内容写出来,督促一下自己。

对这个笔记的时间和长度就不做要求了,天知道什么时候能看完,写到哪算哪吧。而且因为基础原因,所以可能会写的很琐碎。先按照paper的逻辑从岭回归开始吧!

 

  • 岭回归

            回归问题就是一个预测问题,在给定样本的前提下,预测新样本和老样本什么关系。那么预测世界关键要看怎么理解这个世界,凭什么去猜?常见的回归形式就是线性回归,认为把样本线性组合就能预测新样本。公式长这样  

                                                                                           f(x_i)=w^T x_i

求解这个问题最著名的办法就是“最小二乘法”,直白的说就是希望我的学习结果w预测这个问题带来的误差平方和要最小,误差项用矩阵形式表达以后写成这样,为什么这么写自己拿个矩阵比划两下就明白了,注意X是样本x的集合

                                                                                         \theta = \left \| Xw-y \right \|^2

这个问题有封闭解,w=(X^TX)^{-1}X^Ty.这一块内容在西瓜书中已经讲得非常详细了,也是比较容易理解的,这里要注意一下最小二乘只是线性回归问题的一种解法。关于最小二乘可以看大白话解释如下:

在最普遍的线性回归的应用场景中,我们的输入数据是一些具有M维特征的向量。然后回归模型的函数就是M维特征取值的线性加权。我们要求取的模型参数就是这些权值。现在我们有这样一批数据和这些数据的标注,怎么得到权值呢?方法就是,我们定义一个损失函数,这个损失函数是将训练数据代入我们模型的预测值和真实标注值的差的平方,然后再将这些平方求和,即普通最小二乘法。有了损失函数,参数求解的问题就成了损失函数求和之最小化的最优化问题。

       为什么要这么定义损失函数呢?其实这个损失函数不是随便定义滴。假设真实观测值=模型的预测值+残差,并且不妨假设残差服从均值为零的的高斯分布,那么真实观测值也服从高斯分布。通过对所有训练样本进行最大似然估计,然后经过一系列推导,会发现最大似然估计等价于普通最小二乘法。

       这里需要注意,使用最小二乘法有一个缺陷,就是如果残差不服从高斯分布而服从一个其他差距很大的分布,那么求取出来的模型就会不正确。概率分布是一个让人又爱又恨的东西,如果我们已知某一个数据集服从什么样的概率分布,我们就可以依据这个构建一个非常好的模型。但是,通常情况下我们不知道数据服从什么样的分布,(或者就算我们知道但是受限于数据量的限制,比如我们经常把异常值错当做作为错误值,其实只是数据量够大情况的正常值而已),我们也很难去用一个分布、甚至多个分布的混合去表示数据的真实分布。如果一个算法,是对里面的分布进行了某些假设,那么可能这个算法在真实的应用中就会表现欠佳。

       回到求取模型参数的问题上。通常求取模型参数有两种途径。一种是求出模型的解析解,一种是求出近似解。解析解的好处就是精确,但是求取过程计算量大,比较复杂,而且很多模型的解析解是无法求取的。近似解虽然不是特别精确,而且有时候可能会收敛到局部最优,但是计算方便,已经够用。

       最小二乘法的解析解可以这样求出:将损失函数关于参数求导并且令导数为零,然后通过变换可以直接得到解析解。

       最小二乘法的近似解可以这样求出:随机梯度下降法。即LMS也叫最小均方根法?具体做法是:每次随机选取一个训练样本,对这个训练样本的观测值和模型预测值的差的平方关于参数求导,也就是梯度。然后将梯度乘上一个alpha步长,将这个整体最为每一次迭代的变化部分。

--------------------- 
作者:Orange先生 
来源:CSDN 
原文:https://blog.csdn.net/xmu_jupiter/article/details/46594273?utm_source=copy 
版权声明:本文为博主原创文章,转载请附上博文链接!

当然了,最小二乘法是存在弊端的,比如鲁棒性不是很好,如果样本有接近共线的情况,解出来的模型可能会变得比较难看。这时候就需要使用岭回归,还不知道岭回归是个什么玩意?其实简单了说岭回归就是最小二乘的改良版,改良在哪呢?看一下岭回归形式

                                                                     \theta = \left \| Xw-y \right \|^2+\lambda \left \| w \right \|^2

https://www.zhihu.com/question/28221429  已经说得比较明白了,岭回归是对最小二乘回归的一种补充,它损失了无偏性,来换取高的数值稳定性,从而得到较高的计算精度。通过正则项作为惩罚,可以让模型趋向于简单,有时候,简单的就是美的,更可能是正确的?其实简单的线性回归深挖下去还有很多不明白的地方,后面有时间的把这一块再看看吧。

   有些情况下无法按照上面的典型回归的方法去训练模型。比如,训练样本数量少,甚至少于样本维数,这样将导致数据矩阵无法求逆;又比如样本特征中存在大量相似的特征,导致很多参数所代表的意义重复。总得来说,就是光靠训练样本进行无偏估计是不好用了。这个时候,我们就应用结构风险最小化的模型选择策略,在经验风险最小化的基础上加入正则化因子。当正则化因子选择为模型参数的二范数的时候,整个回归的方法就叫做岭回归。为什么叫“岭”回归呢?这是因为按照这种方法求取参数的解析解的时候,最后的表达式是在原来的基础上在求逆矩阵内部加上一个对角矩阵,就好像一条“岭”一样。加上这条岭以后,原来不可求逆的数据矩阵就可以求逆了。不仅仅如此,对角矩阵其实是由一个参数lamda和单位对角矩阵相乘组成。lamda越大,说明偏差就越大,原始数据对回归求取参数的作用就越小,当lamda取到一个合适的值,就能在一定意义上解决过拟合的问题:原先过拟合的特别大或者特别小的参数会被约束到正常甚至很小的值,但不会为零。
--------------------- 
作者:Orange先生 
来源:CSDN 
原文:https://blog.csdn.net/xmu_jupiter/article/details/46594273?utm_source=copy 
版权声明:本文为博主原创文章,转载请附上博文链接!

这个问题也有封闭解,对w求导就可以了,w=(X^TX+\lambda I)^{-1}X^Ty

其实这里的矩阵形式的式子求导对我而言并不是那么直观的,长久以来没有在线代教材里看见过相关论述也是很奇怪的,机器学习里到处都是这种求导。

参考关于矩阵求导的思考,比记公式简单,而且感觉有依据。

矩阵求导术(上)
            矩阵求导术(下)

好了,到这里我们完成KCF理论思想的最核心的工具的介绍——岭回归。作为一种判别式跟踪算法,KCF的本质就是利用岭回归逐帧训练一个2D滤波器,具体内容后面的笔记再介绍。

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值