Wednesday, October 13, 2010

Social AI Redux

I've talked a lot about social AI in the past, but it's been at least a year, so here's another post about it. Please note that by "social AI", I really mean "the appearance of social AI". I don't have any intention to solve any fundamental AI challenges.

One issue with social AI is that it requires really dense, nuanced information to react realistically. On the order of hundreds or thousands of times more nuanced than today's video games. Perhaps the Kinect will provide enough human feedback, barely, but in more general situations you're going to have to synthesize a lot of the density out of the game world without many cues from human input.

As an example, if your friend touches you, the exact meaning varies hugely depending on the location and type of touch. Arm, shoulder, head, back, waist, chest, hand, etc, etc. Each location gives a different impression. Is it a tap, a pat, a reassuring grip, a restraining grip, a rap, a friendly punch, a warning punch, a caress, a guiding push?

To say that there are N ways to get touched, or even N thousand ways, is a mistake. The fact is that there are an infinite number of ways to get touched. You can't list them all, and even if you could, you don't want to try to interpret them based on a big list. Instead, you want input that is sufficiently dense so as to allow the program to figure out the nature of the touch based on context.

By the way, this density is also important to humans. Humans who are stuck in simple and restricted environments tend to have simpler and less nuanced responses. They often go a little bit batty, like an edge case in a simulation. For example, being stuck in an arctic base for six months. This is fairly well documented, to the point where there are specific recommendations for how to keep your people from going nuts when you station them somewhere with so little stimulation.

Well, aside from that, there's also a ton of interpretive complexity. What is a friendly tap in one country might be an aggressive warning in another, or even a flirty move. Even within one country, different people will react differently. Even the same person will react differently depending on the moods of the people involved and the surrounding context.

The normal method of trying to make a social AI for a game is to give you a variety of interactions, and the AI responds to those interactions in a fairly straightforward way. At its peak, this consists of basically building up a tremendous expert system which takes the mood and the situation and the type of tap and then spits out a response.

This is not a good way to do it for the same reason that carefully scripting every branch of a plot is not a good way to do it. A) it creates distinct 'paths' or 'branches', rather than giving real freedom. B) it gets radically more complex with every choice or branch you add.

So, to quickly state where we are:

You need to do social interactions with a culturally and contextually aware algorithm, rather than using a state machine or expert system, if you want really adaptable social interactions.

You need extremely varied and nuanced inputs to feed that algorithm, or you'll end up basically creating a state machine. AKA "The Arctic Base Issue".

Very few or perhaps none of the human input devices available to you can actually transmit that much nuance.


That's really only a tenth of the story. It's the foundation on which you start to talk about social AI, or the appearance of social AI. But it's plenty long as is, I think.


Patrick said...

A friend tested the Kintect kit when he was inside a major 3rd party publisher and it can barely parse someone standing still.

I prefer to design systems to generate contexts people people, who bring the cultural awareness to the table. The challenge is a lot more tractable then, as your matric of transaction costs is being stretched from the inside-out, rather than the other way around.

Craig Perko said...

I can't parse that paragraph.

Adrian Lopez said...

"This is not a good way to do it for the same reason that carefully scripting every branch of a plot is not a good way to do it. A) it creates distinct 'paths' or 'branches', rather than giving real freedom. B) it gets radically more complex with every choice or branch you add."

I've written a new blog post that touches on this issue. My own position is that neither humans nor current AI algorithms are good enough to produce compelling branching narratives and that it's therefore better to abandon any attempt at life-like freedom and focus instead on little "narrative puzzles" in the context of a broader narrative.

Craig Perko said...

I'll read your post in a bit, but based on what you stated, I agree that's a good way to do it.

However, I believe that the inability to create algorithmic narratives / algorithmically modified narratives is not some fundamental law. I think that we can make progress.

Adrian Lopez said...

Yeah. It's not that I've lost hope in AI, but I think it's difficult enough that I'd rather admit it's too difficult for me and go the simpler route.