sghmc: Stochastic Gradient Hamiltonian Monte Carlo

Description Usage Arguments Value References Examples

View source: R/sghmc.R

Description

Simulates from the posterior defined by the functions logLik and logPrior using stochastic gradient Hamiltonian Monte Carlo. The function uses TensorFlow, so needs TensorFlow for python installed. Currently we use the approximation \hat β = 0, as used in the simulations by the original reference. This will be changed in future implementations.

Usage

1
2
3
sghmc(logLik, dataset, params, stepsize, logPrior = NULL,
  minibatchSize = 0.01, alpha = 0.01, L = 5L, nIters = 10^4L,
  verbose = TRUE, seed = NULL)

Arguments

logLik

function which takes parameters and dataset (list of TensorFlow variables and placeholders respectively) as input. It should return a TensorFlow expression which defines the log likelihood of the model.

dataset

list of numeric R arrays which defines the datasets for the problem. The names in the list should correspond to those referred to in the logLik and logPrior functions

params

list of numeric R arrays which define the starting point of each parameter. The names in the list should correspond to those referred to in the logLik and logPrior functions

stepsize

list of numeric values corresponding to the SGLD stepsizes for each parameter The names in the list should correspond to those in params. Alternatively specify a single numeric value to use that stepsize for all parameters.

logPrior

optional. Default uninformative improper prior. Function which takes parameters (list of TensorFlow variables) as input. The function should return a TensorFlow tensor which defines the log prior of the model.

minibatchSize

optional. Default 0.01. Numeric or integer value that specifies amount of dataset to use at each iteration either as proportion of dataset size (if between 0 and 1) or actual magnitude (if an integer).

alpha

optional. Default 0.01. List of numeric values corresponding to the SGHMC momentum tuning constants (α in the original paper). One value should be given for each parameter in params, the names should correspond to those in params. Alternatively specify a single float to specify that value for all parameters.

L

optional. Default 5L. Integer specifying the trajectory parameter of the simulation, as defined in the main reference.

nIters

optional. Default 10^4L. Integer specifying number of iterations to perform.

verbose

optional. Default TRUE. Boolean specifying whether to print algorithm progress

seed

optional. Default NULL. Numeric seed for random number generation. The default does not declare a seed for the TensorFlow session.

Value

Returns list of arrays for each parameter containing the MCMC chain. Dimension of the form (nIters,paramDim1,paramDim2,...)

References

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
## Not run: 
# Simulate from a Normal Distribution with uninformative, improper prior
dataset = list("x" = rnorm(1000))
params = list("theta" = 0)
logLik = function(params, dataset) { 
    distn = tf$distributions$Normal(params$theta, 1)
    return(tf$reduce_sum(distn$log_prob(dataset$x)))
}
stepsize = list("theta" = 1e-5)
output = sghmc(logLik, dataset, params, stepsize)
# For more examples see vignettes

## End(Not run)

STOR-i/sgmcmc documentation built on Nov. 11, 2020, 6:32 p.m.