我想知道如何调整高斯过程(例如,通过调整协方差函数?)以仅产生满足某些预设约束的那些轨迹。例如,下面用R编写的代码产生平滑曲线(图1),我想使曲线从原点开始,即f(0)= 0。此外,是否可以强制其他特征,例如,使所有曲线向下凹陷,只有一个拐点等。
require(MASS) ## mvrnorm function is needed
## to generate covariance matrix using a squared exponential function
calc.sigma <- function( X1, X2, sigma_sq, phi_sq, tau_sq ) {
Sigma <- matrix( rep( 0, length(X1)*length(X2) ), nrow=length(X1) )
for( i in 1:nrow(Sigma) ) {
for( j in 1:ncol(Sigma) ) {
Sigma[i,j] <- sigma_sq*exp(-phi_sq*(X1[i] - X2[j])^2) + ifelse(i==j, tau_sq, 0.0);
}
}
return(Sigma)
}
x <- seq(0,1,len=100) # input value
## parameters for covariance function
sigma_sq <- 1
phi_sq <- 10
tau_sq <- 1e-6
## parameters for mean function
a <- 1
b <- 5
mu <- a*( 1-exp(-b*x) ) # mean
# plot(mu)
sigma <- calc.sigma( x, x , sigma_sq, phi_sq, tau_sq )
N <- 10 # number of samples
samples <- matrix( rep( 0, length(x)*N ), ncol=N )
for ( i in 1:N ) {
samples[,i] <- mvrnorm( 1, mu, sigma )
}
plot( x, samples[,1], type="l", xlim=c(0,1), ylim=c(-5,5) )
for( i in 2:ncol(samples) ){
lines( x, samples[,i] )
}
答案 0 :(得分:0)
在我看来,对高斯过程的理解是不透明的。
虽然从实验中得到许多轨迹,但可以检查它们是否是高斯过程的结果,可以将它们建模为高斯过程,并在估算平均值时找到平均值或误差。
<登记/>
但另一方面是不可能的:即使有一个精确的高斯过程模型,每个实验中的轨迹也会不同 - 因为过程中发生的事情会经历正态分布......
/>
因此,即使你可以塑造过程的概率特征,你也无法从概率过程获得可预测的行为(给定的轨迹,甚至不是一系列共享某些特征的轨迹)。
答案 1 :(得分:0)
您要求的第一个属性非常容易实现:
以上所有内容都可以推广到任何属性,这些属性是函数的某些值的等式约束,或者是函数的线性组合。
关于仿射约束的调节是可能的,但更难:
[1] S. Da Veiga&amp; A. Marrel(2012),高斯过程建模与不等式约束,Annales delafacultédessciences deToulouseMathématiques,21(3),529-555。