13 August 2006

What we, as NLPers, typically do vis-a-vis machine learning is what might be called "Human in the Loop" machine learning. Why? Typically, we develop a model and set of features, train it on some training data and evaluate it on some development data. We then augment/change the model and features, retrain and retest on the dev data. Only once we are satisfied with our dev results do we run it on the test data and report scores in a paper. This is "human in the loop" because in each iteration we're using our human knowledge to, say, add some additional features that will hopefully correct for errors on the development data.

To many machine learning people, this is not ideal: the whole point of machine learning is that the human is not in the loop. One can liken the "adding more features" to something akin to adding new sensors to a robot: when it is deployed on Mars, we cannot easily send a person to duct-tape on a new sensor.

But I'm not sure that this argument really applies here. We are, after all, trying to either learn new things about language or build systems that work. For both of these goals, retwiddling models and adding features is the right thing to do. If we could have an automated system to help us with this, that would be great. But I don't think we should shy away from keeping ourselves in the loop.

Perhaps another reason why machine learning tends to shy away from HITLL is that it goes against the long-standing models of supervised learning, which typically begin by saying something like "Let D be a distribution over pairs of inputs x and outputs y and let L be a labeled training set drawn iid from D." Here, the inputs (and hence the distribution) specify exactly what information we have access to in terms of features. This model essentially takes features for granted, as simply part of the learning problem. This is quite reasonable from the ML perspective, but is somehow lacking if one wants to talk about feature engineering, etc. There may be another, more apt model out there, but everything I can think of reduces trivially to the standard supervised model, unless inappropriate assumptions are made.

12 comments:

I don't know about other machine learning people, but I personally think that machine learning (and AI in general) is about augmenting human capabilities, not replacing human capabilities. Given this goal there's nothing wrong with human in the loop learning.

I would think a useful subgoal is to develop systems that will do well with a human in the loop (e.g. systems that are easier to diagnose problems, systems that are easily extensible...), rather than systems that will do well given a fixed setting, but is otherwise a black box.

One problem I see is that while the machine learning part of any system can be described in detail (hence disseminated to other researchers), the human learning part of the system is more a vague "art" than anything else.

From a commercial perspective, human time is very expensive. Correcting errors or asking for feedback, unless done in a very limited fashion, can throw a person off of their task. Pursuing automation to the fullest possible extent is one way to avoid runtime correction. Another way could be to learn training information from tasks more in line with what the user is trying to accomplish, and this is why transfer learning is so important.

I don't understand why you say that supervised learning sounds like the most sensible model here. It sounds more to me like online setting where there is active learning with a noisy, costly oracle.

I think that whenever we are keeping humans out of the loop, we are making a big mistake. But I believe it is a matter of opinion. I'm one of those people who would actually prefer for us not to ever have strong AI. I also happen to think that strong AI is not something likely to happen with our current software technology.

In the end, you want to help human kind, not replace it.

Yes, humans are expensive and that's exactly why we have computers to make better use of their time. But keeping humans out usually result in systems that are not very interesting for human being in general.

You want to replace humans with repetitive tasks. Classifying mail as spam is repetitive. Driving a robot accross a desert while avoiding rocks and pits, is repetive.

Let the computer do the boring stuff, but please, keep us in the loop for the fun stuff!

I like your observation that the supervised model takes features for granted, i.e. does not care where and how they came about.

In a sense, it asks the question: "Now that we know what to look at, can we learn how to utilize this information effectively?"

I am not sure I get the Mars issue. Are those people dreaming about attaching a wooden stick to the robot, calling it a sensor, and hoping that it would do something useful when the robot is on Mars? Because in order to know that the stick is a sensor, we should have tested it on something first, putting ourserlves back in the loop.

It seems that most replies have centered around the idea that AI technology should support, not supplant humans. If true, this would mean that almost all publications that I read regularly are completely misfocused :). Yes, Yee Whye is right that it's hard (impossible?) to describe the human part to other researchers. But maybe it's not completely impossible. The annotation guidelines for things like the Penn Treebank are enormous, but they are essentially a specification for how the humans should behave. Even without such guidelines, for most tasks we really actually care about, there is *some* user out there who we are trying to help. I don't see anything wrong with simply throwing that human (or a few such, randomly sampled) into the loop. This seems no worse than trusting human annotators to be noise-free when annotating data.

Anon: I agree that for most tasks, active/semi-sup/online/whatever is more reasonable than vanilla supervised learning....by "supervised learning" in the post, I sort of meant a hyponym of those: all settings where features and outputs are given.

Beata: I think there is a (completely reasonable) desire to minimize how much knowledge about the new sensor we put into the learning system. For a text example, I could easily imagine trying to do something like parsing at the character level. Somehow characters seem more "basic" than words, much like in vision, pixels seem more basic than responses to various lines/curves/etc. But we would be somewhat obtuse if we were to build a character based parser, essentially because by doing tokenization and sentence segmentation, we are putting a *lot* of knowledge into the system about the aspects of the input (the features) than matter. (Just like in the vision case.) The nice thing about using characters (or pixels) is that one can hope that with good enough learning technology (and enough data), one could learn good representations.

(I should mention I don't completely agree with the previous argument, and it's very possible to shoot holes in it, but I'm trying to make it for completeness :P.)

Well, there's the Occam's razor principle - the simpler the better (as long as it is still doing the job). So, I guess there is some interest in parsing using just characters, based on this principle.

It seems to me, however, that for quite a number of tasks we are not as yet in the position of simplifying. Just the opposite - no matter how many features we put in, the task is still elusive. So, I guess Occam's razor is useful at the initial theorizing stage and at the final embellishment stage, but less so between them.

I recently decided to broaden my horizons and decided to learn a new language; the question is what should I learn? I’ve asked a few friends and they were useless! Everyone was telling me something different, in the end I have decided to attempt to learn Japanese. I work in business and the power Japan and China has keeps growing and growing, so learning a bit of the language could be a massive help in my future career. Does anybody know of any reasonably priced but high-quality language learning software?

Really trustworthy blog. Please keep updating with great posts like this one. I have booked marked your site and am about to email it to a few friends of mine that I know would enjoy reading..sesli sohbetsesli chatsesli sohbet siteleri