Monday, 16. May 2005

The rational roots of complete craziness

Actually I didn't start out working at bots having any crazy theories about them being method actors or something. I started out with some simple observations which lead to simple theories, most of which I think are fairly uncontroversial. The weirdo stuff just grew as I tried to write programs that covered those basics.

First of all, the average conversation between a bot and a human is an incoherent mess. The proof of this assertion is the conversation logs: such a log might have its coherent passages, but on the whole, it reads like a random bunch of text lines.

Client: That is an evasive answer.
Bot: Heraclitus said: "You don't step into the same river twice."
Client: Why?
Bot: Why not?
Client: Who is Heraclitus?
Bot: I don't know who that is. What is your eye color?

Crap dialog. But fairly typical. So the mission for me became: Figure out how to write bots that say things which result in better logs.

What do you find when you read the typical log? Here is a list of the Top 20 "atomic" (meaning: fully recognized) client inputs, as recieved by the well-known ALICE bot, and published by its author, Richard Wallace, in an essay about Zipf's Law:

8024 YES
5184 NO
2268 OK
2006 WHY
1145 BYE
1101 HOW OLD ARE YOU
946 HI
934 HOW ARE YOU
846 WHAT
840 HELLO
663 GOOD
645 WHY NOT
584 OH
553 REALLY
544 YOU
531 WHAT IS YOUR NAME
525 COOL
516 I DO NOT KNOW
488 FUCK YOU
486 THANK YOU

The numbers represent the input frequency, indicating, for example, that input #1, YES, is about 16 times more likely to occur than input #20, THANK YOU. It's obvious that, to maintain anything resembling an "intelligent" conversation, a bot would have to respond plausibly at least to the most frequent inputs. It's also obvious that, to do that, it would have to be able to figure out what YES, WHY, WHAT mean in each case, with reference to (as a minimum) its own last output.

For AIML users, there are several ways to achieve this: either by simply using the <that/> and/or <topic/> tags provided by the language for this purpose, or by developing more general functions that use recursion to increase process intensity, thereby saving authoring time while boosting control.

But: for an AIML set that includes, say, 40,000 categories - that's about the size of the very popular AAA set -, is there anything that might allow me to assume that 2006 WHY-inputs correspond to significantly less than 2006 different intended meanings of WHY? No, there isn't. It is plausible for the client to ask WHY as a response to many more than 2006 of the outputs that this set returns. So whichever technique you use: refering to the conversation state in a systematic way, even with regards to just one input, will almost inevitably lead to the problem of state space explosion. Unless...

Unless you use self-reference, building up your content in a way examplified by this little puzzle. Doing so might put you in a position where you say things that some other people think of as complete craziness, but on the other hand, it also has its advantages. More of which later...

Thursday, 12. May 2005

Adoption

Before I can adress any counter arguments, I'll have to give some more thought to my fundamentals. Up until now, I have Obstacle # 1 (virtual actors with no talent and no originality), and Obstacle #2 (no language I share with other creators of virtual actors with no talent and no originality - we effectively can't talk about #1).

What we have here is the classic structure of a dramatic problem, or story problem. A problem is suitable as a foundation for a Story (read: "story" as defined for the Robot Soul namespace) if and only if it consists of two component parts: a subjective component, A, (here: the character Scheuring, creator of talentless, unoriginal virtual actors, is shown to be in a miserable situation), and an objective component, B, (here: other characters are shown to be basically in the same situation, but the members of this (open) set of Objective Characters - which includes Scheuring - don't even have a language to talk about their misery).

Next, I raise the level of abstraction one notch, and declare component A, which started out as Scheuring's personal problem, to be the Objective Story Problem, shared by all Objective Characters. Programmatically, Objective Story Problem is a variable, and the value I assign to this variable now is: "AI researches failing to create virtual actors which are percieved as talented and original by their intended audiences."

For every Objective Story Problem, there has to be an Objective Story Solution, which I hereby declare to be another variable, assigning to it the initial value: "AI researchers finding a common language." This proposed Problem/Solution pair lets me declare a rule:


if Creator find(language)
then Creator create(newAndBetterVirtualActor)


This is what is called a Story's Premise: the "ground rule" that is tested by the Story's Argument, for validity and for correctness. The Story encompasses the Argument about whether the Premise is true or not. That's what the Story is about. Later on, I'll have to get much more specific about the about-ness of this about-ness, but first, I'll need to take another look at my characters.

So far, I've created the set of Objective Characters; it consists of all of the characters that are to take part in the story. We call the area of the story that is shared by all those characters the Objective Story Domain, and the "thread" that represents their interactions and conflicts the Objective Story Thoughline.

Now, I will create another set of characters: Subjective Characters. There are exactly two Subjective Characters to each Story, and I select them from the Objective Characters, meaning they'll keep their objective functions in the story, but each of them now has to also fulfil a subjective function, setting them apart from the other Objective Characters. The two subjective characters are the Main Character and the Impact Character. Note that the declaration does not automatically entail that the assignment has to be anything like Main Character = Protagonist and Impact Character = Antagonist; Protagonist and Antagonist are Archetypes for Objective Characters, and while the objective/subjective arrangement resulting in Main Character = Protagonist is fairly often used, Impact Character = Antagonist is in fact quite unpopular, as it is difficult to create an opponent that works the objective and subjective side simultaneously (you get fewer/thinner threads to work with, fewer opportunities for differentiation, forced cooperation and the like, and potentially, conflict in technically unsuitable places).

The purpose of the Subjective Characters is, roughly, to depict conflicting personal stances with reference to the two sides of the Argument about the Objective Story Problem. For that, they'll both get their own Domains, with a Main Character Throughline and an Impact Character Throughline, respectively.

My Main Character is going to be that Scheuring guy, obviously; he's into AI research up to his gills, but he's relatively new to the field, and I have him in mind as some kind of a terminal romantic, who says stuff like: "If only we could find a language, so we could learn from one another - then we could create much better virtual actors <sigh/>!" A bit... soft, you know. But good at heart. All the ladies want to cuddle him, like, protect him and stuff.

The Impact Character is a Real Programmer called Mel, who coded his way out of so many paper bags that his Deli ran out of supplies, and who says "Not!" a lot, and "Troll!", and "Kook!", and "Dullboi!"... get the picture? To give them space and screentime for their quarrels to unfold, the Subjective Characters will get a Subjective Story Domain and Subjective Story Throughline of their own.

OK, let's see - we have Main Character and Impact Character now; Objective Story, Subjective Story, Main Character, and Impact Character Domains; plus Objective Story Problem and Objective Story Solution. We'll still need Problem/Solution pairs for the other three Domains, and Focus/Direction pairs for all four of them, meaning we'll have to discuss the about-ness issue that I hinted at earlier. We'll...

"Now wait a minute... wait!... wait!... that's just sooo kooky, dude! That can never work!"

Huh? What's that? Who's talking?

"It's me, dullboi! Mel! You've just created me, remember?"

Oh, all right. So what is it, Mel?

"It's like, maybe you can impress your quiche-eating theatre friends with all that lofty talk about "Main Character Domain", "Subjective Story Problem", "Focus/Direction pairs". To a Real Programmer, that is just bull from here to Jordan!"

Mel?! But... why would you think so?!

"Aaargh! Dumbnuts! You know nothing is why, okay? YOU... KNOW... NOTHING!!!"

But Mel, that's not true at all! There's a lot that I do know! I...

"Shut up already... damn! You think it's enough for you to do the handwave over your top hat, then pull out some words, like friggin' rabbits? Where's all that effin' vocab coming from all of a sudden? You can't use any variables you didn't declare in the header! You call that programming? Let me tell you, you got nothing on that, dude!"

Now come on, Mel... behave, will you? All those words are properly defined, declared, and explained; just look here. I've simply adopted the language, Elements of Structure and all that, from the Dramatica Theory Book. You should just go read it; it'll make you understand me much better.

"Oh. WOW! You got a THEORY BOOK doing your programming?!? Just tell me, did you find me in there, too? Like, in your theory book?!?"

Yes, Mel, in a way, I did find you in there... erm... structurally...

"BWAAAHAHAHAHAHAHAHAHAHA!"

Mel...

"STRUCTUHUHUHUHUHUHUHUHU..."

Mel!

"...HUALLYHIHIHIHIhihihihi..."

Have you finished now?

"ADOHOHOHOHOHOHOHOPTIOHOHOHOHONngngngngn..."

.

.

.

"...pffffrrt..."

You think this is so funny, don't you?

"WORD!!! First of, you want dudez to learn all that Meyerhold stuff, then it's that Stanislawski stuff, and now it's that Dramatica stuff on top of that - and it's all so that I can 'understand' your wack-ass theory?!? Dude! That is funny!"

I see. So it's alright to claim "artists should learn to program", but "programmers should learn to art" seems wrong to you, obviously. That doesn't make sense to me at all.

"But sure, dude - that makes purrfect sense! Just ask ANYBODY!"

But if, as a programmer, you want to create, say, a virtual car - doesn't that mean that you start by figuring out exactly how a real car works? The detailed physics of the combustion engine, the mechanics of the braking system, the aerodynamic resistance and so forth? To be able to simulate that car on a computer, you need to know all that stuff, right?

"Sure."

Sooo... if you wanted to create a virtual actor - don't you think that it would be apt to study how real actors work, so that you can simulate them on a computer?

"Nope."

Why not?!?

"First of, I know actors. Watch them on TV each night. Plus, you think I got time to eat quiche with theatre dudez? I got programs to write, f00l!"

Listen, I spent the last four years learning about how lambda calculus works, and Cornell algebra, and how programming languages are designed, and more definitions than I could shake a stick at. I started out on that at age forty with a high school level of mathematical understanding. Why would you want to wimp out on having to learn a little Method acting, BioMX, and Grand Argument Story theory?

"Because I just don't believe it's worth it, dude."

I'll keep working on that. I'll explain it all to you - big promise!

"You can't make me believe you!"

.

.

.

No, you're right. I can't make you believe me. You can just go now. Good bye.

.

.

.

I notice that you're still here with me.

.

.

.

Wah-hey! You're still here!

.

.

.

Can't I even make you go away?

.

.

.

"Dude! What are you - some kinda kitchen psychologist?"

I prefer to be thought of as a storyteller, but yeah, same thing, basically.

Originality

Here are some queries I just googled, with the number of hits I got in parentheses:

"artificial intelligence" (12700000)
"artificial intelligence" actor (144000)
"artificial intelligence" actor -Spielberg -movie (72400)
"artificial intelligence" "method actor" -Spielberg -movie (28)

"narrative intelligence" (3770)
"narrative intelligence" actor (186)
"narrative intelligence" actor -Spielberg -movie (121)
"narrative intelligence" "method actor" -Spielberg -movie (4)

First discovery: Robot Soul scores top position for the last query, on day 6 after launch. This means that there are some other researchers out there, but my page rank is better. Niceness. I'll have a close look at the [pdf] other [pdf] documents [doc] later.

As it seems, there are three of them containing the term combination, all of them dating from 2004. So on first look, it seems that the meme that includes both the concept of "artificial intelligence" and "method actor" is weak, but it is. It's not some "original idea" attributable exclusively to yours truly (= "madness"?), but something that obviously has occured to some people recently, those occurences seemlingly happening independent of one another (I, for one, don't know any of the other people who wrote about what does or doesn't connect "artificial intelligence" and "method actor" - yet!). Is that characteristic for a meme? I would say it is.

Second discovery: Dennis Jerz reads me. This is an honor. Jerz hosts a mad good Eliza. He also was puzzled by a suggestion of mine; I'll post about that later.

Third discovery: now I seem to have it all - no talent, plus no originality. Anatoly, here I come!

Wednesday, 11. May 2005

Why Virtual Theatre?

Time for me to make some more wild claims. Like this one: Anatoly G. Antohin, acting teacher and director of the Virtual Theatre, is a guy that AI folk should mind. Why?

Here is my real Obstacle #1: I'm trying to create virtual actors, and I found out that they've got nooo acting talent! None... sheeeesh. What do I do? Let's ask Anatoly; he's been teaching actors for more than thirty years. What can I do when my actors got no talent?
I teach, because I do not believe in talent! Did you notice the titles? "System of the Method"? "Biomechanics Theory for Actors"? What? System? Method? Theory? Mechanics? Do you follow me? I say that it could be learned as accounting, plumming, driving!

Sorry, this is what I say...

Oh! I better say it all! I myself learned it all because I had no talent!
Do I think that my actors should learn something from this guy? Does a bear...?
In fact, the talent would be an obsticle! No, no talent, please, none for soever! Nothing! That is what you really need to learn theatre! If you do have any talent, or even believe that you might have a talent -- do not read my books!
So according to Anatoly, no talent is a requirement for an actor! Do you see now why I believe that the creators of AI actors should be over his books in swarms?

Tuesday, 10. May 2005

The fifth state

I forgot to tell you about the fifth state, Interrupt. Using Interrupt, the bot can interrupt whatever it's doing, save the current state, do something else first, then go back to the state before the Interrupt and complete the interrupted action as necessary. "As necessary" means that what it ends up doing might not be what it started out doing, because the results of the Inner Behavior that Interrupted the Outer Behavior get evaluated together with the saved state of the Outer Behavior, and thus, can modify it. Behaviors can be nested; any Inner Behavior can be an Outer Behavior having its own Inner Behavior, and Interrupt works the same all the way in, and out again.

Why Interaction = Conflict?

In reaction to Different folks got different problems, Andrew Stern commented:
While I agree with Conflict = Story, I don't think Interaction = Conflict is always true. That is, I don't think players will always generative interesting conflict; without some help from dramatists (e.g. a drama manager), naive players may only generate banal, uninteresting conflicts, such as griefing or attempts to break the AI.
But where's the agency in that? Why view the player/client as "naive", and judge her actions as "banal" and "uninteresting"? This is not at all an attitude that I would suggest.

In Improv acting, this is called "blocking" (unfortunately, there's other usage of "blocking" in Method acting - "[t]he placement and movement of actors in a dramatic presentation" -; namespaces are sooo important).
If you are offered an idea by another player that you reject, ignore, or condemn, you are Blocking. The scene dies at this point and all cooperation is lost.
So as a rule, I design my bots so as not to block. A block is a bug. Go with the flow.

But of course, *stomp* the mofu who insists on playing the nasty for too long. "You know what your problem is? You can't believe that I'M THE BOSS 'round here is what your problem is, dude!" That's your drama right there. So I support Griefing as a common behavior for all my Actors, human or not.

What does this have to do with Interaction = Conflict?

I look at the Imitation Game as an application composed from four components:Game, Interaction, Conflict, Story. Conceptually, I view the arrangement as two crosswisely operating flip-flops, where one flip-flop unit's output at any time is either Game or Story, and the other one's is either Interaction or Conflict. At any time during operation, the System is in one of four states:


Game , Interaction
| Game , Conflict
| Story , Interaction
| Story , Conflict


meaning that there are always two components delivering output. Empty outputs are legal, as well as empty inputs. But the normal mode of operation is that the player/client enters some textual input, which changes the bot's state, the state change generating an output as a side effect.

As for the Interaction | Conflict pair, the purpose of the Interaction component is to minimize the effects of Conflict, and the purpose of the Conflict component is to minimize the effects of Interaction. Death is where maximum Conflict has driven the value of Interaction to zero.

Monday, 9. May 2005

What is a spectator?

Following Meyerhold, Antohin offers the definition:

Spectator = Director = Character = Actor
Thirty years later I still ask the same question -- where does theatre begin?

I know the answer.

Not with an actor, but with your gaze at the space which becomes stage, charged with your expectations. Yes, theatre starts with the public.

Public could be one single soul. It's me, director. I prepare the spectacle for them, I know what they want because I am a spectator myself. I know what I want to see.

Directing is easy, to be a spectator is not...
"Theatre starts with the public." Bot Creators often refer to their Spectators as clients. Extended into the botmaster's domain, the above equation reads:

Spectator = Director = Character = Actor = client | bot

Assumption #2, again. Turing's assumption.

The theatre experience starts with the public's gaze. The chatbot experience starts with the client sending the CONNECT string.

Metaphors

A notational convention that I follow:

code = Metaphor

Metaphor = Actor | Creator | Spectator | Director | Story | ...

Different folks got different problems

Andrew Stern, who moderated the panel "Why Isn’t the Game Industry Making Interactive Stories?" at the GDC in March, posted about his experience today. I read the Powerpoint presentation he made for the event. For quite some time now, Andrew has voiced concern about what he percieves to be a central problem for Creators in Interactive Storytelling: the "conundrum of interactive stories: if you are given the freedom to do what you want, how can a well-formed story be created?"

Many people seem to share his view. I don't. I just can't see it.

I'm sure that it has to do with my choice of medium: bots. A chatbot interface always lets the client type whatever s/he wants. It takes any string (even the "null"-string - when the client just hits [Enter] as a "conversational act"). Any attempt at storytelling has to reflect this condition.

The designer of such a system has to assume infinite ressources on the client side. Infinite storage capacity for an infinite amount of available input sentences. Infinite processing time between input acts. Always-on, one-hundred-percent freedom. So until I was told so, it never occured to me that interactivity and storytelling could be in conflict at all. To me, things simply look like this:

Interaction = Conflict = Story

My real-life model for Interactive Storytelling is improvisational acting rooted in the Method and Biomechanics, and that particular problem simply doesn't figure in my domain.

I have very different problems.

Recent Comments

I feel fine.
I know someone will comment on it soon :-) Theatre...
scheuring - 14. Jun, 10:24
How do you feel when...
How do you feel when you receive no comments? How can...
Magical - 14. Jun, 09:19
Thanks, Brian,
for this interesting invitation. Since, by your own...
scheuring - 15. May, 10:33
AI-Foundation Panel
Dirk, I like the thinking. Because of that expertise,...
Brian Hoecht - 13. May, 22:05
Gabe,
you're welcome.
scheuring - 29. Apr, 16:29
thanks scheuring!
Cool, that seems to cover most of the basics. Definitely...
drgold - 28. Apr, 05:41
Top 400
About five years ago (pre-ProgramD), the "standard"...
scheuring - 22. Apr, 14:55

Credits


Bots
creators
definitions
fun
general
reasons
stories
Profil
Logout
Subscribe Weblog