SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
R packages Potts model Bayesian computation Conclusion
bayesImageS: a case study in Bayesian
computation using Rcpp and OpenMP
Matt Moores
OxWaSP mini-symposium
December 2, 2016
R packages Potts model Bayesian computation Conclusion
Outline
1 R packages
Performance of BLAS
2 Potts model
3 Bayesian computation
Chequerboard Gibbs sampler
Pseudolikelihood
Thermodynamic integration
Exchange algorithm
Approximate Bayesian Computation (ABC)
R packages Potts model Bayesian computation Conclusion
Why write an R package?
Portability
Test bed for new statistical methods
Build on existing code
Research impact
Kudos
Hadley Wickham (2015) R packages
R packages Potts model Bayesian computation Conclusion
Why C++?
Most statistical algorithms are iterative
Markov chain Monte Carlo
Scalability for large datasets
Rcpp
OpenMP
Eigen or Armadillo
Dirk Eddelbuettel (2013) Seamless R and C++ integration with Rcpp
R packages Potts model Bayesian computation Conclusion
Inline
One function at a time:
§
library ( i n l i n e )
sum_logs ← cxxfunction ( signature ( log_vec = "numeric") , plugin = "RcppArmadillo" , body=’
arma::vec log_prob = Rcpp::as<arma::vec>(log_vec);
double suml = 0.0;
double maxl = log_prob.max();
for (unsigned i=0; i < log_prob.n_elem; i++)
{
if (arma::is_finite(log_prob(i)))
suml += exp(log_prob(i) - maxl);
}
return Rcpp::wrap(log(suml) + maxl);
’)
R packages Potts model Bayesian computation Conclusion
Package Skeleton
Create a new R package:
package.skeleton("myPackage", path=".")
Specific skeletons for each C++ library:
Rcpp.package.skeleton("myRcppPackage")
RcppArmadillo.package.skeleton("MyArmadilloPackage")
RcppEigen.package.skeleton("MyEigenPackage")
R packages Potts model Bayesian computation Conclusion
Annotations
Rcpp wrappers generated automatically:
compileAttributes("myRcppPackage")
R package documentation generated automatically:
roxygenize("myRcppPackage")
§
/ / ’ Compute the effective sample size (ESS) of the particles.
/ / ’
/ / ’ The ESS is a ‘‘rule of thumb’’ for assessing the degeneracy of
/ / ’’ the importance distribution:
/ / ’  deqn {ESS =  frac { (  sum_ { q=1}^Q w_q ) ^ 2 } {  sum_ { q=1}^Q w_q ^2}}
/ / ’
/ / ’’ @param log_weights logarithms of the importance weights of each particle.
/ / ’’ @return the effective sample size, a scalar between 0 and Q
/ / ’’ @references
/ / ’’ Liu, JS (2001) "Monte Carlo Strategies in Scientific Computing." Springer’
/ / [ [ Rcpp : : export ] ]
double effectiveSampleSize ( NumericVector log_weights )
{
double sum_wt = sum_logs ( log_weights ) ;
double sum_sq = sum_logs ( log_weights + log_weights ) ;
double res = exp (sum_wt + sum_wt − sum_sq ) ;
i f ( std : : i s f i n i t e ( res ) ) return res ;
else return 0;
}
R packages Potts model Bayesian computation Conclusion
Common Problems
Rcpp parameters are passed by reference (not copied):
Can rely on R for garbage collection
Memory allocation is slower
Can crash R (and Rstudio (and your OS))
R is not thread safe
Cannot call any R functions (even indirectly)
within parallel code!
Drew Schmidt (@wrathematics, 2015) Parallelism, R, and OpenMP
R packages Potts model Bayesian computation Conclusion
Performance
A simple performance comparison:
§
library ( RcppEigen )
library ( RcppArmadillo )
library (RcppGSL)
library ( rbenchmark )
source ( system . f i l e ("examples" , "lmBenchmark.R" ,
package ="RcppEigen" ) )
Fitting a linear regression model
(by default, n=100000 rows × p=40 columns,
with 20 repeat measurements)
R packages Potts model Bayesian computation Conclusion
Results with default R BLAS
Table: lm benchmark for Mac OS X with reference R BLAS
test relative elapsed user.self sys.self
3 LDLt 1.000 3.611 3.448 0.164
7 QR 1.356 4.896 4.801 0.077
8 LLt 1.421 5.130 5.007 0.123
11 gpuLm.fit 2.634 9.510 8.332 0.395
1 lm.fit 3.760 13.576 13.550 0.025
6 SymmEig 5.475 19.770 19.634 0.126
2 PivQR 5.517 19.923 19.760 0.162
9 arma 20.416 73.723 73.459 0.255
4 GESDD 24.815 89.607 89.429 0.175
10 GSL 198.975 718.500 718.157 0.272
5 SVD 201.717 728.401 727.958 0.423
matrix dimensions:1650 × 875
R packages Potts model Bayesian computation Conclusion
Accelerate Umbrella Framework
Table: lm benchmark for Mac OS X with vecLib
test relative elapsed user.self sys.self
3 LDLt 1.000 3.682 3.517 0.165
7 QR 1.330 4.898 4.809 0.088
8 LLt 1.413 5.204 5.081 0.121
1 lm.fit 1.832 6.745 6.702 0.024
9 arma 2.396 8.821 20.572 1.229
11 gpuLm.fit 2.655 9.776 8.757 0.344
4 GESDD 3.313 12.199 22.120 0.884
6 SymmEig 5.405 19.902 19.775 0.127
2 PivQR 5.506 20.273 20.095 0.159
10 GSL 195.244 718.889 718.565 0.273
5 SVD 198.514 730.930 730.403 0.495
Iacus, Urbanek, Goedman & Ripley (2016) R for Mac OS X FAQ, §10.5
R packages Potts model Bayesian computation Conclusion
Nested Models
β ← 0
Hidden MRF
θ : scale
D > 1 : dimension
∂i : neighbourhood
ψ : noise param.
p (yi | zi, ψ)
p zi | zi, θ
p (θ | z)
p(ψ) p(θ)
y, z, θ, ψ
Hidden Ising/Potts
z ∈ {1 . . . k}
θ = β : inverse
temperature
p zi | zi, β
p (β | z) p(β)
Mixture of Gaussians
λ = {λ1, . . . , λk} :
k
j=1 λj = 1
ψ = µ, σ2
: noise param.
p yi | zi, µj, σ2
j
p (λ | z) p(λ)
R packages Potts model Bayesian computation Conclusion
Hidden Markov Random Field
Joint distribution of observed pixel intensities y = {yi}n
i=1
and latent labels z = {zi}n
i=1:
p(y, z|µ, σ2
, β) = p(y|µ, σ2
, z)p(z|β) (1)
Additive Gaussian noise:
yi|zi =j
iid
∼ N µj, σ2
j (2)
Potts model:
π(zi|zi, β) =
exp {β i∼ δ(zi, z )}
k
j=1 exp {β i∼ δ(j, z )}
(3)
Potts (1952) Proceedings of the Cambridge Philosophical Society 48(1)
R packages Potts model Bayesian computation Conclusion
Inverse Temperature
R packages Potts model Bayesian computation Conclusion
Doubly-intractable likelihood
p(β|z) ∝ C(β)−1
π(β) exp {β S(z)} (4)
The normalising constant has computational complexity O(nkn):
C(β) =
z∈Z
exp {β S(z)} (5)
S(z) is the sufficient statistic of the Potts model:
S(z) =
i∼ ∈L
δ(zi, z ) (6)
where L is the set of all unique neighbour pairs.
R packages Potts model Bayesian computation Conclusion
Chequerboard Gibbs
A 2D or 3D regular lattice with first-order neighbourhood ∂i:
◦ ◦ ◦ ◦ ◦
◦ ◦ • ◦ ◦
◦ • × • ◦
◦ ◦ • ◦ ◦
◦ ◦ ◦ ◦ ◦
can be partitioned into 2 blocks:
• ◦ • ◦ • ◦ • ◦ • ◦
◦ • ◦ • ◦ • ◦ • ◦ •
• ◦ • ◦ • ◦ • ◦ • ◦
◦ • ◦ • ◦ • ◦ • ◦ •
• ◦ • ◦ • ◦ • ◦ • ◦
◦ • ◦ • ◦ • ◦ • ◦ •
• ◦ • ◦ • ◦ • ◦ • ◦
◦ • ◦ • ◦ • ◦ • ◦ •
• ◦ • ◦ • ◦ • ◦ • ◦
◦ • ◦ • ◦ • ◦ • ◦ •
so that z◦ are conditionally independent, given z•
Roberts & Sahu (1997) JRSS B 59(2): 291–317
Winkler (2nd
ed., 2003) Image analysis, random fields and MCMC methods
R packages Potts model Bayesian computation Conclusion
Chequerboard Gibbs II
Algorithm 1 Chequerboard sampling for z
1: for all blocks b do
2: for all pixels i ∈ b do
3: for all labels j ∈ 1 . . . k do
4: Compute λj ← p(yi | zi = j)π(zi = j | zi∼ , β)
5: end for
6: Draw zi ∼ Multinomial(λ1, . . . , λk)
7: end for
8: end for
R packages Potts model Bayesian computation Conclusion
Gibbs sampler in C++
§
void gibbsLabels ( const arma : : umat & neigh , const std : : vector <arma : : uvec> & blocks ,
arma : : umat & z , arma : : umat & alloc , const double beta ,
const arma : : mat & log_ x f i e l d )
{
const Rcpp : : NumericVector randU = Rcpp : : r u n i f ( neigh . n_rows ) ;
for ( unsigned b=0; b < blocks . size ( ) ; b++)
{
const arma : : uvec block = blocks [ b ] ;
arma : : vec log_prob ( z . n_cols ) ;
#pragma omp p a r a l l e l for private ( log_prob )
for ( unsigned i =0; i < block . size ( ) ; i ++)
{
for ( unsigned j =0; j < z . n_cols ; j ++)
{
unsigned sum_neigh = 0;
for ( unsigned k=0; k < neigh . n_cols ; k++)
{
sum_neigh += z ( neigh ( block [ i ] , k ) , j ) ;
}
log_prob [ j ] = log_ x f i e l d ( block [ i ] , j ) + beta∗sum_neigh ;
}
double t o t a l _ l l i k e = sum_logs ( log_prob ) ;
double cumProb = 0.0;
z . row ( block [ i ] ) . zeros ( ) ;
for ( unsigned j =0; j < log_prob . n_elem ; j ++)
{
cumProb += exp ( log_prob [ j ] − t o t a l _ l l i k e ) ;
i f ( randU [ block [ i ] ] < cumProb )
{
z ( block [ i ] , j ) = 1;
a l l o c ( block [ i ] , j ) += 1;
break ;
R packages Potts model Bayesian computation Conclusion
Pseudolikelihood (PL)
Algorithm 2 Metropolis-Hastings with PL
1: Draw proposal β ∼ q(β |β◦)
2: Approximate p(β |z) and p(β◦|z) using equation (7):
ˆpPL(β|z) ≈
n
i=1
exp{β i∼ δ(zi, z )}
k
j=1 exp{β i∼ δ(j, z )}
(7)
3: Calculate the M-H ratio ρ = ˆpPL(β |z)π(β )q(β◦|β )
ˆpPL(β◦|z)π(β◦)q(β |β◦)
4: Draw u ∼ Uniform[0, 1]
5: if u < min(1, ρ) then
6: β ← β
7: else
8: β ← β◦
9: end if
Rydén & Titterington (1998) JCGS 7(2): 194–211
R packages Potts model Bayesian computation Conclusion
Pseudolikelihood in C++
§
double pseudolike ( const arma : : mat & ne , const arma : : uvec & e , const double b ,
const unsigned n , const unsigned k )
{
double num = 0.0;
double denom = 0.0;
#pragma omp p a r a l l e l for reduction ( + :num, denom)
for ( unsigned i =0; i < n ; i ++)
{
num=num+ne ( e [ i ] , i ) ;
double tdenom =0.0;
for ( unsigned j =0; j < k ; j ++)
{
tdenom=tdenom+exp ( b∗ne ( j , i ) ) ;
}
denom=denom+log ( tdenom ) ;
}
return b∗num−denom ;
}
R packages Potts model Bayesian computation Conclusion
Approximation Error
PL for n = 12, k = 3 in comparison to the exact likelihood
calculated using a brute force method:
0 1 2 3 4
6810121416
β
µ
exact
pseudolikelihood
(a) Expectation
0 1 2 3 4
0.00.51.01.52.02.5
β
σ
exact
pseudolikelihood
(b) Standard deviation
R packages Potts model Bayesian computation Conclusion
Thermodynamic Integration (TI)
Path sampling identity:
log
C(β◦)
C(β )
=
β◦
β
E z|β [S(z)] dβ (8)
0.0 0.5 1.0 1.5 2.0
500000100000015000002000000
ϕ
S(x)
Gelman & Meng (1998) Stat. Sci. 13(2): 163–185.
R packages Potts model Bayesian computation Conclusion
TI algorithm
Algorithm 3 Random walk Metropolis with TI
1: Draw random walk proposal β ∼ q(β |β◦)
2: Estimate S(z|β◦) and S(z|β ) by interpolation
3: Evaluate the definite integral in equation (8)
4: Calculate the log M-H acceptance ratio:
log{ρ} = log
C(β◦)
C(β )
+ (β − β◦
)S(z) (9)
5: Draw u ∼ Uniform[0, 1]
6: if u < min(1, ρ) then
7: β ← β
8: else
9: β ← β◦
10: end if
R packages Potts model Bayesian computation Conclusion
TI in C++
§
unsigned pathBeta ( const arma : : umat & neigh , const std : : vector <arma : : uvec> & blocks ,
const arma : : mat & path , const arma : : umat & z , double & beta ,
const double p r i o r _beta [ 2 ] , const double bw)
{
double bprime = rwmh( beta , bw, p r i o r _beta ) ; / / truncated Gaussian
/ / approximate log (Z( bprime ) / Z( beta ) )
double log_ r a t i o = quadrature ( bprime , beta , path )
+ ( bprime−beta ) ∗ sum_ ident ( z , neigh , blocks ) ;
/ / accept / r e j e c t
i f ( u n i f _rand ( ) < exp ( log_ r a t i o ) )
{
beta = bprime ;
return 1;
}
return 0;
}
R packages Potts model Bayesian computation Conclusion
Approximate Exchange Algorithm (AEA)
Algorithm 4 AEA
1: Draw random walk proposal β ∼ q(β |β◦)
2: Generate w|β by sampling from eq. (3)
3: Calculate the M-H acceptance ratio according to eq. (4):
ρ =
π(β ) exp {β S(z)} C(β◦)
π(β◦) exp {β◦S(z)} C(β )
exp {β◦S(w)} C(β )
exp {β S(w)} C(β◦)
(10)
4: Draw u ∼ Uniform[0, 1]
5: if u < min(1, ρ) then
6: β ← β
7: else
8: β ← β◦
9: end if
Murray, Ghahramani & MacKay (2006) Proc. 22nd
Conf. UAI, 359–366
R packages Potts model Bayesian computation Conclusion
AEA in C++
§
unsigned exchangeBeta ( const arma : : umat & neigh , const std : : vector <arma : : uvec> & blocks ,
const arma : : uvec & slice , const arma : : umat & z , double & beta ,
const double p r i o r _beta [ 2 ] , const unsigned aux , const bool useSW,
const bool swapAux , const double bw)
{
double bprime = rwmh( beta , bw, p r i o r _beta ) ;
arma : : umat a l l o c = arma : : zeros <arma : : umat >(z . n_rows−1, z . n_cols ) ;
arma : : umat w;
i f ( swapAux ) w = z ;
else w = randomIndices ( z . n_rows−1, z . n_cols ) ;
for ( unsigned i =0; i <aux ; i ++)
{
i f (useSW)
{
swLabelsNoData ( neigh , blocks , bprime , w. n_cols , w, a l l o c ) ;
}
else
{
gibbsLabelsNoData ( neigh , blocks , w, alloc , bprime ) ;
}
}
double sum_z = sum_ ident ( z , neigh , blocks ) ;
double sum_w = sum_ ident (w, neigh , blocks ) ;
double log_ r a t i o = ( bprime−beta )∗sum_z + ( beta−bprime )∗sum_w;
/ / accept / r e j e c t
i f ( u n i f _rand ( ) < exp ( log_ r a t i o ) )
{
beta = bprime ;
return 1;
}
return 0;
}
R packages Potts model Bayesian computation Conclusion
Approximate Bayesian Computation
Algorithm 5 ABC rejection sampler
1: Draw independent proposal β ∼ π(β)
2: Generate w|β by sampling from eq. (3)
3: if S(w) − S(z) < then
4: β ← β
5: else
6: β ← β◦
7: end if
Grelaud, Robert, Marin, Rodolphe & Taly (2009) Bayesian Analysis 4(2)
Marin & Robert (2014) Bayesian Essentials with R §8.3
R packages Potts model Bayesian computation Conclusion
ABC with Metropolis-Hastings
Algorithm 6 ABC-MCMC
1: Draw proposal β ∼ q(β |β◦)
2: Generate w|β by sampling from eq. (3)
3: Draw u ∼ Uniform[0, 1]
4: if u < π(β )q(β◦|β )
π(β◦)q(β |β◦) and S(w) − S(z) < then
5: β ← β
6: else
7: β ← β◦
8: end if
Marjoram, Molitor, Plagnol & Tavaré (2003) PNAS 100(26): 15324–28
R packages Potts model Bayesian computation Conclusion
ABC-MCMC in C++
§
unsigned abcBeta ( const arma : : umat & neigh , const std : : vector <arma : : uvec> & blocks ,
const arma : : umat & z , double & beta , const double p r i o r _beta [ 2 ] ,
const unsigned aux , const bool useSW, const bool swapAux ,
const double bw, const double epsilon )
{
double bprime = rwmh( beta , bw, p r i o r _beta ) ;
arma : : umat a l l o c = arma : : zeros <arma : : umat >(z . n_rows−1, z . n_cols ) ;
arma : : umat w;
i f ( swapAux ) w = z ;
else w = randomIndices ( z . n_rows−1, z . n_cols ) ;
for ( unsigned i =0; i <aux ; i ++)
{
i f (useSW)
{
swLabelsNoData ( neigh , blocks , bprime , w. n_cols , w, a l l o c ) ;
}
else
{
gibbsLabelsNoData ( neigh , blocks , w, alloc , bprime ) ;
}
}
double sum_z = sum_ ident ( z , neigh , blocks ) ;
double sum_w = sum_ ident (w, neigh , blocks ) ;
double delta = fabs (sum_w − sum_z ) ;
i f ( delta < epsilon )
{
beta = bprime ;
return 1;
}
return 0;
}
R packages Potts model Bayesian computation Conclusion
Summary
bayesImageS supports methods for updating the latent labels:
Chequerboard Gibbs sampling (Winkler 2003)
Swendsen-Wang (1987)
and also methods for updating the inverse temperature β:
Pseudolikelihood (Rydén & Titterington 1998)
Thermodynamic integration (Gelman & Meng 1998)
Exchange algorithm (Murray, Ghahramani & MacKay 2006)
Approximate Bayesian computation (Grelaud et al. 2009)
Sequential Monte Carlo (ABC-SMC) with pre-computation
(Del Moral, Doucet & Jasra 2012; Moores et al. 2015)
Appendix
Acknowledgements
Principal supervisor: Kerrie Mengersen
Associate supervisor: Fiona Harden
Radiation Oncology Mater Centre (ROMC), Queensland Health:
Cathy Hargrave
Mike Poulsen
Tim Deegan
Other co-authors:
Christopher Drovandi (QUT)
Anthony N. Pettitt (QUT)
Christian Robert
(University of Warwick & Université Paris Dauphine)
PyMCMC team at QUT:
Clair Alston
Christopher Strickland
Appendix
For Further Reading I
D. Eddelbuettel
Seamless R and C++ integration with Rcpp
Springer-Verlag, 2013.
H. Wickham
R packages
O’Reilly, 2015.
D. Bates & D. Eddelbuettel
Fast and elegant numerical linear algebra using the RcppEigen
package.
J. Stat. Soft. 52(5): 1–24, 2013.
D. Eddelbuettel & C. Sanderson
RcppArmadillo: Accelerating R with high-performance C++ linear
algebra.
Comput. Stat. Data Anal. 71: 1054–63, 2014.
Appendix
For Further Reading II
M. Moores & K. Mengersen
bayesImageS: Bayesian methods for image segmentation using a
hidden Potts model.
R package version 0.3-3
https://CRAN.R-project.org/package=bayesImageS
M. Moores, A. N. Pettitt & K. Mengersen
Scalable Bayesian inference for the inverse temperature of a hidden
Potts model.
arXiv:1503.08066 [stat.CO], 2015.
M. Moores, C. C. Drovandi, K. Mengersen & C. P. Robert
Pre-processing for approximate Bayesian computation in image
analysis.
Statistics & Computing 25(1): 23–33, 2015.
M. Moores & K. Mengersen
Bayesian approaches to spatial inference: modelling and computational
challenges and solutions.
In Proc. 33rd Int. Wkshp MaxEnt, AIP Conf. Proc. 1636: 112–117, 2014.
Appendix
For Further Reading III
G. Winkler
Image analysis, random fields and Markov chain Monte Carlo methods
2nd
ed., Springer-Verlag, 2003.
J.-M. Marin & C. P. Robert
Bayesian Essentials with R
Springer-Verlag, 2014.
G. O. Roberts & S. K. Sahu
Updating Schemes, Correlation Structure, Blocking and
Parameterization for the Gibbs Sampler
J. R. Stat. Soc. Ser. B 59(2): 291–317, 1997.
T. Rydén & D. M. Titterington
Computational Bayesian Analysis of Hidden Markov Models.
J. Comput. Graph. Stat., 7(2): 194–211, 1998.
Appendix
For Further Reading IV
A. Gelman & X.-L. Meng
Simulating normalizing constants: from importance sampling to bridge
sampling to path sampling.
Statist. Sci., 13(2): 163–185, 1998.
I. Murray, Z. Ghahramani & D. J. C. MacKay
MCMC for Doubly-intractable Distributions.
Proc. 22nd
Conf. UAI, 359–366, 2006.
A. Grelaud, C. P. Robert, J.-M. Marin, F. Rodolphe & J.-F. Taly
ABC likelihood-free methods for model choice in Gibbs random fields.
Bayesian Analysis 4(2): 317–336, 2009.
R. H. Swendsen & J.-S. Wang
Nonuniversal critical dynamics in Monte Carlo simulations.
Physical Review Letters, 58: 86–8, 1987.

Contenu connexe

Tendances

Multilayer Neural Networks
Multilayer Neural NetworksMultilayer Neural Networks
Multilayer Neural Networks
ESCOM
 
Solving the energy problem of helium final report
Solving the energy problem of helium final reportSolving the energy problem of helium final report
Solving the energy problem of helium final report
JamesMa54
 

Tendances (19)

A Note on TopicRNN
A Note on TopicRNNA Note on TopicRNN
A Note on TopicRNN
 
Metodo Monte Carlo -Wang Landau
Metodo Monte Carlo -Wang LandauMetodo Monte Carlo -Wang Landau
Metodo Monte Carlo -Wang Landau
 
Multilayer Neural Networks
Multilayer Neural NetworksMultilayer Neural Networks
Multilayer Neural Networks
 
A Note on Latent LSTM Allocation
A Note on Latent LSTM AllocationA Note on Latent LSTM Allocation
A Note on Latent LSTM Allocation
 
Graph Kernelpdf
Graph KernelpdfGraph Kernelpdf
Graph Kernelpdf
 
Graph kernels
Graph kernelsGraph kernels
Graph kernels
 
Graph Edit Distance: Basics & Trends
Graph Edit Distance: Basics & TrendsGraph Edit Distance: Basics & Trends
Graph Edit Distance: Basics & Trends
 
A nonlinear approximation of the Bayesian Update formula
A nonlinear approximation of the Bayesian Update formulaA nonlinear approximation of the Bayesian Update formula
A nonlinear approximation of the Bayesian Update formula
 
Triggering patterns of topology changes in dynamic attributed graphs
Triggering patterns of topology changes in dynamic attributed graphsTriggering patterns of topology changes in dynamic attributed graphs
Triggering patterns of topology changes in dynamic attributed graphs
 
Research Project Primus
Research Project PrimusResearch Project Primus
Research Project Primus
 
Feedback Vertex Set
Feedback Vertex SetFeedback Vertex Set
Feedback Vertex Set
 
Convex Optimization Modelling with CVXOPT
Convex Optimization Modelling with CVXOPTConvex Optimization Modelling with CVXOPT
Convex Optimization Modelling with CVXOPT
 
ADAPTIVE FUZZY KERNEL CLUSTERING ALGORITHM
ADAPTIVE FUZZY KERNEL CLUSTERING ALGORITHMADAPTIVE FUZZY KERNEL CLUSTERING ALGORITHM
ADAPTIVE FUZZY KERNEL CLUSTERING ALGORITHM
 
Lecture9 xing
Lecture9 xingLecture9 xing
Lecture9 xing
 
Ee693 sept2014midsem
Ee693 sept2014midsemEe693 sept2014midsem
Ee693 sept2014midsem
 
The all-electron GW method based on WIEN2k: Implementation and applications.
The all-electron GW method based on WIEN2k: Implementation and applications.The all-electron GW method based on WIEN2k: Implementation and applications.
The all-electron GW method based on WIEN2k: Implementation and applications.
 
Low-rank tensor approximation (Introduction)
Low-rank tensor approximation (Introduction)Low-rank tensor approximation (Introduction)
Low-rank tensor approximation (Introduction)
 
Hyperparameter optimization with approximate gradient
Hyperparameter optimization with approximate gradientHyperparameter optimization with approximate gradient
Hyperparameter optimization with approximate gradient
 
Solving the energy problem of helium final report
Solving the energy problem of helium final reportSolving the energy problem of helium final report
Solving the energy problem of helium final report
 

Similaire à R package 'bayesImageS': a case study in Bayesian computation using Rcpp and OpenMP

reservoir-modeling-using-matlab-the-matalb-reservoir-simulation-toolbox-mrst.pdf
reservoir-modeling-using-matlab-the-matalb-reservoir-simulation-toolbox-mrst.pdfreservoir-modeling-using-matlab-the-matalb-reservoir-simulation-toolbox-mrst.pdf
reservoir-modeling-using-matlab-the-matalb-reservoir-simulation-toolbox-mrst.pdf
RTEFGDFGJU
 
Quantum espresso G Vector distributon
Quantum espresso G Vector distributonQuantum espresso G Vector distributon
Quantum espresso G Vector distributon
Eric Pascolo
 

Similaire à R package 'bayesImageS': a case study in Bayesian computation using Rcpp and OpenMP (20)

A Parallel Branch And Bound Algorithm For The Quadratic Assignment Problem
A Parallel Branch And Bound Algorithm For The Quadratic Assignment ProblemA Parallel Branch And Bound Algorithm For The Quadratic Assignment Problem
A Parallel Branch And Bound Algorithm For The Quadratic Assignment Problem
 
PVS-Studio team experience: checking various open source projects, or mistake...
PVS-Studio team experience: checking various open source projects, or mistake...PVS-Studio team experience: checking various open source projects, or mistake...
PVS-Studio team experience: checking various open source projects, or mistake...
 
sheet6.pdf
sheet6.pdfsheet6.pdf
sheet6.pdf
 
doc6.pdf
doc6.pdfdoc6.pdf
doc6.pdf
 
paper6.pdf
paper6.pdfpaper6.pdf
paper6.pdf
 
lecture5.pdf
lecture5.pdflecture5.pdf
lecture5.pdf
 
reservoir-modeling-using-matlab-the-matalb-reservoir-simulation-toolbox-mrst.pdf
reservoir-modeling-using-matlab-the-matalb-reservoir-simulation-toolbox-mrst.pdfreservoir-modeling-using-matlab-the-matalb-reservoir-simulation-toolbox-mrst.pdf
reservoir-modeling-using-matlab-the-matalb-reservoir-simulation-toolbox-mrst.pdf
 
Codes and Isogenies
Codes and IsogeniesCodes and Isogenies
Codes and Isogenies
 
Steven Duplij, "Polyadic rings of p-adic integers"
Steven Duplij, "Polyadic rings of p-adic integers"Steven Duplij, "Polyadic rings of p-adic integers"
Steven Duplij, "Polyadic rings of p-adic integers"
 
Python for Scientific Computing -- Ricardo Cruz
Python for Scientific Computing -- Ricardo CruzPython for Scientific Computing -- Ricardo Cruz
Python for Scientific Computing -- Ricardo Cruz
 
Graphical Model Selection for Big Data
Graphical Model Selection for Big DataGraphical Model Selection for Big Data
Graphical Model Selection for Big Data
 
parameterized complexity for graph Motif
parameterized complexity for graph Motifparameterized complexity for graph Motif
parameterized complexity for graph Motif
 
論文紹介:Towards Robust Adaptive Object Detection Under Noisy Annotations
論文紹介:Towards Robust Adaptive Object Detection Under Noisy Annotations論文紹介:Towards Robust Adaptive Object Detection Under Noisy Annotations
論文紹介:Towards Robust Adaptive Object Detection Under Noisy Annotations
 
Approximate Bayesian computation for the Ising/Potts model
Approximate Bayesian computation for the Ising/Potts modelApproximate Bayesian computation for the Ising/Potts model
Approximate Bayesian computation for the Ising/Potts model
 
R Language Introduction
R Language IntroductionR Language Introduction
R Language Introduction
 
FPGA based BCH Decoder
FPGA based BCH DecoderFPGA based BCH Decoder
FPGA based BCH Decoder
 
Subquad multi ff
Subquad multi ffSubquad multi ff
Subquad multi ff
 
Gate Computer Science Solved Paper 2007
Gate Computer Science Solved Paper 2007 Gate Computer Science Solved Paper 2007
Gate Computer Science Solved Paper 2007
 
Quantum espresso G Vector distributon
Quantum espresso G Vector distributonQuantum espresso G Vector distributon
Quantum espresso G Vector distributon
 
Number theoretic-rsa-chailos-new
Number theoretic-rsa-chailos-newNumber theoretic-rsa-chailos-new
Number theoretic-rsa-chailos-new
 

Plus de Matt Moores

R package bayesImageS: Scalable Inference for Intractable Likelihoods
R package bayesImageS: Scalable Inference for Intractable LikelihoodsR package bayesImageS: Scalable Inference for Intractable Likelihoods
R package bayesImageS: Scalable Inference for Intractable Likelihoods
Matt Moores
 
Final PhD Seminar
Final PhD SeminarFinal PhD Seminar
Final PhD Seminar
Matt Moores
 

Plus de Matt Moores (13)

bayesImageS: an R package for Bayesian image analysis
bayesImageS: an R package for Bayesian image analysisbayesImageS: an R package for Bayesian image analysis
bayesImageS: an R package for Bayesian image analysis
 
Exploratory Analysis of Multivariate Data
Exploratory Analysis of Multivariate DataExploratory Analysis of Multivariate Data
Exploratory Analysis of Multivariate Data
 
R package bayesImageS: Scalable Inference for Intractable Likelihoods
R package bayesImageS: Scalable Inference for Intractable LikelihoodsR package bayesImageS: Scalable Inference for Intractable Likelihoods
R package bayesImageS: Scalable Inference for Intractable Likelihoods
 
Importing satellite imagery into R from NASA and the U.S. Geological Survey
Importing satellite imagery into R from NASA and the U.S. Geological SurveyImporting satellite imagery into R from NASA and the U.S. Geological Survey
Importing satellite imagery into R from NASA and the U.S. Geological Survey
 
Accelerating Pseudo-Marginal MCMC using Gaussian Processes
Accelerating Pseudo-Marginal MCMC using Gaussian ProcessesAccelerating Pseudo-Marginal MCMC using Gaussian Processes
Accelerating Pseudo-Marginal MCMC using Gaussian Processes
 
Bayesian modelling and computation for Raman spectroscopy
Bayesian modelling and computation for Raman spectroscopyBayesian modelling and computation for Raman spectroscopy
Bayesian modelling and computation for Raman spectroscopy
 
Final PhD Seminar
Final PhD SeminarFinal PhD Seminar
Final PhD Seminar
 
Precomputation for SMC-ABC with undirected graphical models
Precomputation for SMC-ABC with undirected graphical modelsPrecomputation for SMC-ABC with undirected graphical models
Precomputation for SMC-ABC with undirected graphical models
 
Intro to ABC
Intro to ABCIntro to ABC
Intro to ABC
 
Pre-computation for ABC in image analysis
Pre-computation for ABC in image analysisPre-computation for ABC in image analysis
Pre-computation for ABC in image analysis
 
Variational Bayes
Variational BayesVariational Bayes
Variational Bayes
 
Parallel R
Parallel RParallel R
Parallel R
 
Informative Priors for Segmentation of Medical Images
Informative Priors for Segmentation of Medical ImagesInformative Priors for Segmentation of Medical Images
Informative Priors for Segmentation of Medical Images
 

Dernier

Pests of cotton_Sucking_Pests_Dr.UPR.pdf
Pests of cotton_Sucking_Pests_Dr.UPR.pdfPests of cotton_Sucking_Pests_Dr.UPR.pdf
Pests of cotton_Sucking_Pests_Dr.UPR.pdf
PirithiRaju
 
Biogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune Waterworlds
Biogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune WaterworldsBiogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune Waterworlds
Biogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune Waterworlds
Sérgio Sacani
 
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdfPests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
PirithiRaju
 
Asymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 b
Asymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 bAsymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 b
Asymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 b
Sérgio Sacani
 
Module for Grade 9 for Asynchronous/Distance learning
Module for Grade 9 for Asynchronous/Distance learningModule for Grade 9 for Asynchronous/Distance learning
Module for Grade 9 for Asynchronous/Distance learning
levieagacer
 
The Mariana Trench remarkable geological features on Earth.pptx
The Mariana Trench remarkable geological features on Earth.pptxThe Mariana Trench remarkable geological features on Earth.pptx
The Mariana Trench remarkable geological features on Earth.pptx
seri bangash
 

Dernier (20)

Pests of cotton_Sucking_Pests_Dr.UPR.pdf
Pests of cotton_Sucking_Pests_Dr.UPR.pdfPests of cotton_Sucking_Pests_Dr.UPR.pdf
Pests of cotton_Sucking_Pests_Dr.UPR.pdf
 
Site Acceptance Test .
Site Acceptance Test                    .Site Acceptance Test                    .
Site Acceptance Test .
 
Molecular markers- RFLP, RAPD, AFLP, SNP etc.
Molecular markers- RFLP, RAPD, AFLP, SNP etc.Molecular markers- RFLP, RAPD, AFLP, SNP etc.
Molecular markers- RFLP, RAPD, AFLP, SNP etc.
 
Biogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune Waterworlds
Biogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune WaterworldsBiogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune Waterworlds
Biogenic Sulfur Gases as Biosignatures on Temperate Sub-Neptune Waterworlds
 
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdfPests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
Pests of cotton_Borer_Pests_Binomics_Dr.UPR.pdf
 
Asymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 b
Asymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 bAsymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 b
Asymmetry in the atmosphere of the ultra-hot Jupiter WASP-76 b
 
GBSN - Microbiology (Unit 1)
GBSN - Microbiology (Unit 1)GBSN - Microbiology (Unit 1)
GBSN - Microbiology (Unit 1)
 
chemical bonding Essentials of Physical Chemistry2.pdf
chemical bonding Essentials of Physical Chemistry2.pdfchemical bonding Essentials of Physical Chemistry2.pdf
chemical bonding Essentials of Physical Chemistry2.pdf
 
Module for Grade 9 for Asynchronous/Distance learning
Module for Grade 9 for Asynchronous/Distance learningModule for Grade 9 for Asynchronous/Distance learning
Module for Grade 9 for Asynchronous/Distance learning
 
COST ESTIMATION FOR A RESEARCH PROJECT.pptx
COST ESTIMATION FOR A RESEARCH PROJECT.pptxCOST ESTIMATION FOR A RESEARCH PROJECT.pptx
COST ESTIMATION FOR A RESEARCH PROJECT.pptx
 
PSYCHOSOCIAL NEEDS. in nursing II sem pptx
PSYCHOSOCIAL NEEDS. in nursing II sem pptxPSYCHOSOCIAL NEEDS. in nursing II sem pptx
PSYCHOSOCIAL NEEDS. in nursing II sem pptx
 
300003-World Science Day For Peace And Development.pptx
300003-World Science Day For Peace And Development.pptx300003-World Science Day For Peace And Development.pptx
300003-World Science Day For Peace And Development.pptx
 
Kochi ❤CALL GIRL 84099*07087 ❤CALL GIRLS IN Kochi ESCORT SERVICE❤CALL GIRL
Kochi ❤CALL GIRL 84099*07087 ❤CALL GIRLS IN Kochi ESCORT SERVICE❤CALL GIRLKochi ❤CALL GIRL 84099*07087 ❤CALL GIRLS IN Kochi ESCORT SERVICE❤CALL GIRL
Kochi ❤CALL GIRL 84099*07087 ❤CALL GIRLS IN Kochi ESCORT SERVICE❤CALL GIRL
 
Call Girls Ahmedabad +917728919243 call me Independent Escort Service
Call Girls Ahmedabad +917728919243 call me Independent Escort ServiceCall Girls Ahmedabad +917728919243 call me Independent Escort Service
Call Girls Ahmedabad +917728919243 call me Independent Escort Service
 
❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.
❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.
❤Jammu Kashmir Call Girls 8617697112 Personal Whatsapp Number 💦✅.
 
Locating and isolating a gene, FISH, GISH, Chromosome walking and jumping, te...
Locating and isolating a gene, FISH, GISH, Chromosome walking and jumping, te...Locating and isolating a gene, FISH, GISH, Chromosome walking and jumping, te...
Locating and isolating a gene, FISH, GISH, Chromosome walking and jumping, te...
 
High Profile 🔝 8250077686 📞 Call Girls Service in GTB Nagar🍑
High Profile 🔝 8250077686 📞 Call Girls Service in GTB Nagar🍑High Profile 🔝 8250077686 📞 Call Girls Service in GTB Nagar🍑
High Profile 🔝 8250077686 📞 Call Girls Service in GTB Nagar🍑
 
9999266834 Call Girls In Noida Sector 22 (Delhi) Call Girl Service
9999266834 Call Girls In Noida Sector 22 (Delhi) Call Girl Service9999266834 Call Girls In Noida Sector 22 (Delhi) Call Girl Service
9999266834 Call Girls In Noida Sector 22 (Delhi) Call Girl Service
 
The Mariana Trench remarkable geological features on Earth.pptx
The Mariana Trench remarkable geological features on Earth.pptxThe Mariana Trench remarkable geological features on Earth.pptx
The Mariana Trench remarkable geological features on Earth.pptx
 
Clean In Place(CIP).pptx .
Clean In Place(CIP).pptx                 .Clean In Place(CIP).pptx                 .
Clean In Place(CIP).pptx .
 

R package 'bayesImageS': a case study in Bayesian computation using Rcpp and OpenMP

  • 1. R packages Potts model Bayesian computation Conclusion bayesImageS: a case study in Bayesian computation using Rcpp and OpenMP Matt Moores OxWaSP mini-symposium December 2, 2016
  • 2. R packages Potts model Bayesian computation Conclusion Outline 1 R packages Performance of BLAS 2 Potts model 3 Bayesian computation Chequerboard Gibbs sampler Pseudolikelihood Thermodynamic integration Exchange algorithm Approximate Bayesian Computation (ABC)
  • 3. R packages Potts model Bayesian computation Conclusion Why write an R package? Portability Test bed for new statistical methods Build on existing code Research impact Kudos Hadley Wickham (2015) R packages
  • 4. R packages Potts model Bayesian computation Conclusion Why C++? Most statistical algorithms are iterative Markov chain Monte Carlo Scalability for large datasets Rcpp OpenMP Eigen or Armadillo Dirk Eddelbuettel (2013) Seamless R and C++ integration with Rcpp
  • 5. R packages Potts model Bayesian computation Conclusion Inline One function at a time: § library ( i n l i n e ) sum_logs ← cxxfunction ( signature ( log_vec = "numeric") , plugin = "RcppArmadillo" , body=’ arma::vec log_prob = Rcpp::as<arma::vec>(log_vec); double suml = 0.0; double maxl = log_prob.max(); for (unsigned i=0; i < log_prob.n_elem; i++) { if (arma::is_finite(log_prob(i))) suml += exp(log_prob(i) - maxl); } return Rcpp::wrap(log(suml) + maxl); ’)
  • 6. R packages Potts model Bayesian computation Conclusion Package Skeleton Create a new R package: package.skeleton("myPackage", path=".") Specific skeletons for each C++ library: Rcpp.package.skeleton("myRcppPackage") RcppArmadillo.package.skeleton("MyArmadilloPackage") RcppEigen.package.skeleton("MyEigenPackage")
  • 7. R packages Potts model Bayesian computation Conclusion Annotations Rcpp wrappers generated automatically: compileAttributes("myRcppPackage") R package documentation generated automatically: roxygenize("myRcppPackage") § / / ’ Compute the effective sample size (ESS) of the particles. / / ’ / / ’ The ESS is a ‘‘rule of thumb’’ for assessing the degeneracy of / / ’’ the importance distribution: / / ’ deqn {ESS = frac { ( sum_ { q=1}^Q w_q ) ^ 2 } { sum_ { q=1}^Q w_q ^2}} / / ’ / / ’’ @param log_weights logarithms of the importance weights of each particle. / / ’’ @return the effective sample size, a scalar between 0 and Q / / ’’ @references / / ’’ Liu, JS (2001) "Monte Carlo Strategies in Scientific Computing." Springer’ / / [ [ Rcpp : : export ] ] double effectiveSampleSize ( NumericVector log_weights ) { double sum_wt = sum_logs ( log_weights ) ; double sum_sq = sum_logs ( log_weights + log_weights ) ; double res = exp (sum_wt + sum_wt − sum_sq ) ; i f ( std : : i s f i n i t e ( res ) ) return res ; else return 0; }
  • 8. R packages Potts model Bayesian computation Conclusion Common Problems Rcpp parameters are passed by reference (not copied): Can rely on R for garbage collection Memory allocation is slower Can crash R (and Rstudio (and your OS)) R is not thread safe Cannot call any R functions (even indirectly) within parallel code! Drew Schmidt (@wrathematics, 2015) Parallelism, R, and OpenMP
  • 9. R packages Potts model Bayesian computation Conclusion Performance A simple performance comparison: § library ( RcppEigen ) library ( RcppArmadillo ) library (RcppGSL) library ( rbenchmark ) source ( system . f i l e ("examples" , "lmBenchmark.R" , package ="RcppEigen" ) ) Fitting a linear regression model (by default, n=100000 rows × p=40 columns, with 20 repeat measurements)
  • 10. R packages Potts model Bayesian computation Conclusion Results with default R BLAS Table: lm benchmark for Mac OS X with reference R BLAS test relative elapsed user.self sys.self 3 LDLt 1.000 3.611 3.448 0.164 7 QR 1.356 4.896 4.801 0.077 8 LLt 1.421 5.130 5.007 0.123 11 gpuLm.fit 2.634 9.510 8.332 0.395 1 lm.fit 3.760 13.576 13.550 0.025 6 SymmEig 5.475 19.770 19.634 0.126 2 PivQR 5.517 19.923 19.760 0.162 9 arma 20.416 73.723 73.459 0.255 4 GESDD 24.815 89.607 89.429 0.175 10 GSL 198.975 718.500 718.157 0.272 5 SVD 201.717 728.401 727.958 0.423 matrix dimensions:1650 × 875
  • 11. R packages Potts model Bayesian computation Conclusion Accelerate Umbrella Framework Table: lm benchmark for Mac OS X with vecLib test relative elapsed user.self sys.self 3 LDLt 1.000 3.682 3.517 0.165 7 QR 1.330 4.898 4.809 0.088 8 LLt 1.413 5.204 5.081 0.121 1 lm.fit 1.832 6.745 6.702 0.024 9 arma 2.396 8.821 20.572 1.229 11 gpuLm.fit 2.655 9.776 8.757 0.344 4 GESDD 3.313 12.199 22.120 0.884 6 SymmEig 5.405 19.902 19.775 0.127 2 PivQR 5.506 20.273 20.095 0.159 10 GSL 195.244 718.889 718.565 0.273 5 SVD 198.514 730.930 730.403 0.495 Iacus, Urbanek, Goedman & Ripley (2016) R for Mac OS X FAQ, §10.5
  • 12. R packages Potts model Bayesian computation Conclusion Nested Models β ← 0 Hidden MRF θ : scale D > 1 : dimension ∂i : neighbourhood ψ : noise param. p (yi | zi, ψ) p zi | zi, θ p (θ | z) p(ψ) p(θ) y, z, θ, ψ Hidden Ising/Potts z ∈ {1 . . . k} θ = β : inverse temperature p zi | zi, β p (β | z) p(β) Mixture of Gaussians λ = {λ1, . . . , λk} : k j=1 λj = 1 ψ = µ, σ2 : noise param. p yi | zi, µj, σ2 j p (λ | z) p(λ)
  • 13. R packages Potts model Bayesian computation Conclusion Hidden Markov Random Field Joint distribution of observed pixel intensities y = {yi}n i=1 and latent labels z = {zi}n i=1: p(y, z|µ, σ2 , β) = p(y|µ, σ2 , z)p(z|β) (1) Additive Gaussian noise: yi|zi =j iid ∼ N µj, σ2 j (2) Potts model: π(zi|zi, β) = exp {β i∼ δ(zi, z )} k j=1 exp {β i∼ δ(j, z )} (3) Potts (1952) Proceedings of the Cambridge Philosophical Society 48(1)
  • 14. R packages Potts model Bayesian computation Conclusion Inverse Temperature
  • 15. R packages Potts model Bayesian computation Conclusion Doubly-intractable likelihood p(β|z) ∝ C(β)−1 π(β) exp {β S(z)} (4) The normalising constant has computational complexity O(nkn): C(β) = z∈Z exp {β S(z)} (5) S(z) is the sufficient statistic of the Potts model: S(z) = i∼ ∈L δ(zi, z ) (6) where L is the set of all unique neighbour pairs.
  • 16. R packages Potts model Bayesian computation Conclusion Chequerboard Gibbs A 2D or 3D regular lattice with first-order neighbourhood ∂i: ◦ ◦ ◦ ◦ ◦ ◦ ◦ • ◦ ◦ ◦ • × • ◦ ◦ ◦ • ◦ ◦ ◦ ◦ ◦ ◦ ◦ can be partitioned into 2 blocks: • ◦ • ◦ • ◦ • ◦ • ◦ ◦ • ◦ • ◦ • ◦ • ◦ • • ◦ • ◦ • ◦ • ◦ • ◦ ◦ • ◦ • ◦ • ◦ • ◦ • • ◦ • ◦ • ◦ • ◦ • ◦ ◦ • ◦ • ◦ • ◦ • ◦ • • ◦ • ◦ • ◦ • ◦ • ◦ ◦ • ◦ • ◦ • ◦ • ◦ • • ◦ • ◦ • ◦ • ◦ • ◦ ◦ • ◦ • ◦ • ◦ • ◦ • so that z◦ are conditionally independent, given z• Roberts & Sahu (1997) JRSS B 59(2): 291–317 Winkler (2nd ed., 2003) Image analysis, random fields and MCMC methods
  • 17. R packages Potts model Bayesian computation Conclusion Chequerboard Gibbs II Algorithm 1 Chequerboard sampling for z 1: for all blocks b do 2: for all pixels i ∈ b do 3: for all labels j ∈ 1 . . . k do 4: Compute λj ← p(yi | zi = j)π(zi = j | zi∼ , β) 5: end for 6: Draw zi ∼ Multinomial(λ1, . . . , λk) 7: end for 8: end for
  • 18. R packages Potts model Bayesian computation Conclusion Gibbs sampler in C++ § void gibbsLabels ( const arma : : umat & neigh , const std : : vector <arma : : uvec> & blocks , arma : : umat & z , arma : : umat & alloc , const double beta , const arma : : mat & log_ x f i e l d ) { const Rcpp : : NumericVector randU = Rcpp : : r u n i f ( neigh . n_rows ) ; for ( unsigned b=0; b < blocks . size ( ) ; b++) { const arma : : uvec block = blocks [ b ] ; arma : : vec log_prob ( z . n_cols ) ; #pragma omp p a r a l l e l for private ( log_prob ) for ( unsigned i =0; i < block . size ( ) ; i ++) { for ( unsigned j =0; j < z . n_cols ; j ++) { unsigned sum_neigh = 0; for ( unsigned k=0; k < neigh . n_cols ; k++) { sum_neigh += z ( neigh ( block [ i ] , k ) , j ) ; } log_prob [ j ] = log_ x f i e l d ( block [ i ] , j ) + beta∗sum_neigh ; } double t o t a l _ l l i k e = sum_logs ( log_prob ) ; double cumProb = 0.0; z . row ( block [ i ] ) . zeros ( ) ; for ( unsigned j =0; j < log_prob . n_elem ; j ++) { cumProb += exp ( log_prob [ j ] − t o t a l _ l l i k e ) ; i f ( randU [ block [ i ] ] < cumProb ) { z ( block [ i ] , j ) = 1; a l l o c ( block [ i ] , j ) += 1; break ;
  • 19. R packages Potts model Bayesian computation Conclusion Pseudolikelihood (PL) Algorithm 2 Metropolis-Hastings with PL 1: Draw proposal β ∼ q(β |β◦) 2: Approximate p(β |z) and p(β◦|z) using equation (7): ˆpPL(β|z) ≈ n i=1 exp{β i∼ δ(zi, z )} k j=1 exp{β i∼ δ(j, z )} (7) 3: Calculate the M-H ratio ρ = ˆpPL(β |z)π(β )q(β◦|β ) ˆpPL(β◦|z)π(β◦)q(β |β◦) 4: Draw u ∼ Uniform[0, 1] 5: if u < min(1, ρ) then 6: β ← β 7: else 8: β ← β◦ 9: end if Rydén & Titterington (1998) JCGS 7(2): 194–211
  • 20. R packages Potts model Bayesian computation Conclusion Pseudolikelihood in C++ § double pseudolike ( const arma : : mat & ne , const arma : : uvec & e , const double b , const unsigned n , const unsigned k ) { double num = 0.0; double denom = 0.0; #pragma omp p a r a l l e l for reduction ( + :num, denom) for ( unsigned i =0; i < n ; i ++) { num=num+ne ( e [ i ] , i ) ; double tdenom =0.0; for ( unsigned j =0; j < k ; j ++) { tdenom=tdenom+exp ( b∗ne ( j , i ) ) ; } denom=denom+log ( tdenom ) ; } return b∗num−denom ; }
  • 21. R packages Potts model Bayesian computation Conclusion Approximation Error PL for n = 12, k = 3 in comparison to the exact likelihood calculated using a brute force method: 0 1 2 3 4 6810121416 β µ exact pseudolikelihood (a) Expectation 0 1 2 3 4 0.00.51.01.52.02.5 β σ exact pseudolikelihood (b) Standard deviation
  • 22. R packages Potts model Bayesian computation Conclusion Thermodynamic Integration (TI) Path sampling identity: log C(β◦) C(β ) = β◦ β E z|β [S(z)] dβ (8) 0.0 0.5 1.0 1.5 2.0 500000100000015000002000000 ϕ S(x) Gelman & Meng (1998) Stat. Sci. 13(2): 163–185.
  • 23. R packages Potts model Bayesian computation Conclusion TI algorithm Algorithm 3 Random walk Metropolis with TI 1: Draw random walk proposal β ∼ q(β |β◦) 2: Estimate S(z|β◦) and S(z|β ) by interpolation 3: Evaluate the definite integral in equation (8) 4: Calculate the log M-H acceptance ratio: log{ρ} = log C(β◦) C(β ) + (β − β◦ )S(z) (9) 5: Draw u ∼ Uniform[0, 1] 6: if u < min(1, ρ) then 7: β ← β 8: else 9: β ← β◦ 10: end if
  • 24. R packages Potts model Bayesian computation Conclusion TI in C++ § unsigned pathBeta ( const arma : : umat & neigh , const std : : vector <arma : : uvec> & blocks , const arma : : mat & path , const arma : : umat & z , double & beta , const double p r i o r _beta [ 2 ] , const double bw) { double bprime = rwmh( beta , bw, p r i o r _beta ) ; / / truncated Gaussian / / approximate log (Z( bprime ) / Z( beta ) ) double log_ r a t i o = quadrature ( bprime , beta , path ) + ( bprime−beta ) ∗ sum_ ident ( z , neigh , blocks ) ; / / accept / r e j e c t i f ( u n i f _rand ( ) < exp ( log_ r a t i o ) ) { beta = bprime ; return 1; } return 0; }
  • 25. R packages Potts model Bayesian computation Conclusion Approximate Exchange Algorithm (AEA) Algorithm 4 AEA 1: Draw random walk proposal β ∼ q(β |β◦) 2: Generate w|β by sampling from eq. (3) 3: Calculate the M-H acceptance ratio according to eq. (4): ρ = π(β ) exp {β S(z)} C(β◦) π(β◦) exp {β◦S(z)} C(β ) exp {β◦S(w)} C(β ) exp {β S(w)} C(β◦) (10) 4: Draw u ∼ Uniform[0, 1] 5: if u < min(1, ρ) then 6: β ← β 7: else 8: β ← β◦ 9: end if Murray, Ghahramani & MacKay (2006) Proc. 22nd Conf. UAI, 359–366
  • 26. R packages Potts model Bayesian computation Conclusion AEA in C++ § unsigned exchangeBeta ( const arma : : umat & neigh , const std : : vector <arma : : uvec> & blocks , const arma : : uvec & slice , const arma : : umat & z , double & beta , const double p r i o r _beta [ 2 ] , const unsigned aux , const bool useSW, const bool swapAux , const double bw) { double bprime = rwmh( beta , bw, p r i o r _beta ) ; arma : : umat a l l o c = arma : : zeros <arma : : umat >(z . n_rows−1, z . n_cols ) ; arma : : umat w; i f ( swapAux ) w = z ; else w = randomIndices ( z . n_rows−1, z . n_cols ) ; for ( unsigned i =0; i <aux ; i ++) { i f (useSW) { swLabelsNoData ( neigh , blocks , bprime , w. n_cols , w, a l l o c ) ; } else { gibbsLabelsNoData ( neigh , blocks , w, alloc , bprime ) ; } } double sum_z = sum_ ident ( z , neigh , blocks ) ; double sum_w = sum_ ident (w, neigh , blocks ) ; double log_ r a t i o = ( bprime−beta )∗sum_z + ( beta−bprime )∗sum_w; / / accept / r e j e c t i f ( u n i f _rand ( ) < exp ( log_ r a t i o ) ) { beta = bprime ; return 1; } return 0; }
  • 27. R packages Potts model Bayesian computation Conclusion Approximate Bayesian Computation Algorithm 5 ABC rejection sampler 1: Draw independent proposal β ∼ π(β) 2: Generate w|β by sampling from eq. (3) 3: if S(w) − S(z) < then 4: β ← β 5: else 6: β ← β◦ 7: end if Grelaud, Robert, Marin, Rodolphe & Taly (2009) Bayesian Analysis 4(2) Marin & Robert (2014) Bayesian Essentials with R §8.3
  • 28. R packages Potts model Bayesian computation Conclusion ABC with Metropolis-Hastings Algorithm 6 ABC-MCMC 1: Draw proposal β ∼ q(β |β◦) 2: Generate w|β by sampling from eq. (3) 3: Draw u ∼ Uniform[0, 1] 4: if u < π(β )q(β◦|β ) π(β◦)q(β |β◦) and S(w) − S(z) < then 5: β ← β 6: else 7: β ← β◦ 8: end if Marjoram, Molitor, Plagnol & Tavaré (2003) PNAS 100(26): 15324–28
  • 29. R packages Potts model Bayesian computation Conclusion ABC-MCMC in C++ § unsigned abcBeta ( const arma : : umat & neigh , const std : : vector <arma : : uvec> & blocks , const arma : : umat & z , double & beta , const double p r i o r _beta [ 2 ] , const unsigned aux , const bool useSW, const bool swapAux , const double bw, const double epsilon ) { double bprime = rwmh( beta , bw, p r i o r _beta ) ; arma : : umat a l l o c = arma : : zeros <arma : : umat >(z . n_rows−1, z . n_cols ) ; arma : : umat w; i f ( swapAux ) w = z ; else w = randomIndices ( z . n_rows−1, z . n_cols ) ; for ( unsigned i =0; i <aux ; i ++) { i f (useSW) { swLabelsNoData ( neigh , blocks , bprime , w. n_cols , w, a l l o c ) ; } else { gibbsLabelsNoData ( neigh , blocks , w, alloc , bprime ) ; } } double sum_z = sum_ ident ( z , neigh , blocks ) ; double sum_w = sum_ ident (w, neigh , blocks ) ; double delta = fabs (sum_w − sum_z ) ; i f ( delta < epsilon ) { beta = bprime ; return 1; } return 0; }
  • 30. R packages Potts model Bayesian computation Conclusion Summary bayesImageS supports methods for updating the latent labels: Chequerboard Gibbs sampling (Winkler 2003) Swendsen-Wang (1987) and also methods for updating the inverse temperature β: Pseudolikelihood (Rydén & Titterington 1998) Thermodynamic integration (Gelman & Meng 1998) Exchange algorithm (Murray, Ghahramani & MacKay 2006) Approximate Bayesian computation (Grelaud et al. 2009) Sequential Monte Carlo (ABC-SMC) with pre-computation (Del Moral, Doucet & Jasra 2012; Moores et al. 2015)
  • 31. Appendix Acknowledgements Principal supervisor: Kerrie Mengersen Associate supervisor: Fiona Harden Radiation Oncology Mater Centre (ROMC), Queensland Health: Cathy Hargrave Mike Poulsen Tim Deegan Other co-authors: Christopher Drovandi (QUT) Anthony N. Pettitt (QUT) Christian Robert (University of Warwick & Université Paris Dauphine) PyMCMC team at QUT: Clair Alston Christopher Strickland
  • 32. Appendix For Further Reading I D. Eddelbuettel Seamless R and C++ integration with Rcpp Springer-Verlag, 2013. H. Wickham R packages O’Reilly, 2015. D. Bates & D. Eddelbuettel Fast and elegant numerical linear algebra using the RcppEigen package. J. Stat. Soft. 52(5): 1–24, 2013. D. Eddelbuettel & C. Sanderson RcppArmadillo: Accelerating R with high-performance C++ linear algebra. Comput. Stat. Data Anal. 71: 1054–63, 2014.
  • 33. Appendix For Further Reading II M. Moores & K. Mengersen bayesImageS: Bayesian methods for image segmentation using a hidden Potts model. R package version 0.3-3 https://CRAN.R-project.org/package=bayesImageS M. Moores, A. N. Pettitt & K. Mengersen Scalable Bayesian inference for the inverse temperature of a hidden Potts model. arXiv:1503.08066 [stat.CO], 2015. M. Moores, C. C. Drovandi, K. Mengersen & C. P. Robert Pre-processing for approximate Bayesian computation in image analysis. Statistics & Computing 25(1): 23–33, 2015. M. Moores & K. Mengersen Bayesian approaches to spatial inference: modelling and computational challenges and solutions. In Proc. 33rd Int. Wkshp MaxEnt, AIP Conf. Proc. 1636: 112–117, 2014.
  • 34. Appendix For Further Reading III G. Winkler Image analysis, random fields and Markov chain Monte Carlo methods 2nd ed., Springer-Verlag, 2003. J.-M. Marin & C. P. Robert Bayesian Essentials with R Springer-Verlag, 2014. G. O. Roberts & S. K. Sahu Updating Schemes, Correlation Structure, Blocking and Parameterization for the Gibbs Sampler J. R. Stat. Soc. Ser. B 59(2): 291–317, 1997. T. Rydén & D. M. Titterington Computational Bayesian Analysis of Hidden Markov Models. J. Comput. Graph. Stat., 7(2): 194–211, 1998.
  • 35. Appendix For Further Reading IV A. Gelman & X.-L. Meng Simulating normalizing constants: from importance sampling to bridge sampling to path sampling. Statist. Sci., 13(2): 163–185, 1998. I. Murray, Z. Ghahramani & D. J. C. MacKay MCMC for Doubly-intractable Distributions. Proc. 22nd Conf. UAI, 359–366, 2006. A. Grelaud, C. P. Robert, J.-M. Marin, F. Rodolphe & J.-F. Taly ABC likelihood-free methods for model choice in Gibbs random fields. Bayesian Analysis 4(2): 317–336, 2009. R. H. Swendsen & J.-S. Wang Nonuniversal critical dynamics in Monte Carlo simulations. Physical Review Letters, 58: 86–8, 1987.