今天是2018年的最后一天,感谢大家在过去一年对[AI火箭营]的关注与陪伴,在新的一年我们会更加精益求精、另辟蹊径、抽丝剥茧。追求人工智能学习的创新化,培训讲解清晰化、透彻化!祝大家新年快乐!
我们在机器学习过程中,经常用到的参数化算法,把数据灌入假定好的"系统"中进行模型训练,这里的假定就是指根据经验确定好算法的参数。人们在学习算法时,对这样的算法普遍比较容易接受和理解。而作为机器学习算法,高斯过程是一个无参数的方法。然而,大多数算法研究员(包括其他应用目的的工程人员)发现很难从概念上、思维方式上理解这种方法。而实际上,高斯过程恰恰反映了现实世界的建模的自然过程,特别是在人工智能仿习人类的思维方法论中,人类在学习过程中是一个不断的调试先验的过程。
本文试图从哲学的角度来阐述和剖析高斯过程,从一定高度上深入、透彻的理解高斯过程。本文不对具体的公式进行详细推导,后边会专门讲解高斯过程的数学思维及其推导。理解了这些重要思想,再进一步的了解其数学过程,就非常容易了。
高斯过程简述
高斯过程(Gaussian Process)本质上是一种机器学习算法,它利用数据点之间同质性的度量作为核函数,构造协方差函数,通过训练样本得到联合概率密度,进而求得新数据预测值。
高斯过程背后的关键思想是可以使用无限维多变量高斯分布来对函数进行建模。换句话说,输入空间中的每个点都与一个随机变量相关联,而它们的联合分布可以被作为多元高斯分布建模。设高斯过程表示为GP(m(x),k(x,x')),那么:
是关于函数的分布。完全由平均值函数m(x)和协方差函数k(x,x)确定随机函数的参数扮演着索引的角色。协方差函数定义函数空间中的属性。数据点将函数"锚定"为特定位置。一.先验的思想
在康德哲学中,"先验"同"经验"相对。意为先于经验的,但为构成经验所不可或缺的。
先验的设定取决于世界的形态、规律,我们讲过高斯分布在现实世界上是普遍的存在,与我们中国传统的"中庸哲学"也是非常的契合。在机器学习应用中,医学指标、客户画像、信用评估、借款违约等都有大量的高斯分布存在。所以先验用高斯分布是由哲学依据的。
上图显示了从GP先验中随机抽取的三个函数;点表示实际生成的y的值; 通过连接大量评估点,其他两个函数被绘制为线条。
上图显示了从后验中抽取的三个随机函数,在先验条件,用五个无噪声观察点数据求得后验分布。
在两个图中,阴影区域代表了逐点平均值加上和减去每个输入值的标准偏差的两倍(对应于95%置信区域),分别为先验和后验。
我们在开始时设置一个先验,接下来我们就有了一个大致的依据,通过对实际数据的观察,改进这个先验,形成更反映数据数据规律的分布。
二.概率思想
从某种角度来说,现实世界是由概率来锚定的世界。
简单来说,更新贝叶斯推理中的先验意味着你从一些关于事件发生概率的猜测(先验概率)开始,然后你观察发生了什么(可能性),并根据发生的事情更新你的初始猜测。 更新后,先验概率称为后验概率。
所以要预测新数据点的y值,从概率的视角看,我们可以用条件概率来预测,即在历史数据的X、Y值条件下,当前y的概率分布。
所以,GP建模中的关键假设是我们的数据可以表示为来自多元高斯分布的样本,我们有
我们当然对条件概率p(y* | y)更感兴趣:"给定数据,y *的特定预测的概率有多大?"。 这个条件概率仍然遵循高斯分布(推导过程略),所以有:
我们对y*的最佳估计是这种分布的平均值:
我们估计的不确定性由方差给出:
下面举一下高斯过程用于回归的例子:
以下是25个数据点的点图,每一个点服务一个高斯分布,我们要计算点2在点1发生时的条件概率,已知f1=-0.313。
以下这两个点的协方差矩阵
我们用高斯分布来求解f2的条件概率:
绿色代表f1是先验,蓝色是联合概率密度函数,红色是条件概率密度函数。
最后我们得到在f1发生时f2的条件概率:
P(f2|f1)=-0.313
三.相关性哲学
在机器学习中,不管是分类,还是回归,我们都要根据已有数据训练出模型,然后代入新数据,得到新数据的预测值。然而,高斯过程,我们也没有参数化的模型,我们怎么才能得到预测值呢?
这里就要用到相关性哲学,在哲学中,联系是普遍存在的,相关性(以下相似性,便于数学理解)也是普遍存在的,我们刻画一个新事物,往往会先找到它与熟悉事物之间的关联性。
所以由于内含于高斯联合分布中变量之间的相似性,我们可以在高斯分布中融入数据点之间相似性,求他们目标变量之间的概率关系,进而获得新数据的目标值的分布。当相似度高时,他们的目标值相近程度高;反之,相近程度低。
我们用数学来描述一下:
高斯分布是用协方差矩阵来定义变量之间的相似度。既然协方差矩阵的元素是相似性度量,那么我们完全可以用一种相似性度量来替换原来的协方差。
σf2用来确保协方差的最大值。
如果x≈x,那么k(x,x')达到最大值,意味着f(x)几乎与f(x')相等。
如果我们希望我们的函数看起来平滑,那么邻居必须是相似的。现在,如果x远离x',则我们取而代之的是k(x,x')≈0 ,即两个点不能相互作用。因此,例如,在新x值的插值过程中,远距离观察值将效果可以忽略不计。 这种分离的影响程度取决于长度参数l。
最后,用图形说明:
假设我们的数据符合下面的函数图形,现在我们通过高斯过程来求得这个函数(实质上是求得符合这个函数的高斯分布)。
下图是只用两个观察点来预测函数,可见其方差比较大:
增加到10个点,可见曲线与实际曲线越来越接近,并且越来越平滑。
当涉及丰富的建模可能性和大量随机参数时,高斯过程十分简单易用。