本文仍然是基于Computer Vision: Models, Learning, and Inference这本书的阅读笔记与心得。虽然看的云里雾里的,但不写下来恐怕很快一点都不记得了。看的过程还是很吃力,感觉自己在学机器学习与概率论,在公式中挣扎。
本章讲的是机器学习两大问题之一的回归模型,讨论的主要是判别方法,在这些方法中全局状态的分布P(w|x)被直接建模。比如姿态估计问题,通过轮廓形状的向量来预测第二个向量,这个向量中包含了每个主要身体关节的角度。为了解决这样的问题,首先假设全局状态和数据的关系是线性的,并且该预测的不确定性为一个具有常数协方差的正态分布,即线性回归模型。
线性回归的目标是根据观测的数据 x 预测关于全局状态w的后验分布。对于这个判别模型,可以通过选择一个关于全局状态w的概率分布,并且参数依赖于 x 。而该分布的均值则是一个高维的线性函数。使得P(wi | xi ,θ) = Normw [φ0+∅ TXi, σ2]。
当然,可以把φ0增广进来,式子简写为P(wi | xi ,θ) = Normw [∅ TXi, σ2]。
学习或者说参数估计的过程采用最大似然argmax即可,同样要对数化。
线性回归模型显然比较简单,所以也存在很多问题与限制。而我们后面的改进便是基于这些问题。
解决这三个问题依次通过贝叶斯公式、非线性投影数据和稀疏先验解决。
这种方法是利用不同概率值的加权平均,由梯度向量 ∅ 是多元连续的,所以将先验建模为具有均值为0和球星协方差的正态分布。给定训练样本,后验分布可以用贝叶斯法则计算,即求P(∅ | X, w)。其中似然函数建模为Normw[XT∅, σ2 I ]。最后后验是可以闭式计算的,并且后验分布总是比先验分布更窄。
这样预测的过程便可以通过下面的公式实现,通过贝叶斯公式与概率的加权平均,分布变的更加抗干扰,更加稳定。
P(w* | x* ,X, w) = ∫P(w* | x* , ∅)P(∅ | X, w)d ∅
(原谅我丑陋的Markdown公式,大家明白我的意思就好
不过,当测试数据远离观测数据的均值时置信度较低,合适因为当我们从远离大部分数据时梯度中的不确定性会导致预测中的不确定性。
实际中这个模型需要求D × D 矩阵的逆A-1,如果维度D很大则很难计算。但通过Woodbury恒等式重写即可降低计算量。原理上来讲,我们也可以用同样的方法来估计方差,但是为了简单实用了最大似然方法来计算点估计。不过建模时方差为标量,所以可以通过对数化再argmax实现。当然,也可以实用一般的非线性优化技术,比如梯度下降、牛顿法,这就是数值分析和优化方法的知识了。
w和x总存在线性关系显然是不切实际的。为了简化处理方法,对于非线性可以直接将xi通过非线性操作zi = f[xi]替换。对于z还是线性的,但是对于输入样本x已经变成了非线性回归。然后还是可以用最大似然法进行参数估计。
这里有个概念叫做径向基函数,百度百科里的解释如下:
径向基函数是一个取值仅仅依赖于离原点距离的实值函数,也就是Φ(x)=Φ(‖x‖),或者还可以是到任意一点c的距离,c点称为中心点,也就是Φ(x,c)=Φ(‖x-c‖)。任意一个满足Φ(x)=Φ(‖x‖)特性的函数Φ都叫做径向基函数,标准的一般使用欧氏距离(也叫做欧式径向基函数),尽管其他距离函数也是可以的。在神经网络结构中,可以作为全连接层和ReLU层的主要函数。
书中是以一个非线性例子出现的,而这个它本身可以用来表示任何球面对称函数。
另外,我们可以想到非线性回归仍然面临着上面提到的稳定性问题,所以我们也用贝叶斯来解决,即贝叶斯非线性回归。在我理解中,大多都是用z去替换上面线性回归的x,具体的数学推导因为时间关系没有去做,有兴趣的朋友可以研究研究。
核函数在机器学习中还是非常重要的。比如在非线性变换后,如果直接计算内基ziTzj计算量可能太大,所以可以用核替换解决。直接定义一个核函数k[xi, xj]来替换源操作。对于很多变换,直接计算核函数比先对变量各自变换再计算内积要高效很多。这样做可以不考虑变换本身而选择一个核函数,不再显式的计算z。这种方法又称为核技巧。另外,核函数必须对称看待其参数。
核函数的例子有很多,比如线性核、p阶多项式、径向基(RBF)或者说高斯。还可以通过结合两个或多个已有的核函数来构建新的核。因为有效核的和与积也是半正定的,所以也是有效的核。
将非线性回归算法中内基替换为核函数,这样得到的模型称为高斯过程回归。
(新的预测分布P(w* | x* ,X, w)表达式我这里就省略了,写公式实在太麻烦,我恨不得手抄一遍拍张照,大家如果想看还是去看我再前言中提到的那本书吧
另外,核函数中可能也包含参数,比如RBF核的参数为λ,可以通过最大化边缘似然来得到,这一般需要非线性优化过程。
这一部分是为了解决上面提到问题的第三个,即观测数据是高维向量。而x的维度可能只有一小部分对预测w有用,(为啥不先用PCA处理一下呢?我也不太懂
稀疏线性回归的目标是改造算法以求一个大多数项为0的梯度向量,得到的分类器会运行的更快。相对于复杂的模型,简单的捕获了数据的主要趋势而又不会对训练集合的奇异点进行过拟合,而且泛化效果更好。
为了得到稀疏解,我们对每个非零权重加入惩罚项,并且将梯度参数的正态先验替换为一维t分布的乘积。一元t分布的乘积在坐标轴上有概率较大的脊,这将有利于稀疏。这实际上是在精确拟合与稀疏之间做了一个折中。
然后我们可以用新的先验通过贝叶斯公式在求后验,但此时没有见的闭式表达式了。先验不再是正态分布,共轭关系也丢失了。为了解决这个问题,将t分布表示为正态分布的无限加权和,其中隐变量决定方差。后面的步骤省略了,但确实很好地解决了这个问 题。
现在可以明确,拟合模型的一般方法有两个未知量,方差和隐变量,交替更新每个来最大化对数边缘似然。最后要记得丢弃隐变量很大的 ∅ 的所有维度。
这里我有个知识混淆了,小记一下。方差是协方差的一种特殊情况,即两者相同的情况。而协方差矩阵的每个元素是各个向量元素之间的协方差,是从标量随机变量到高维度随机向量的自然推广。
显然,稀疏线性回归也可以通过引入z来变成稀疏非线性回归,如果变换后的数据z的维度很高,那么需要用到更多的隐变量hd来实现。
而由于变换数据的维度可以是无穷大,该方法无法应用到核函数中。解决这个问题使用相关向量机,但它让最终的预测只与训练样本中的稀疏子集有关而不是观测的维度的稀疏子集。它对于每个数据样本只有一个参数,这个模型即二元线性回归。(我又开始看不懂了
在标准的一般的线性回归模型中,参数向量包含D个元素,分别对应于D个维度。而在二元规划中,将模型以包含I个元素的向量Ψ来参数化,I是训练样本的个数。在I <D时更有效并且可以产生其他有趣的模型。在二元模型中,有 ∅ = XΨ,所以称为二元,而非是说向量是二维的。(不知道我理解的对不对,但肯定不是二元一次方程那个“二元”吧
如果数据维数D小于样本个数I,那么可以找到表示任意梯度向量 ∅ 的参数Ψ,然而如果D > I,那么向量 XΨ 只能展开为可能的梯度向量的一个子空间,但这不要紧,如果X在该方向没有变化那么梯度就为0。
在我的理解中,因为有的时候数据点维度会超过样本的数量,可以把两个维度合为一个维度,使用一个梯度,这样就在一定程度上缓解了这个问题。(如果理解有误还请大家指出,这一部分确实没怎么理解好
后面就是最大似然解以及贝叶斯解,类似于之前的方法,这里不再多说了。
在上面的基础上,将二元参数Ψ的正态先验替换为一维t分布的乘积,这个模型称为相关向量回归。除了现在处理的是二元遍历之外,该模型与稀疏线性回归模型完全类似。具体我找了一篇博客感觉还不错:https://blog.csdn.net/TIANTANGDEGEZI/article/details/102734048
由于该算法只与内积有关,因此可以通过将内积替换为一个核函数来将其改造成非线性版本。
在现实情况中,比如最开始提到的姿态回归问题,全局状态w是多元遍历。对于这类问题的扩展也很简单,对于每一维度构建回归器即可。不过该规则有个例外:对于相关向量机需要每个模型稀疏结构是通用的,以至于可以保持效率的提升,使得每个全局状态维度单个隐变量集合可以在模型中共享。
书中提到的是Agarwal和Triggs在2006年根据相关向量机开发的一个从轮廓数据x中预测身体姿态w的方法。相关向量机通过从剪影中提取数据向量进行训练,而对于剪影信息的多异性,通过视频序列来对其进行改进。某一给定帧的多义性可以通过利用序列相邻帧中进行姿态估计的类似方法来解决。之所以不用相关向量机来解决是因为本章这些方法都是单峰的,而对于这种情况需要的是能产生多峰预测的回归方法。
位移专家的目标是根据图像x的一个区域,返回一组表示目标相对于窗口位置变化的数w。
机器学习好难啊,这一章看下来确实挺吃力的。本章讨论是回归中的判别方法,在视觉中有很多应用。而比较重要的是其涉及的概念,比如稀疏性、二元变量、核化,以后应该还会用到。另外感觉本章的一个思想就是从简单的线性模型开始逐步解决其描述真实问题的不足之处,通过贝叶斯来提高稳定性,通过换元来实现非线性回归,通过t分布来实现稀疏线性回归。而这些方法是能够互相结合的,最后得到的回归模型既稳定,又是非线性的,还能够描述稀疏问题。从简单到复杂的过程。而参数估计的时候也有很多方法与技巧,简单的最大似然估计(MLE)、贝叶斯估计以及使用核函数降低计算量。很多地方没有理解好,等有时间再梳理一下。