All Projects → probcomp → Metaprob

probcomp / Metaprob

Licence: gpl-3.0
An embedded language for probabilistic programming and meta-programming.

Programming Languages

javascript
184084 projects - #8 most used programming language
clojure
4091 projects

Projects that are alternatives of or similar to Metaprob

Project kojak
Training a Neural Network to Detect Gestures and Control Smart Home Devices with OpenCV in Python
Stars: ✭ 147 (-5.16%)
Mutual labels:  data-science
Machine Learning With Python
Practice and tutorial-style notebooks covering wide variety of machine learning techniques
Stars: ✭ 2,197 (+1317.42%)
Mutual labels:  data-science
Data Science Stack Cookiecutter
🐳📊🤓Cookiecutter template to launch an awesome dockerized Data Science toolstack (incl. Jupyster, Superset, Postgres, Minio, AirFlow & API Star)
Stars: ✭ 153 (-1.29%)
Mutual labels:  data-science
Testovoe
Home assignments for data science positions
Stars: ✭ 149 (-3.87%)
Mutual labels:  data-science
The Python Workshop
A New, Interactive Approach to Learning Python
Stars: ✭ 150 (-3.23%)
Mutual labels:  data-science
Artificial Intelligence Projects
Collection of Artificial Intelligence projects.
Stars: ✭ 152 (-1.94%)
Mutual labels:  data-science
Nyc Transport
A Unified Database of NYC transport (subway, taxi/Uber, and citibike) data.
Stars: ✭ 148 (-4.52%)
Mutual labels:  data-science
Pyfts
An open source library for Fuzzy Time Series in Python
Stars: ✭ 154 (-0.65%)
Mutual labels:  data-science
Benchm Ml
A minimal benchmark for scalability, speed and accuracy of commonly used open source implementations (R packages, Python scikit-learn, H2O, xgboost, Spark MLlib etc.) of the top machine learning algorithms for binary classification (random forests, gradient boosted trees, deep neural networks etc.).
Stars: ✭ 1,835 (+1083.87%)
Mutual labels:  data-science
Datasciencevm
Tools and Docs on the Azure Data Science Virtual Machine (http://aka.ms/dsvm)
Stars: ✭ 153 (-1.29%)
Mutual labels:  data-science
Data Science Portfolio
A Portfolio of my Data Science Projects
Stars: ✭ 149 (-3.87%)
Mutual labels:  data-science
Labs
Labs for the Foundations of Applied Mathematics curriculum.
Stars: ✭ 150 (-3.23%)
Mutual labels:  data-science
Graspologic
Python package for graph statistics
Stars: ✭ 153 (-1.29%)
Mutual labels:  data-science
Machine Learning
🌎 machine learning tutorials (mainly in Python3)
Stars: ✭ 1,924 (+1141.29%)
Mutual labels:  data-science
Color recognition
🎨 Color recognition & classification & detection on webcam stream / on video / on single image using K-Nearest Neighbors (KNN) is trained with color histogram features by OpenCV.
Stars: ✭ 154 (-0.65%)
Mutual labels:  data-science
Ml Hub
🧰 Multi-user development platform for machine learning teams. Simple to setup within minutes.
Stars: ✭ 148 (-4.52%)
Mutual labels:  data-science
Mariana
The Cutest Deep Learning Framework which is also a wonderful Declarative Language
Stars: ✭ 151 (-2.58%)
Mutual labels:  data-science
Rbbjson
Flexible JSON traversal for rapid prototyping.
Stars: ✭ 155 (+0%)
Mutual labels:  data-science
Open Solution Toxic Comments
Open solution to the Toxic Comment Classification Challenge
Stars: ✭ 154 (-0.65%)
Mutual labels:  data-science
Go Tsne
t-Distributed Stochastic Neighbor Embedding (t-SNE) in Go
Stars: ✭ 153 (-1.29%)
Mutual labels:  data-science

Metaprob

Build Status Stability: Experimental

A language for probabilistic programming and metaprogramming, embedded in Clojure.

Note: Metaprob is currently an unstable research prototype, with little documentation and low test coverage. Also, future versions may not be backwards compatible with this version. We do not recommend using it for any purpose other than basic research, and are not yet able to support users outside of the MIT Probabilistic Computing Project.

Key features

  • Models can be represented via generative code, i.e. ordinary code that makes stochastic choices
  • Models can also be represented via approximations, e.g. importance samplers with nontrivial weights
  • Custom inference algorithms can be written in user-space code, via reflective language constructs for:
    • tracing program executions
    • using partial traces to specify interventions and constraints
  • Generic inference algorithms are provided via user-space code in a standard library; adding new algorithms does not require modifying the language implementation
  • All Inference algorithms are ordinary generative code and can be traced and treated as models
  • New probability distributions and inference algorithms are first-class citizens that can be created dynamically during program execution

Motivations

  • Lightweight embeddings of probabilistic programming and inference metaprogramming
    • Interactive, browser-based data analysis tools (via ClojureScript)
    • Smart data pipelines suitable for enterprise deployment (via Clojure on the JVM)
  • “Small core” language potentially suitable for formal specification and verification
  • Teaching
    • Undergraduates and graduate students interested in implementing their own minimal PPL
    • Software engineers and data engineers interested in probabilistic modeling and inference
  • Research in artificial intelligence and cognitive science
    • Combining symbolic and probabilistic reasoning, e.g. via integration with Clojure’s core.logic
    • “Theory of mind” models, where an agent’s reasoning is modeled as an inference metaprogram acting on a generative model
    • Reinforcement learning and other “nested” applications of modeling and approximate inference
    • Causal reasoning, via a notion of interventions that extends Pearl's “do” operator
  • Research in probabilistic meta-programming, e.g. synthesis, reflection, runtime code generation

Modeling and tracing

Generative models are represented as ordinary functions that make stochastic choices.

;; Flip a fair coin n times
(def fair-coin-model
 (gen [n]
   (map (fn [i] (at i flip 0.5)) (range n))))
;; Flip a possibly weighted coin n times
(def biased-coin-model
 (gen [n]
   (let [p (at "p" uniform 0 1)]
     (map (fn [i] (at i flip p)) (range n)))))

Execution traces of models, which record the random choices they make, are first-class values that inference algorithms can manipulate.

We obtain scored traces using infer-and-score, which invokes a “tracing interpreter” that is itself a Metaprob program.

(infer-and-score :procedure fair-coin-model, :inputs [3])

Documentation

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].