Introduction to Anglican Jan-Willem van de Meent Anatomy of an - - PowerPoint PPT Presentation

introduction to anglican
SMART_READER_LITE
LIVE PREVIEW

Introduction to Anglican Jan-Willem van de Meent Anatomy of an - - PowerPoint PPT Presentation

Introduction to Anglican Jan-Willem van de Meent Anatomy of an Anglican Program (ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta


slide-1
SLIDE 1

Introduction to Anglican

Jan-Willem van de Meent

slide-2
SLIDE 2

(ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta 5 3))] (observe (flip theta) outcome) (> theta 0.7))) (defn -main [& args] (let[samples (doquery :rmh one-flip [true])] (prn (frequencies (map :result (take 1000 samples))))))

Anatomy of an Anglican Program

slide-3
SLIDE 3

Namespace declaration

Anatomy of an Anglican Program

(ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta 5 3))] (observe (flip theta) outcome) (> theta 0.7))) (defn -main [& args] (let[samples (doquery :rmh one-flip [true])] (prn (frequencies (map :result (take 1000 samples))))))

slide-4
SLIDE 4

Anatomy of an Anglican Program

(ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta 5 3))] (observe (flip theta) outcome) (> theta 0.7))) (defn -main [& args] (let[samples (doquery :rmh one-flip [true])] (prn (frequencies (map :result (take 1000 samples))))))

Namespace declaration

slide-5
SLIDE 5

Anatomy of an Anglican Program

(ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta 5 3))] (observe (flip theta) outcome) (> theta 0.7))) (defn -main [& args] (let[samples (doquery :rmh one-flip [true])] (prn (frequencies (map :result (take 1000 samples))))))

Namespace declaration

slide-6
SLIDE 6

Anglican program

Anatomy of an Anglican Program

(ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta 5 3))] (observe (flip theta) outcome) (> theta 0.7))) (defn -main [& args] (let[samples (doquery :rmh one-flip [true])] (prn (frequencies (map :result (take 1000 samples))))))

slide-7
SLIDE 7

Name

Anatomy of an Anglican Program

(ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta 5 3))] (observe (flip theta) outcome) (> theta 0.7))) (defn -main [& args] (let[samples (doquery :rmh one-flip [true])] (prn (frequencies (map :result (take 1000 samples))))))

slide-8
SLIDE 8

Arguments

Anatomy of an Anglican Program

(ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta 5 3))] (observe (flip theta) outcome) (> theta 0.7))) (defn -main [& args] (let[samples (doquery :rmh one-flip [true])] (prn (frequencies (map :result (take 1000 samples))))))

slide-9
SLIDE 9

Return value

Anatomy of an Anglican Program

(ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta 5 3))] (observe (flip theta) outcome) (> theta 0.7))) (defn -main [& args] (let[samples (doquery :rmh one-flip [true])] (prn (frequencies (map :result (take 1000 samples))))))

slide-10
SLIDE 10

Distributions

Anatomy of an Anglican Program

(ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta 5 3))] (observe (flip theta) outcome) (> theta 0.7))) (defn -main [& args] (let[samples (doquery :rmh one-flip [true])] (prn (frequencies (map :result (take 1000 samples))))))

slide-11
SLIDE 11

Generate a random value

Anatomy of an Anglican Program

(ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta 5 3))] (observe (flip theta) outcome) (> theta 0.7))) (defn -main [& args] (let[samples (doquery :rmh one-flip [true])] (prn (frequencies (map :result (take 1000 samples))))))

slide-12
SLIDE 12

Condition

  • n a value

Anatomy of an Anglican Program

(ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta 5 3))] (observe (flip theta) outcome) (> theta 0.7))) (defn -main [& args] (let[samples (doquery :rmh one-flip [true])] (prn (frequencies (map :result (take 1000 samples))))))

slide-13
SLIDE 13

Lazy sequence

  • f samples

Anatomy of an Anglican Program

(ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta 5 3))] (observe (flip theta) outcome) (> theta 0.7))) (defn -main [& args] (let[samples (doquery :rmh one-flip [true])] (prn (frequencies (map :result (take 1000 samples))))))

slide-14
SLIDE 14

Inference method

Anatomy of an Anglican Program

(ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta 5 3))] (observe (flip theta) outcome) (> theta 0.7))) (defn -main [& args] (let[samples (doquery :rmh one-flip [true])] (prn (frequencies (map :result (take 1000 samples))))))

slide-15
SLIDE 15

Anglican query

Anatomy of an Anglican Program

(ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta 5 3))] (observe (flip theta) outcome) (> theta 0.7))) (defn -main [& args] (let[samples (doquery :rmh one-flip [true])] (prn (frequencies (map :result (take 1000 samples))))))

slide-16
SLIDE 16

Argument values

Anatomy of an Anglican Program

(ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta 5 3))] (observe (flip theta) outcome) (> theta 0.7))) (defn -main [& args] (let[samples (doquery :rmh one-flip [true])] (prn (frequencies (map :result (take 1000 samples))))))

slide-17
SLIDE 17

Argument values

Anatomy of an Anglican Program

(ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta 5 3))] (observe (flip theta) outcome) (> theta 0.7))) (defn -main [& args] (let[samples (doquery :rmh one-flip [true])] (prn (frequencies (map :result (take 1000 samples))))))

slide-18
SLIDE 18

Analysis

Anatomy of an Anglican Program

(ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta 5 3))] (observe (flip theta) outcome) (> theta 0.7))) (defn -main [& args] (let[samples (doquery :rmh one-flip [true])] (prn (frequencies (map :result (take 1000 samples))))))

slide-19
SLIDE 19

Analysis

Anatomy of an Anglican Program

(ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta 5 3))] (observe (flip theta) outcome) (> theta 0.7))) (defn -main [& args] (let[samples (doquery :rmh one-flip [true])] (prn (frequencies (map :result (take 1000 samples))))))

slide-20
SLIDE 20

Analysis

Anatomy of an Anglican Program

(ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta 5 3))] (observe (flip theta) outcome) (> theta 0.7))) (defn -main [& args] (let[samples (doquery :rmh one-flip [true])] (prn (frequencies (map :result (take 1000 samples))))))

slide-21
SLIDE 21

How do I run this?

(ns examples.one-flip (:use [anglican.core :exclude [-main]] [anglican emit runtime stat]) (:gen-class)) (defquery one-flip [outcome] (let [theta (sample (beta 5 3))] (observe (flip theta) outcome) (> theta 0.7))) (defn -main [& args] (let[samples (doquery :rmh one-flip [true])] (prn (frequencies (map :result (take 1000 samples))))))