Trying to understand what Schrodinger is/isn't does/doesn't. #313
Replies: 2 comments
-
Ha, that makes it sound way more ambitious. I would describe is an experimental attempt at embedding a probabilistic programming language in Scala.
Rainier is not a general probabilistic programming language: it is restricted to models which can be fit using Hamiltonian Monte Carlo. Also, that is pretty much all you can do with the models: fit them with HMC. Schrodinger allows you to express arbitrary probabilistic programs. It also does not restrict what you do with them: you can simulate from them, fit them with arbitrary Monte Carlo algorithms, or apply various transformations. Indeed, I believe it should be possible to implement a Rainier interpreter for Schrodinger, such that probabilistic programs expressed using Schrodinger's abstractions could be fit with Rainier.
Figaro looks more similar to Schrodinger. However, Schrodinger follows the style of Typelevel / Cats libraries and accordingly takes more cues from category theory. For example, Figaro appears to have introduced an ad-hoc concept of
Concrete plans? Not really, no :) vague plans of future documentation? Sure, definitely! Truthfully, I'm still figuring out what Schrodinger does and how to use it 😁
The key phrase there is "fully compose with asynchronous effects such as
In summary, I want to be able to deploy a probabilistic program as a distributed system.
Bayesian inference is about simulating from a posterior distribution to do estimation. Schrodinger supports simulation, therefore it supports estimation via Bayesian inference.
The tl;dr is that Schrodinger is an experimental library whose design goals are:
Both of these are complex topics that will require exposition. |
Beta Was this translation helpful? Give feedback.
-
That sounds really cool. Thanks for the elaborations. They were helpful. I guess I'll have to learn Cats and more about Probabilistic Programs before I can understand any better. |
Beta Was this translation helpful? Give feedback.
-
Is this an attempt to make Scala a viable Probabilistic Programming Language(PPL)?
How does it diverge from rainier? or Figaro?
Documentation questions:
Whichever of these things Schrodinger can do, the README.md could really use some examples.
Beta Was this translation helpful? Give feedback.
All reactions