Skip to content

0.4.0

Latest

Choose a tag to compare

@randomir randomir released this 15 Sep 20:49
· 2 commits to main since this release
84f2b0c

New Features

  • Add an Ising layer for performing quantum annealing-based neural
    network computations. Its backpropagation is computed, or
    approximated, using sample covariance.
  • Add statistic base class for untrainable statistics, e.g., sufficient
    statistics of Ising models.
  • Add a static affine module. It is static in the sense that there are
    no trainable parameters.
  • Allow hidden units to be connected during GraphRestrictedBoltzmannMachine
    construction.
  • Add BipartiteGibbsSampler for performing Gibbs sampling of bipartite
    graph-restricted Boltzmann Machines.
  • Add conditional sampling functionality for the BlockSampler.

Upgrade Notes

  • Add .clone() to the return of BlockSampler.sample to prevent
    unintended in-place modification of the sampler's internal state due
    to returning a reference to the underlying tensor.
  • Add conditional sampling functionality for the DimodSampler.
  • Initialize GraphRestrictedBoltzmannMachine weights using Gaussian
    random variables with graph-connectivity-dependent standard
    deviations. For an edge $(u, v)$, the default standard deviation is
    $2.5 / (\deg(u)\deg(v))^{1/4}$. The weight-initialization strategy is
    grounded in Hinton's practical guide for RBM training, which
    recommends sampling weights from a Gaussian distribution with mean 0
    and standard deviation 0.01 (for zero-one-valued RBMs). The
    connectivity scaling keeps the energy functional extensive on sparse
    graphs, while the temperature factor initializes the GRBM deep in a
    paramagnetic regime for QPU-backed sampling, consistent with the
    Sherrington-Kirkpatrick model.

Bug Fixes

  • The Gaussian kernel incorrectly computed pairwise distances with l2
    norm without squaring it. This fixes the bug by squaring the l2 norm.
  • GraphRestrictedBoltzmannMachines should not be allowed to be defined
    with self-loops. Presence of self-loops is now checked at construction
    time.
  • Raise a ValueError when GraphRestrictedBoltzmannMachine.set_quadratic
    receives an edge that is not in the model. Previously, an unknown edge
    overwrote every quadratic bias.