diff options
| author | ziejd2 | 2017-09-28 15:04:40 -0500 |
|---|---|---|
| committer | ziejd2 | 2017-09-28 15:04:40 -0500 |
| commit | 8070dc963753142bb86c4ed698d91fd623ed28e7 (patch) | |
| tree | d0f6dd8fc46a49b819aa55c1a90faa14d8448883 /sourcecodes/bnt-master/nethelp3.3/hmc.htm | |
| parent | 7cc31810d53176e805532b2789955f4eedbce6bb (diff) | |
| download | BNW-8070dc963753142bb86c4ed698d91fd623ed28e7.tar.gz | |
BNW using Octave instead of Matlab.
This version of BNW should perform the same as the original version. The only difference is that it uses Octave instead of Matlab when running BayesNet Toolbox during parameter learning. I am calling this BNW_1.02. It can be accessed at: compbio.uthsc.edu/BNW_1.02
Diffstat (limited to 'sourcecodes/bnt-master/nethelp3.3/hmc.htm')
| -rw-r--r-- | sourcecodes/bnt-master/nethelp3.3/hmc.htm | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/sourcecodes/bnt-master/nethelp3.3/hmc.htm b/sourcecodes/bnt-master/nethelp3.3/hmc.htm new file mode 100644 index 00000000..53afeb31 --- /dev/null +++ b/sourcecodes/bnt-master/nethelp3.3/hmc.htm @@ -0,0 +1,129 @@ +<html> +<head> +<title> +Netlab Reference Manual hmc +</title> +</head> +<body> +<H1> hmc +</H1> +<h2> +Purpose +</h2> +Hybrid Monte Carlo sampling. + +<p><h2> +Synopsis +</h2> +<PRE> + +samples = hmc(f, x, options, gradf) +samples = hmc(f, x, options, gradf, P1, P2, ...) +[samples, energies, diagn] = hmc(f, x, options, gradf) +s = hmc('state') +hmc('state', s) +</PRE> + + +<p><h2> +Description +</h2> +<CODE>samples = hmc(f, x, options, gradf)</CODE> uses a +hybrid Monte Carlo algorithm to sample from the distribution <CODE>p ~ exp(-f)</CODE>, +where <CODE>f</CODE> is the first argument to <CODE>hmc</CODE>. +The Markov chain starts at the point <CODE>x</CODE>, and the function <CODE>gradf</CODE> +is the gradient of the `energy' function <CODE>f</CODE>. + +<p><CODE>hmc(f, x, options, gradf, p1, p2, ...)</CODE> allows +additional arguments to be passed to <CODE>f()</CODE> and <CODE>gradf()</CODE>. + +<p><CODE>[samples, energies, diagn] = hmc(f, x, options, gradf)</CODE> also returns +a log of the energy values (i.e. negative log probabilities) for the +samples in <CODE>energies</CODE> and <CODE>diagn</CODE>, a structure containing +diagnostic information (position, momentum and +acceptance threshold) for each step of the chain in <CODE>diagn.pos</CODE>, +<CODE>diagn.mom</CODE> and +<CODE>diagn.acc</CODE> respectively. All candidate states (including rejected ones) +are stored in <CODE>diagn.pos</CODE>. + +<p><CODE>[samples, energies, diagn] = hmc(f, x, options, gradf)</CODE> also returns the +<CODE>energies</CODE> (i.e. negative log probabilities) corresponding to the samples. +The <CODE>diagn</CODE> structure contains three fields: + +<p><CODE>pos</CODE> the position vectors of the dynamic process. + +<p><CODE>mom</CODE> the momentum vectors of the dynamic process. + +<p><CODE>acc</CODE> the acceptance thresholds. + +<p><CODE>s = hmc('state')</CODE> returns a state structure that contains the state of the +two random number generators <CODE>rand</CODE> and <CODE>randn</CODE> and the momentum of +the dynamic process. These are contained in fields +<CODE>randstate</CODE>, <CODE>randnstate</CODE> +and <CODE>mom</CODE> respectively. The momentum state is +only used for a persistent momentum update. + +<p><CODE>hmc('state', s)</CODE> resets the state to <CODE>s</CODE>. If <CODE>s</CODE> is an integer, +then it is passed to <CODE>rand</CODE> and <CODE>randn</CODE> and the momentum variable +is randomised. If <CODE>s</CODE> is a structure returned by <CODE>hmc('state')</CODE> then +it resets the generator to exactly the same state. + +<p>The optional parameters in the <CODE>options</CODE> vector have the following +interpretations. + +<p><CODE>options(1)</CODE> is set to 1 to display the energy values and rejection +threshold at each step of the Markov chain. If the value is 2, then the +position vectors at each step are also displayed. + +<p><CODE>options(5)</CODE> is set to 1 if momentum persistence is used; default 0, for +complete replacement of momentum variables. + +<p><CODE>options(7)</CODE> defines the trajectory length (i.e. the number of leap-frog +steps at each iteration). Minimum value 1. + +<p><CODE>options(9)</CODE> is set to 1 to check the user defined gradient function. + +<p><CODE>options(14)</CODE> is the number of samples retained from the Markov chain; +default 100. + +<p><CODE>options(15)</CODE> is the number of samples omitted from the start of the +chain; default 0. + +<p><CODE>options(17)</CODE> defines the momentum used when a persistent update of +(leap-frog) momentum is used. This is bounded to the interval [0, 1). + +<p><CODE>options(18)</CODE> is the step size used in leap-frogs; default 1/trajectory +length. + +<p><h2> +Examples +</h2> +The following code fragment samples from the posterior distribution of +weights for a neural network. +<PRE> + +w = mlppak(net); +[samples, energies] = hmc('neterr', w, options, 'netgrad', net, x, t); +</PRE> + + +<p><h2> +Algorithm +</h2> + +The algroithm follows the procedure outlined in Radford Neal's technical +report CRG-TR-93-1 from the University of Toronto. The stochastic update of +momenta samples from a zero mean unit covariance gaussian. + +<p><h2> +See Also +</h2> +<CODE><a href="metrop.htm">metrop</a></CODE><hr> +<b>Pages:</b> +<a href="index.htm">Index</a> +<hr> +<p>Copyright (c) Ian T Nabney (1996-9) + + +</body> +</html> \ No newline at end of file |
