Avi Pfeffer | 11 Sep 21:45
Picon

Re: The Scala can use in AI ?

Thanks for the mention, Greg. Yes, I am the same Avi Pfeffer, but I
have a new language. IBAL was a language I wrote a few years ago with
an ML-like syntax, written in OCaml. I have a new language called
Figaro which is written in Scala.

The basic idea behind probabilistic programming is that in order to
specify a probability distribution you describe a process by which
values are generated. This process is like an ordinary program in a
functional language, except that it contains stochastic choice points.
The stochastic lambda calculus I worked on with Norman was based on
this idea, and provided the theoretical underpinning for IBAL. In IBAL
the basic building block of a model is an expression, which
corresponds to an expression in a functional language. IBAL is what we
call a "generative" language. You can easily sample from an IBAL
program to get a possible value, generated according to the model as
specified in the program.

Figaro is an advance over IBAL in a number of ways. It is
object-oriented and functional, and was inspired by Scala's
object-functional model. (Strangely the object system of OCaml never
grabbed me, so I didn't get the idea for Figaro until I encountered
Scala.) The object-oriented nature means that the basic building block
of a model is an object. Constraints can be attached to these objects,
which allows Figaro to express non-generative as well as generative
languages. For example, consider a social network in which each person
either smokes or does not smoke, and a constraint saying that friends
of smokers tend to smoke. It is extremely difficult to describe this
situation in a generative language, because the constraints are
symmetric; there is no natural generative order of the people in the
network. Another advantage of the object-oriented nature of Figaro is
that it can describe situations with mutually dependent entities (e.g.
x.a influences y.b, while y.c influences x.d).

Another difference between IBAL and Figaro is that whereas IBAL used
an exact inference algorithm, Figaro uses an approximate Markov Chain
Monte Carlo algorithm, which is more scalable. Also, whereas IBAL was
its own standalone language, Figaro is embedded in Scala, which is
more convenient. The Java interoperability is particularly important
to me because I work with people who use Java.

Feel free to ask questions if you'd like to know more!

Avi

On Thu, Sep 10, 2009 at 6:21 PM, Meredith Gregory
<lgreg.meredith <at> gmail.com> wrote:
> Dear Steve,
>
> i'm pretty sure this is the same Avi Pfeffer that's at Harvard and who did
> the work on a probabilistic lambda calculus with Norman Ramsey. You can look
> at his publications here. i'm guessing the probabilistic language mention is
> IBAL.
>
> Best wishes,
>
> --greg
>
> On Thu, Sep 10, 2009 at 12:57 PM, Steve Lianoglou
> <mailinglist.honeypot <at> gmail.com> wrote:
>>
>> Hi Avi,
>>
>> On Sep 10, 2009, at 3:45 PM, Avi Pfeffer wrote:
>>
>>> I have written a probabilistic programming language which can serve a
>>> variety of statistical AI applications, and Scala was a perfect fit.
>>> So I would say that Scala is absolutely appropriate for statistical
>>> AI.
>>
>> Is this something public that you can share with the group? I'd definitely
>> be interested, as I'm sure others would be.
>>
>> -steve
>>
>> --
>> Steve Lianoglou
>> Graduate Student: Computational Systems Biology
>>  |  Memorial Sloan-Kettering Cancer Center
>>  |  Weill Medical College of Cornell University
>> Contact Info: http://cbio.mskcc.org/~lianos/contact
>>
>
>
>
> --
> L.G. Meredith
> Managing Partner
> Biosimilarity LLC
> 1219 NW 83rd St
> Seattle, WA 98117
>
> +1 206.650.3740
>
> http://biosimilarity.blogspot.com
>


Gmane