前文从原理、代码等角度介绍了高斯过程,但是在整个过程中依旧存在很多容易混淆的点。现在可以尝试回答这几个问题,看看是否已经完全掌握了高斯过程。
一、先验 中 mu和sigma数值
1.mu:假设为0.
2.cov:cov=kernel(x1,x1‘)
def kernel(x1, x2, l=1, sigma_f=1):
dist_matrix = np.sum(x1**2, 1).reshape(-1, 1) + np.sum(x2**2, 1) - 2 * np.dot(x1, x2.T)
return sigma_f ** 2 * np.exp(-0.5 / l ** 2 * dist_matrix)
cov是输入范围x1和x1之间的相似关系
假设x1=[0,2,4,6,8] x1‘=[0,2,4,6,8]'
cov是
第一行第一列数值:描述了x1中的第一个值和x1‘中的第一个值之间高斯分布距离,两者值相同,带入高斯分布公式,可以得到对应的距离是1.
第二行第三列数值是如何计算的呢?
x1中的第二个元素 2 和x1’中的第三个元素4
带入公式
注意点:绘制不确定性范围时候,取得cov的对角线元素,cov对角线元素和两个相同数值之间的距离,是1,所以uncertainty相同,也就解释了为什么先验图中蓝色的部分是相同高度的。
uncertainty = 1.96 * np.sqrt(np.diag(cov))
二、似然 中mu和sigma的数值
首先我们需要明确的是,对于测试范围内的每个输出值都符合高斯分布,都有对应的mu和cov。
mu = K12.dot(K22_inv).dot(y)
cov =kernel(x_samples, x_samples) - K12.dot(K22_inv).dot(K21)
mu:mu的值会在相应的位置更新为采集值,K12.dot(K22_inv)会变成[0 0 1 0 0 1 0]类似的形式,说明我采集到的点是对应第三个和第六个位置的y值。
cov:对应采集位置的对角元素会变得很小,我知道了这个点的值,该点的不确定性自然会减小
如何从数值(矩阵计算上)上理解mu和cov相应的变化?
完成该部分推导后,会对高斯过程了然于心。