header

how to train your model

This is a recap of techniques mentioned in Direct Feedback Alignment Provides Learning in Deep Neural Networks

Boltzmann machine is a stochastic model.

A set of binary units $s∈S=\{0,1\}^N$ are fully connected with weights $W∈ℝ^{N⨯N}$
$W$'s diagonal is $0$ (no self interaction) and can be chosen to be symmetric.
$θ∈ℝ^N$ are additional biases (that could be included in $W$ in homogeneous coordinates)

We define $p_{s_i=1}$ the probability for unit $s_i$ to be active with $$\al{ ∆E_i &= s_i⋅( W_i ⋅ s + θ_i) \\ p_{s_i=1} &= \left(1+\exp\left(-\frac{∆E_i}{T}\right)\right)^{-1} }$$

let's split $S=V ⨯ H$ where $V$ designates visible units, $H$ hidden units.

A possible choice is to enforce $W$ bipartite with respect to $V$ and $H$

Given a training set, we wish to enforce a distribution $P^{train}(V)$ on units of $V$

Using gradient descent affecting $W$, we optimize the Kullback–Leibler divergence $G$ $$ G := ∑_{v∈V} P^{train}(v)\log\left(\frac{P^{train}(v)}{P^{current}(v)}\right)$$ (where $V$ is the set of all possible configuration)