Synthesis

Many problems in the Information Age revolve around structured generation. Given a collection of game rules and an objective, what is a successful policy that obeys those rules? Given a high-level program specification (i.e. in the C programming language), what is the optimal sequence of machine instructions to execute the program? Given a natural language prompt, what is an image which is likely to be found on the Internet under that prompt?

I have decided to collect these various problems and methods under the title synthesis, to evoke the formal literature around "program synthesis" and to highlight the "generative" or creative nature of these methods. Practically, this topic might cover ideas as diverse as reinforcement learning, model-guided and type-directed program synthesis, Markov chain-Monte Carlo samplers, or ODEs and SDEs for denoising ("diffusion", "flow matching", or "score matching") models.

Some Linotype readers may wonder why these ideas were not collected under other topics. I would like to highlight that, here, the topic of synthesis places a strong emphasis on structured generation... including methods for enforcing specified constraints, whether they are model-based, model-free, or heuristic.

Flow matching

Given samples of an unknown distribution, flow matching is a common method used to sample from the underlying distribution by constructing an ODE whose solution interpolates between a known distribution and the unknown distribution.

Flow Matching