Skip to content

moverlan/LOTlib

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LOTlib

LOTlib is a Python 2.x library for programming "language of thought" models. Using LOTlib, you specify a set of primitives and then model learners who search over compositions of the primitives to express complex concepts. The examples provided all describe a grammar and a probablistic Bayesian model over the expressions generated by that grammar. LOTlib permits lambda expressions, meaning that learners can come up with abstractions over compositions and define new primitives. Frequently, models use sampling in order to determine likely compositional hypotheses given some observed data.

There are several sampling methods provided, including tree-regeneration metropolis-hastings (from the Rational Rules model of Goodman et al. 2010), and variants that include tempering, annealing, tempered transitions, and other search algorithms.

The best way to use this library is to read and modify the examples.

BEWARE: Development may occasionally break backward compatibility. Due to the rapid pace of changes, no guarantees are made about correctness. If you have a question about what is likely to work well, please email Steve. On-going development is focused on providing testing, documentation, and evaluation suites.

LOTlib also provides support for MPI through a wrapper for mpi4py (LOTlib.MPI), allowing sampling algorithms to run in parallel on a simple computer or cluster.

REQUIREMENTS

  • numpy
  • scipy

The following are frequently used, but not required for most functions:

  • matplotlib (plotting)
  • mpi4py (if using MPI; I recommend running with mpich3)
  • pyparsing (for parsing)
  • cachetools (for memoization)
  • graphviz (for DOT images of trees)

INSTALLATION

Put this library somewhere - e.g. ~/Libraries/LOTlib/

Set the PYTHONPATH environment variable to point to LOTlib/:

$ export PYTHONPATH=$PYTHONPATH:~/Libraries/LOTlib

You can put this into your .bashrc file to make it loaded automatically when you open a terminal. On ubuntu and most linux, this is:

$ echo 'export PYTHONPATH=\$PYTHONPATH:~/Libraries/LOTlib' >> ~/.bashrc

And you should be ready to use the library via:

import LOTlib

EXAMPLES

A good starting place is the FOL folder, which contains a simple example to generate first-order logical expressions. These have simple boolean functions as well as lambda expressions.

The best reference for learning how to create/modify grammars is Examples.FunctionNodeDemo. It contains all of the syntax for various parts of grammars.

More examples are provided in the "Examples" folder. These include simple symbolic regression, the recursive number learning model, a quantifier learning model. The "tests" folder may also be useful, as this runs some simple models to check for, e.g., correct sampling and inference. The Number demo has syntax for a number of different sampling and inference schemes included in LOTlib.

Contributors

Major contributors to this project include Hassler Thurston, Samay Kapadia, Matt Overlan, and Eric Bigelow.

Citation:

This software may be cited as:

@misc{piantadosi2014lotlib,
author={Steven T. Piantadosi},
title={ LOTlib: Learning and Inference in the Language of Thought},
year={2014},
howpublished={available from https://github.com/piantado/LOTlib}
}

About

Python tools for Lanugage of Thought (LOT) models Please note that this is still under heavy development and debugging.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 88.1%
  • JavaScript 8.1%
  • CSS 2.4%
  • Other 1.4%