Probabilistic programming languages...Probabilistic programming languages •Build a formal language...

17
Noah D. Goodman Stanford University ngoodman@ stanford.edu Computation Cognition Lab & Probabilistic programming languages Microsoft Faculty Summit July 9, 2015

Transcript of Probabilistic programming languages...Probabilistic programming languages •Build a formal language...

Page 1: Probabilistic programming languages...Probabilistic programming languages •Build a formal language for describing probabilistic models starting from a universal programming language.

Noah D. GoodmanStanford University

[email protected]

Computation Cognition Lab

&

Probabilistic programming languages

Microsoft Faculty SummitJuly 9, 2015

Page 2: Probabilistic programming languages...Probabilistic programming languages •Build a formal language for describing probabilistic models starting from a universal programming language.

Probabilistic Models

• A powerful representation of uncertain knowledge and reasoning.

• Specification is a heterogeneous mess of math, english, dependence diagrams, etc.

P (H|d)

Page 3: Probabilistic programming languages...Probabilistic programming languages •Build a formal language for describing probabilistic models starting from a universal programming language.

Programming languages

• Uniform, universal specification of process, with high-level abstractions.

• No intrinsic ability to represent and reason about uncertainty.

Page 4: Probabilistic programming languages...Probabilistic programming languages •Build a formal language for describing probabilistic models starting from a universal programming language.

Probabilistic programs

P (H|d)

�+

Page 5: Probabilistic programming languages...Probabilistic programming languages •Build a formal language for describing probabilistic models starting from a universal programming language.

Probabilistic programming languages

• Build a formal language for describing probabilistic models starting from a universal programming language.

• Probabilistic programming language =

• Deterministic language +

• primitive distributions (ERPs) +

• sample and factor operators +

• marginal inference operators.

Page 6: Probabilistic programming languages...Probabilistic programming languages •Build a formal language for describing probabilistic models starting from a universal programming language.

Probabilistic programming languages

webppl.org

Page 7: Probabilistic programming languages...Probabilistic programming languages •Build a formal language for describing probabilistic models starting from a universal programming language.

• See also:

• Church, IBAL, Figaro, Venture, Hansei, Anglican, Fun, etc.

• Infer.net, MLNs, BLOG, JAGS, Stan, Factorie, etc.

Probabilistic programming languages

Page 8: Probabilistic programming languages...Probabilistic programming languages •Build a formal language for describing probabilistic models starting from a universal programming language.

• Deterministic language: a (purely functional) subset of Javascript

• primitive distributions: ERP objects can sample, score, etc.

• sample operator: draw random sample from an ERP

• factor operator: re-weight an execution (to encode observations, etc)

• marginal inference operators:…

Probabilistic programming languages

Page 9: Probabilistic programming languages...Probabilistic programming languages •Build a formal language for describing probabilistic models starting from a universal programming language.

Marginal inference

• erp is the marginal distribution on val, weighted by factors.

• Inference: How do we explore the tree of executions?

var foo = function() {…; return val}var erp = Marginal(foo)

sample(…)

factor(…)

return val

P (val) /X

leaves

�return=val

Y

sampled x

eerp.score(x)Y

factor(s)

es

Page 10: Probabilistic programming languages...Probabilistic programming languages •Build a formal language for describing probabilistic models starting from a universal programming language.

Marginal inference

• Enumeration (with caching)

• Sequential Monte Carlo

• Markov chain Monte Carlo

• Hamiltonian Monte Carlo

• Variational inference

See dippl.org for a tutorial on implementation.

Page 11: Probabilistic programming languages...Probabilistic programming languages •Build a formal language for describing probabilistic models starting from a universal programming language.

Reference games

Speaker: Imagine you are talking to someone and want to refer to the middle object. Would

you say “blue” or “circle”?

Listener: Someone uses the word “blue” to refer to one of these objects. Which object are they

talking about?

Frank and Goodman (2012)

Page 12: Probabilistic programming languages...Probabilistic programming languages •Build a formal language for describing probabilistic models starting from a universal programming language.

Recursive reasoning

blue:

var literalListener = function(property) { Enumerate(function(){ var object = refPrior(context) factor(object[property]?0:-Infinity) return object })}

Page 13: Probabilistic programming languages...Probabilistic programming languages •Build a formal language for describing probabilistic models starting from a universal programming language.

blue:

Recursive reasoning

“blue”

var literalListener = function(property) { Enumerate(function(){ var object = refPrior(context) factor(object[property]?0:-Infinity) return object })}var speaker = function(object) { Enumerate(function(){ var property = propPrior() factor(object == sample(literalListener(property)) ?0:-Infinity) return property })}

Page 14: Probabilistic programming languages...Probabilistic programming languages •Build a formal language for describing probabilistic models starting from a universal programming language.

Recursive reasoning

“blue”

var literalListener = function(property) { Enumerate(function(){ var object = refPrior(context) factor(object[property]?0:-Infinity) return object })}var speaker = function(object) { Enumerate(function(){ var property = propPrior() factor(object == sample(literalListener(property)) ?0:-Infinity) return property })}

var listener = function(property) { Enumerate(function(){ var object = refPrior(context) factor(utterance == sample(speaker(world)) ?0:-Infinity) return object })}

Page 15: Probabilistic programming languages...Probabilistic programming languages •Build a formal language for describing probabilistic models starting from a universal programming language.

ExperimentSpeaker (N=206)Listener (N=263)

Prior (N=276)

Page 16: Probabilistic programming languages...Probabilistic programming languages •Build a formal language for describing probabilistic models starting from a universal programming language.

Results

0 20 40 60 80 100

020

4060

8010

0

Model predictions

Par

ticip

ant b

ets

listenerspeaker

Listener/Salience: Imagine someone is talking to you and uses [the word “blue”/a word you don’t know] to refer to one of these objects. Which object are they talking about?

A

B

CSpeaker: Imagine you are talking to someone and you want to refer to the middle object. Which word would you use, “blue” or “circle”?

1 2 3

020

4060

Prior: Salience Condition

Bet

1 2 3

020

4060

Likelihood: Model Predictions

Bet

1 2 3

020

4060

Posterior: Model vs. Listener Condition

Bet

datamodel

×

=

1 2 3

1 2 3

• Model explains 98% of variance in data.

Page 17: Probabilistic programming languages...Probabilistic programming languages •Build a formal language for describing probabilistic models starting from a universal programming language.

Probabilistic programming languages

• A formal language for describing probabilistic models starting from a universal programming language.

• With universal inference algorithms.

• Makes it easy to:

• prototype and explore probabilistic models

• evaluate different inference strategies

• make complexly structured models

P (H|d)

�+