Pre-West Interview: Melanie Mitchell

April 05, 2015

Introduction

Melanie Mitchell generously agreed to do an interview about her talk at Clojure/West. The background to the talk is available, if you like.

Interview

LispCast: Do you program in Clojure? If not, have you heard of it? If so, how did you get into it?

Melanie Mitchell: No, I don’t program in Clojure, though I did write the code for my Ph.D. dissertation project in Common Lisp. I have heard of Clojure, since I’m interested in functional languages, and also some of my students have been programming in it.

LC: I'm no expert in AI, but I've always seen three big approaches. There are the two Peter Norvig approaches, namely the rule-based approach and the statistical approach. And then there was the approach laid out in Fluid Concepts and Creative Analogies, which was much more about building a system that was unpredictable but whose emergent behavior was reminiscent of human intelligence. The rule-based approach has been dismissed as too brittle. And the statistical approach has had broad impact. I have to admit that I haven't heard much about the third approach in a while. Could you talk about it briefly and some of the recent advances?

MM: You’re right -- statistical machine-learning approaches have recently seen some huge successes in applications such as object-recognition, image captioning, speech-recognition, and language translation. The major ideas behind statistical machine-learning approaches, including so-called "deep networks", have been around for a while. Let's use the example of visual object-recognition. The idea is that a system is presented with many images of the concept it is supposed to learn, e.g., "dog", along with many "non-dog" images as well, and the system essentially learns how to map images into a high-dimensional "feature" space in which dog images are close to one another and non-dog images are far from dog images. The "statistical" aspect comes in because the visual features used can be statistical in nature, and also statistical methods are used to find the best mapping.

So why have these methods only been so successful recently? It seems that the success is due to the fact that we now have access to huge amounts of data to train these systems, as well as very fast parallel computing methods to perform the training. These kinds of methods have become very successful in tasks such recognizing faces and specific objects (e.g., "dog") in images.

The problem with these kinds of purely statistical methods is that, it’s hard -- maybe impossible -- to learn to recognize more abstract visual situations, such as "taking a dog for a walk" or "training a dog" or "a dog show". Such situations consist of multiple objects that are related to one another in specific ways -- e.g., "taking a dog for a walk" typically consists of a person, a dog, and a leash, which have specific kinds of spatial and action relationships to one another. Moreover, there are lots of "dog-walking" situations that do not fit the prototype -- e.g., a person walking multiple dogs, a person "walking a dog while riding a bike", a person running rather than walking, etc. etc. Humans are of course very good at learning to recognize abstract situations in a flexible way -- to allow "slippages" from a prototypical situation.

The general architecture described in Fluid Concepts and Creative Analogies has been termed the "active symbol" architecture. The idea is that statistical methods interact with a network of symbolic-level structured activatable concepts. The activity of concepts in the network controls, and is controlled by, stochastic agents that bridge the gap between symbolic knowledge and statistical features. The various chapters in Fluid Concepts and Creative Analogies describe how this architecture was developed for "micro-domains", such as letter-string analogies. I'm now extending this architecture to interface with deep network approaches for the task of visual situation recognition. This is what I will describe in my talk.

LC: Is there any background material you would suggest people read/watch before the talk?

MM: I’ll try to make the talk as self-contained as possible, but if people are interested, they might want to read a (somewhat long) chapter from Fluid Concepts and Creative Analogies, which I’ve put online. This describes the Copycat analogy-making project in some detail.

LC: Where can people follow your work online?

MM: I have a web page on this project. This is where I will be posting papers and updates on the project.

LC: If Clojure were a food, what food would it be?

MM: Cream. (Because you put it on top of Java...).


This post is one of a series called Pre-West Prep, which is also published by email. It's all about getting ready for the upcoming Clojure/West, organized by Cognitect. Conferences are ongoing conversations and explorations. Speakers discuss trends, best practices, and the future by drawing on the rich context built up in past conferences and other media.

That rich context is what Pre-West Prep is about. I want to enhance everyone's experience at the conference by surfacing that context. With just a little homework, we can be better prepared to understand and enjoy the talks and the hallway conversations.

Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.

You might also like

Pre-West Interview: Ryan Neufeld

April 14, 2015

This interview was graciously conducted by Nola Stowe. She's a programmer, the co-founder of DevChix, and a prolific teacher. She recently ran ClojureBridge Austin. Please shout out to her and say thanks!

Introduction

Ryan Neufeld is the next interview participant. He is giving a talk at Clojure/West about Simulation Testing. The background to his talk is available, if you like.

Interview with Ryan Neufeld

Nola: How long have you been doing clojure and how did you get into it?

Ryan: By my reckoning, I've been using Clojure professionally for about 2.5 years now.

How I got started is actually pretty interesting; I was hired by Cognitect (née Relevance) in early 2012 as a Ruby on Rails developer. Once the business shifted hard towards Clojure, I jumped at the first opportunity to get on with a Clojure client. My first Clojure project was with the most excellent Paul deGrandis, so it was a just a matter of letting osmosis take it's course. I haven't looked back since.

Nola: What suggestions do you have for someone getting started with clojure?

Ryan: Experiment liberally, and don't be afraid to make mistakes or "do it wrong." A breadth of experience with the language and its libraries is crucial for knowing what tool to reach for when it is finally time to get down to business.

For those seeking to make the jump to full-time Clojure, a word of career advice: Never pass over a job opportunity because you lack on-paper experience. Every company wants to hire a Rich Hickey to work with them, but in most cases, they'd be more than happy with a bright, passionate developer such as yourself. Just give it a shot–at worst, you'll get a no, at best, you could change your life!

Nola: Your talk is about Simulation Testing, is there anything like this in other languages? If yes, what advantage does the implementation in clojure have over other languages?

Ryan: Indeed there is. While Simulation Testing is novel to the Clojure community, it's been around for a number of years under various names; it's sometimes called model or agent-based testing, or just plain "simulation." I heard from a little bird that organizations like DARPA use the technique on nearly all of their projects.

There are a couple of big benefits to doing Simulation Testing in Clojure, however. First and foremost is Simulant. In addition to being a useful framework for running Simulation Tests, the way it segregates tests into phases makes tests both reproducible and amenable to new validations that you can bring to bare against old sim runs.

The second superpower Clojure brings to the table is Datomic. Given Datomic is a time-based fact-store, it is a nearly perfect fit for long-term, continuous-integration style simulation testing. With Datomic, very few of the validations I write involve procedural code; generally a simple Datomic query will suffice to detect abnormalities. Even better, it is trivial to query how test results have change over time.

Nola: What is the average airspeed velocity of an unladen Clojure REPL?

Ryan: Well, the bird is a little slow to get off the ground (Clojure start times, and all), but once she's airborne you're looking at about 2-4 Rubies (that's 10 Javas, in the imperial system).

Nola: Thanks for the interview. It was very informative.


This post is one of a series called Pre-West Prep, which is also published by email. It's all about getting ready for the upcoming Clojure/West, organized by Cognitect. Conferences are ongoing conversations and explorations. Speakers discuss trends, best practices, and the future by drawing on the rich context built up in past conferences and other media.

That rich context is what Pre-West Prep is about. I want to enhance everyone's experience at the conference by surfacing that context. With just a little homework, we can be better prepared to understand and enjoy the talks and the hallway conversations.

Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.

You might also like

Pre-West Interview: Zach Tellman

April 15, 2015

This interview was graciously conducted by Nola Stowe. She's a programmer, the co-founder of DevChix, and a prolific teacher. She recently ran ClojureBridge Austin. Please shout out to her and say thanks!

Introduction

Zach Tellman is the next interview participant. He is giving a talk at Clojure/West about queueing theory and its applications. The background to his talk is available, if you like.

Interview with Zach Tellman

Nola: How long have you been doing Clojure and how did you get into it?

Zach: About six years, four years professionally. I started looking at Clojure around the time Tom Faulhaber (author of clojure.pprint, and some other stuff), who I worked with at the time, invited Rich Hickey to give a talk at our office. It was on chunked seqs, if I recall correctly, and way over my head. But it got me interested, and here I am.

Nola: Any suggestions for someone wanting to dive into Clojure?

Zach: I've always learned by doing. I'll come up with a project, and learn what I need to know on the way. The more it forces you to learn, the better. My first project in Clojure, which I started the same week I read Stu Halloway's Clojure book, was way over-ambitious, but I learned a ton doing it.

Nola: What languages did you do before Clojure?

Zach: In school, C++ and Java. For work, C# and Java. In my own time I've poked at Erlang, OCaml, Ruby, and a few others.

Nola: Can you describe a good use-case for Clojure that you see has an advantage over another language?

Zach: Clojure's a data-oriented language, it excels at taking data in one shape and transforming it into another. While this isn't all we do in our day-to-day software, it's an awful lot of it. Lately, though, I've been interested in the problems that fall outside of that category, which is in part what my talk is about.

Nola: Emacs or Vim or ?? Can you describe your typical workflow?

Zach: I use Emacs, where I know about five commands, plus paredit. I don't particularly like it, but I don't dislike it enough to switch to something else.

Nola: Thanks for the interview. It was very informative.


This post is one of a series called Pre-West Prep, which is also published by email. It's all about getting ready for the upcoming Clojure/West, organized by Cognitect. Conferences are ongoing conversations and explorations. Speakers discuss trends, best practices, and the future by drawing on the rich context built up in past conferences and other media.

That rich context is what Pre-West Prep is about. I want to enhance everyone's experience at the conference by surfacing that context. With just a little homework, we can be better prepared to understand and enjoy the talks and the hallway conversations.

Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.

You might also like