Stan
2.5.0
probability, sampling & optimization
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
src
stan
mcmc
stepsize_adaptation.hpp
Go to the documentation of this file.
1
#ifndef STAN__MCMC__STEPSIZE__ADAPTATION__BETA
2
#define STAN__MCMC__STEPSIZE__ADAPTATION__BETA
3
4
#include <cmath>
5
#include <
stan/mcmc/base_adaptation.hpp
>
6
7
namespace
stan {
8
9
namespace
mcmc {
10
11
class
stepsize_adaptation
:
public
base_adaptation
{
12
13
public
:
14
15
stepsize_adaptation
():
mu_
(0.5),
delta_
(0.5),
gamma_
(0.05),
16
kappa_
(0.75),
t0_
(10)
17
{
restart
(); }
18
19
void
set_mu
(
double
m) {
mu_
= m; }
20
void
set_delta
(
double
d) {
if
(d > 0 && d < 1)
delta_
= d; }
21
void
set_gamma
(
double
g) {
if
(g > 0)
gamma_
= g; }
22
void
set_kappa
(
double
k) {
if
(k > 0)
kappa_
= k; }
23
void
set_t0
(
double
t) {
if
(t > 0)
t0_
= t; }
24
25
double
get_mu
() {
return
mu_
; }
26
double
get_delta
() {
return
delta_
; }
27
double
get_gamma
() {
return
gamma_
; }
28
double
get_kappa
() {
return
kappa_
; }
29
double
get_t0
() {
return
t0_
; }
30
31
void
restart
() {
32
counter_
= 0;
33
s_bar_
= 0;
34
x_bar_
= 0;
35
}
36
37
void
learn_stepsize
(
double
& epsilon,
double
adapt_stat) {
38
39
++
counter_
;
40
41
adapt_stat = adapt_stat > 1 ? 1 : adapt_stat;
42
43
// Nesterov Dual-Averaging of log(epsilon)
44
const
double
eta = 1.0 / (
counter_
+
t0_
);
45
46
s_bar_
= (1.0 - eta) *
s_bar_
+ eta * (
delta_
- adapt_stat);
47
48
const
double
x =
mu_
-
s_bar_
*
std::sqrt
(
counter_
) /
gamma_
;
49
const
double
x_eta =
std::pow
(
counter_
, -
kappa_
);
50
51
x_bar_
= (1.0 - x_eta) *
x_bar_
+ x_eta * x;
52
53
epsilon =
std::exp
(x);
54
55
}
56
57
void
complete_adaptation
(
double
& epsilon) {
58
epsilon =
std::exp
(
x_bar_
);
59
}
60
61
protected
:
62
63
double
counter_
;
// Adaptation iteration
64
double
s_bar_
;
// Moving average statistic
65
double
x_bar_
;
// Moving average parameter
66
double
mu_
;
// Asymptotic mean of parameter
67
double
delta_
;
// Target value of statistic
68
double
gamma_
;
// Adaptation scaling
69
double
kappa_
;
// Adaptation shrinkage
70
double
t0_
;
// Effective starting iteration
71
72
};
73
74
}
// mcmc
75
76
}
// stan
77
78
#endif
stan::mcmc::stepsize_adaptation::complete_adaptation
void complete_adaptation(double &epsilon)
Definition:
stepsize_adaptation.hpp:57
stan::mcmc::stepsize_adaptation::delta_
double delta_
Definition:
stepsize_adaptation.hpp:67
stan::mcmc::stepsize_adaptation::restart
void restart()
Definition:
stepsize_adaptation.hpp:31
base_adaptation.hpp
stan::mcmc::stepsize_adaptation
Definition:
stepsize_adaptation.hpp:11
stan::mcmc::stepsize_adaptation::counter_
double counter_
Definition:
stepsize_adaptation.hpp:63
stan::mcmc::stepsize_adaptation::set_t0
void set_t0(double t)
Definition:
stepsize_adaptation.hpp:23
stan::agrad::pow
fvar< T > pow(const fvar< T > &x1, const fvar< T > &x2)
Definition:
pow.hpp:17
stan::mcmc::stepsize_adaptation::learn_stepsize
void learn_stepsize(double &epsilon, double adapt_stat)
Definition:
stepsize_adaptation.hpp:37
stan::mcmc::stepsize_adaptation::kappa_
double kappa_
Definition:
stepsize_adaptation.hpp:69
stan::mcmc::stepsize_adaptation::set_mu
void set_mu(double m)
Definition:
stepsize_adaptation.hpp:19
stan::mcmc::stepsize_adaptation::get_mu
double get_mu()
Definition:
stepsize_adaptation.hpp:25
stan::mcmc::stepsize_adaptation::mu_
double mu_
Definition:
stepsize_adaptation.hpp:66
stan::mcmc::stepsize_adaptation::get_kappa
double get_kappa()
Definition:
stepsize_adaptation.hpp:28
stan::mcmc::stepsize_adaptation::x_bar_
double x_bar_
Definition:
stepsize_adaptation.hpp:65
stan::agrad::sqrt
fvar< T > sqrt(const fvar< T > &x)
Definition:
sqrt.hpp:15
stan::mcmc::stepsize_adaptation::stepsize_adaptation
stepsize_adaptation()
Definition:
stepsize_adaptation.hpp:15
stan::mcmc::stepsize_adaptation::s_bar_
double s_bar_
Definition:
stepsize_adaptation.hpp:64
stan::mcmc::stepsize_adaptation::gamma_
double gamma_
Definition:
stepsize_adaptation.hpp:68
stan::mcmc::stepsize_adaptation::set_gamma
void set_gamma(double g)
Definition:
stepsize_adaptation.hpp:21
stan::mcmc::stepsize_adaptation::set_kappa
void set_kappa(double k)
Definition:
stepsize_adaptation.hpp:22
stan::mcmc::base_adaptation
Definition:
base_adaptation.hpp:8
stan::mcmc::stepsize_adaptation::get_t0
double get_t0()
Definition:
stepsize_adaptation.hpp:29
stan::mcmc::stepsize_adaptation::get_gamma
double get_gamma()
Definition:
stepsize_adaptation.hpp:27
stan::mcmc::stepsize_adaptation::get_delta
double get_delta()
Definition:
stepsize_adaptation.hpp:26
stan::agrad::exp
fvar< T > exp(const fvar< T > &x)
Definition:
exp.hpp:16
stan::mcmc::stepsize_adaptation::t0_
double t0_
Definition:
stepsize_adaptation.hpp:70
stan::mcmc::stepsize_adaptation::set_delta
void set_delta(double d)
Definition:
stepsize_adaptation.hpp:20
[
Stan Home Page
]
© 2011–2014, Stan Development Team.