11 Sep 21:45
Re: The Scala can use in AI ?
Avi Pfeffer <avi.pfeffer <at> gmail.com>
2009-09-11 19:45:22 GMT
2009-09-11 19:45:22 GMT
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 >
RSS Feed