Thursday, February 21, 2013

Agent Reading and Progress

So I'm in the middle of getting to grips with AI agents - something I've had an on-again, off-again relationship with for years. Toying with it for a PhD idea, but not really finding the Something Special that's gripping me into putting in the monumental amount of effort that a doctorate would demand.

I've started reading "Developing Intelligent Agent Systems" by Padgham and Winikoff, which seems like a more pragmatic text on the topic - refreshing, given I've spent most of today reading through agonizingly poor conference and journal papers on the topic. It seems that Computer Science has decided to drop the entire field (because let's be honest, Asimov's "I, Robot" showed us that specialized applications of technology beat general-purpose development hands-down), and it's been adopted by Information Systems and Infomatics types - the kind of people who think that "pipes" are an innovative idea, if they could only fit a methodology around using it in their current paradigm, so they could implement a framework *retch*.

Back to the book, though: Padgham & Winikoff use the definition of an agent from Wooldridge (2002), that an agent is a "computer system that is situated in some environment, and that is capable of autonomous action in this environment in order to meet its design objectives". Which is a terrible definition, because it requires an extremely specific interpretation of the terms used, or it could easily describe almost all software.

In any event, it's later qualified by a number of additional attributes that the author hastens to mention change the definition from "software agent" to "intelligent software agent": the software must be pro-active, reactive and social. They continue on to add robust or flexible in the event of a blocked/failed goal.

My interest leans heavily on the social aspect of agents: I've been inspired by the concept of Weavrs, software agents that literally exist with their own social networking accounts. While it is certain that automated software agents have existed before weavrs (spambots, for instance), the idea of creating a persona whose role is to digest, process and then publish information seems quite novel. Weavrs, as far as I know, do not taking social input, but do have a social output.

The idea tickling around at the back of my brain is to take this idea of social agents whose job is to consume, process and publish information and to extend the idea into a logical mesh of agents with a fairly transparent communication medium (ala Twitter). Each agent specializes in certain specifically tooled news sources (an RSS agent, a Twitter agent, a Facebook agent, a specific webservice agent), and they share their information both publically and with each other. They can then interact with a series of more complex agents whose role is to digest that information further, and then make intelligent decisions based on that.

Because the variety of different sources of information will almost certainly be providing non-orthogonal outputs (the news headlines from the RSS news feed will no doubt also be tweeted and linked to on Facebook), the agent net will need to be able to intelligently combine information sources into groups of related news - perhaps akin to unroll.me's mechanism of creating email digests.

If this sounds like a great deal of natural language processing, semantics extraction and quite possibly an impossibly complex piece of engineering, then you're now on the same page as me.

As far as I can see, the best way of starting this project will be to start writing a bunch of parsers for each potential "news input" - once I've got processed raw data to work with, decision-making becomes a tangible possibility. I've started playing around with Facebook and Twitter feed consumers, and when they're working I'll put up some code snippets.

No comments:

Post a Comment