项目作者: jopago

项目描述 :
Bayesian Committee Machines in Python with GPy and multiprocessing
高级语言: Python
项目地址: git://github.com/jopago/GPyBCM.git
创建时间: 2019-02-07T21:08:23Z
项目社区:https://github.com/jopago/GPyBCM

开源协议:MIT License

下载


GPyBCM

Bayesian Committee Machines for large-scale Gaussian Process regression with GPy and multiprocessing

License

Example

  1. from GPyBCM import BCM
  2. bcm = BCM(x_train, y_train, M=50,N=250)
  3. # M: number of GP experts, N: size of each expert's training set
  4. bcm.optimize()
  5. y_pred = bcm.predict(x_test)

Bayesian Committee Machines

Gaussian Process regression scales poorly with dimension as it requires to invert an NxN symmetric matrix, where N is the size of the training set. Bayesian Committee Machines (BCM) are ensemble methods that aggregate individual GP predictions (Tresp, 2000) and allow distributed training (Deisenroth et al., 2015).

A BCM is made of M “experts” sharing the same kernel and hyperparemeters but each having its own training set which is a subset of the global and large initial one. Usually the partitioning of data between experts is done randomly. The likelihood of a BCM is factorized over each expert to yield:

Alt text

Thus the log-likelihood is just a sum of individual likelihoods and the same goes for its gradients, meaning that during training (which consists in finding the best kernel parameters) gradients can be computed in parallel.

References

[1]: Tresp, V, A Bayesian Committee Machine, Neural Computation. http://www.dbs.ifi.lmu.de/~tresp/papers/bcm6.pdf

[2] Deisenroth, M. P., & Ng, J. W. (2015). Distributed gaussian processes. arXiv:1502.02843.