  How smart can a micron-sized bag of chemicals be? How can an artificial or
real cell make inferences about its environment? From which kinds of
probability distributions can chemical reaction networks sample? We begin
tackling these questions by showing four ways in which a stochastic chemical
reaction network can implement a Boltzmann machine, a stochastic neural network
model that can generate a wide range of probability distributions and compute
conditional probabilities. The resulting models, and the associated theorems,
provide a road map for constructing chemical reaction networks that exploit
their native stochasticity as a computational resource. Finally, to show the
potential of our models, we simulate a chemical Boltzmann machine to classify
and generate MNIST digits in-silico.
