Slices from a MProb

SMM.SliceType

A slice in dimension $j$ of a function $f \in \mathbb{R}^N$ is defined as $f(p[1],...,p[j],...,p[N])$, where p is the initial parameter vector and p[j] = range(lower[j], stop = upper[j], length = npoints), where lower[j],upper[j] are the bounds of the parameter space in dimension $j$.

Fields

  • res: Dict of resulting slices. For each parameter $p_j$ there is a Dict with as many entries as npoints chosen in doSlices
  • p0: Initial parameter vector dict
  • m0: data moments dict

Examples

julia> m = MProb()
julia> p = OrderedDict(:p1=>1.1,:p2=>pi)
julia> m = OrderedDict(:m1=>rand(),:m2=>e)
julia> Slice(p,m)
source
SMM.optSlicesMethod
optSlices(m::MProb,npoints::Int;parallel=false,tol=1e-5,update=nothing,filename="trace.jld2")

Computes Slices of an MProb and keeps the best value from each slice. This implements a naive form of cyclic coordinate descent in that it optimizes wrt to one direction at a time, keeping the best value. It's naive because it does a grid search in that direction (and disregards any gradient information). The grid size shrinks, however, at a rate update (constant by default)

Algorithm Description

Let $\theta \in \mathbb{R}^K$ be the parameter vector of objective function $L(\theta)$. A cyclic coordinate search algorithm defines cycle $n+1$ as follows:

\[\begin{align*} \theta^{(n+1)}_1 & =\arg\min_{\theta_{1}} L(\theta_{1},\theta_{2}^{(n)},\dots,\theta_{K}^{(n)})\\ \theta^{(n+1)}_2 & =\arg\min_{\theta_{2}} L(\theta_{1}^{(n)},\theta_{2},\theta_{3}^{(n)},\dots,\theta_{K}^{(n)})\\ \theta^{(n+1)}_3 & =\arg\min_{\theta_{3}} L(\theta_{1}^{(n)},\theta_{2}^{(n)},\theta_{3},\theta_{4}^{(n)},\dots,\theta_{K}^{(n)})\\ & \vdots\\ \theta^{(n+1)}_K & =\arg\min_{\theta_{K}} L(\theta_{1}^{(n)},\theta_{2}^{(n)},\dots,\theta_{K}). \end{align*}\]

The algorithm runs until a convergence criterion is met; here we stop at cycle $n$ if the norm of the distance between $\theta^{(n-1)}$ and $\theta^{(n)}$ is less than tol.

source