Variational Approximation

変分近似

source

lam

 lam (x:jaxtyping.Float[Array,''])

\(\!\) Lambda 関数 \[\lambda(x)=\frac{1}{2x}\left[\sigma(x)-\frac{1}{2}\right]\] \(\!\)

Type Details
x Float[Array, ’’] \(x\)
Returns Float[Array, ’’] \(\lambda(x)\)

source

Ptt

 Ptt (Ptm:jaxtyping.Float[Array,'NN'], x:jaxtyping.Float[Array,'N'],
      xi:jaxtyping.Float[Array,''])

\(\!\) 推定誤差共分散行列 \(\mathbf P_{t/t}\)

\[\mathbf P_{t/t}=\mathbf P_{t/t-1}-\frac{2\lambda(\xi_t)}{1+2\lambda(\xi_t)\mathbf x_t^T\mathbf P_{t/t-1}\mathbf x_t}\left(\mathbf P_{t/t-1}\mathbf x_t\right)\left(\mathbf P_{t/t-1}\mathbf x_t\right)^T \]

\[\mathbf P_{t/t}^{-1}=\mathbf P_{t/t-1}^{-1}+2\lambda(\xi_t)\mathbf x_t\mathbf x_t^T\] \(\!\)

Type Details
Ptm Float[Array, ‘N N’] \(\mathbf P_{t/t-1}\)
x Float[Array, ‘N’] \(\mathbf x_t\)
xi Float[Array, ’’] \(\xi_t\)
Returns Float[Array, ‘N N’] \(\mathbf P_{t/t}\)

source

wtt

 wtt (Ptm:jaxtyping.Float[Array,'NN'], Ptt_:jaxtyping.Float[Array,'NN'],
      w:jaxtyping.Float[Array,'N'], x:jaxtyping.Float[Array,'N'],
      y:jaxtyping.Float[Array,''])

\(\!\) 濾波推定値 \(\hat{\mathbf w}_{t/t}\) \[\hat{\mathbf w}_{t/t}=\mathbf P_{t/t}\left(\mathbf P_{t/t-1}^{-1}\hat{\mathbf w}_{t/t-1}+(y_t-1/2)\mathbf x_t\right)\] \(\!\)

Type Details
Ptm Float[Array, ‘N N’] \(\mathbf P_{t/t-1}\)
Ptt_ Float[Array, ‘N N’] \(\mathbf P_{t/t}\)
w Float[Array, ‘N’] \(\hat{\mathbf w}_{t/t-1}\)
x Float[Array, ‘N’] \(\mathbf x_t\)
y Float[Array, ’’] \(y_t\)
Returns Float[Array, ‘N’] \(\hat{\mathbf w}_{t/t}\)

source

xit

 xit (Cov:jaxtyping.Float[Array,'NN'], w:jaxtyping.Float[Array,'N'],
      x:jaxtyping.Float[Array,'N'])

\(\!\) 変分パラメータ \(\xi_t\) \[\xi_t=\sqrt{\mathbf x_t^T\mathbb E[\mathbf w\mathbf w^T]\mathbf x_t}=\sqrt{\mathbf x_t^T\left(\boldsymbol \Sigma+\hat{\mathbf w}\hat{\mathbf w}^T\right)\mathbf x_t}\] \(\!\)

Type Details
Cov Float[Array, ‘N N’] \(\boldsymbol\Sigma\)
w Float[Array, ‘N’] \(\hat{\mathbf w}\)
x Float[Array, ‘N’] \(\mathbf x_t\)
Returns Float[Array, ’’] \(\xi_t\)

source

VApre_out

 VApre_out (W:jaxtyping.Float[Array,'TN'], P:jaxtyping.Float[Array,'TNN'],
            Xi:jaxtyping.Float[Array,'T'])

\(\!\) VApre 関数の返り値

\(\!\) Type Details
W Float[Array, ‘T N’] \(\{\hat{\mathbf w}_{t/t}\}_{t=0,\ldots,T-1}\)
P Float[Array, ‘T N N’] \(\{\mathbf P_{t/t}\}_{t=0,\ldots,T-1}\)
Xi Float[Array, ‘T’] \(\{\xi_t\}_{t=0,\ldots,T-1}\)

\(\!\)


source

VApre

 VApre (N:int, T:int, x:jaxtyping.Float[Array,'{T}{N}'],
        y:jaxtyping.Float[Array,'{T}{N}'],
        G:jaxtyping.Float[Array,'{N}{N}'],
        w0:jaxtyping.Float[Array,'{N}'],
        P0:jaxtyping.Float[Array,'{N}{N}'])

\(\!\) 一段予測推定値 \(\hat{\mathbf w}_{t/t-1}\) を使う変分近似法 \[\xi_t=\sqrt{\mathbf x_t^T\left(\mathbf P_{t/t-1}+\hat{\mathbf w}_{t/t-1}\hat{\mathbf w}_{t/t-1}^T\right)\mathbf x_t}\] \(\!\)

Type Details
N int \(N\)
T int \(T\)
x Float[Array, ‘{T} {N}’] \(\{ \mathbf x_t \}_{t=0,\ldots,T-1}\)
y Float[Array, ‘{T} {N}’] \(\{ y_t \}_{t=0,\ldots,T-1}\)
G Float[Array, ‘{N} {N}’] \(\boldsymbol\Gamma\)
w0 Float[Array, ‘{N}’] \(\hat{\mathbf w}_{0/-1}\)
P0 Float[Array, ‘{N} {N}’] \(\mathbf P_{0/-1}\)
Returns VApre_out

source

VAEM_out

 VAEM_out (W:jaxtyping.Float[Array,'TN'], P:jaxtyping.Float[Array,'TNN'],
           Xi:jaxtyping.Float[Array,'T'], Iters:jaxtyping.Int[Array,'T'])

\(\!\) VAEM 関数の返り値

\(\!\) Type Details
W Float[Array, ‘T N’] \(\{\hat{\mathbf w}_{t/t}\}_{t=0,\ldots,T-1}\)
P Float[Array, ‘T N N’] \(\{\mathbf P_{t/t}\}_{t=0,\ldots,T-1}\)
Xi Float[Array, ‘T’] \(\{\xi_t\}_{t=0,\ldots,T-1}\)
Iters Int[Array, ‘T’] \(\{\mathrm{Iter}_t\}_{t=0,\ldots,T-1}\)

\(\!\)


source

VAEM

 VAEM (N:int, T:int, x:jaxtyping.Float[Array,'{T}{N}'],
       y:jaxtyping.Float[Array,'{T}'], G:jaxtyping.Float[Array,'{N}{N}'],
       w0:jaxtyping.Float[Array,'{N}'],
       P0:jaxtyping.Float[Array,'{N}{N}'],
       epsilon:jaxtyping.Float[Array,''], max_iter:int=100)

\(\!\) 濾波推定値 \(\hat{\mathbf w}_{t/t}\) を使う変分近似法。EMアルゴリズムを使う。 \[\xi_t=\sqrt{\mathbf x_t^T\left(\mathbf P_{t/t}+\hat{\mathbf w}_{t/t}\hat{\mathbf w}_{t/t}^T\right)\mathbf x_t}\] \(\!\)

Type Default Details
N int \(N\)
T int \(T\)
x Float[Array, ‘{T} {N}’] \(\{ \mathbf x_t \}_{t=0,\ldots,T-1}\)
y Float[Array, ‘{T}’] \(\{ y_t \}_{t=0,\ldots,T-1}\)
G Float[Array, ‘{N} {N}’] \(\boldsymbol\Gamma\)
w0 Float[Array, ‘{N}’] \(\hat{\mathbf w}_{0/-1}\)
P0 Float[Array, ‘{N} {N}’] \(\mathbf P_{0/-1}\)
epsilon Float[Array, ’’] \(\epsilon\ge \|\xi\\^{\text{new}}_t-\xi\\^{\text{old}}_t\|\)
max_iter int 100 繰り返し回数の上限
Returns VAEM_out