I’ve Got A Good Feeling About This

It’s been a while since I updated you all on what I’ve been working on, and since January is Official Paper Writing Month if you’re in Computational Creativity, I thought I’d write a quick post to tell you about something I’m submitting to the conference that you might find interesting. It’s more technology-related than games-related, but like all of the work I do, I intend to build it into ANGELINA someday soon! The work is all about getting ANGELINA to express opinions that aren’t yours, aren’t mine, and aren’t random. It’s about generating opinions that you could actually argue with.

Okay, so I’m perhaps overselling what you’re about to read. Like all work, this is early days, but it’s exceeding my expectations so far, and I’m excited to see where it goes. This work stemmed from a repeated problem I was having with ANGELINA: I couldn’t get it to write game commentaries that sounded genuine. Here’s a quote from one of ANGELINA’s old newsgame commentaries:

I looked for photographs of Barack Obama. I searched for happy photos of the person because I like them.

You and I both know that ANGELINA doesn’t have any opinion on Barack Obama (though it’s fun to pretend it does). In fact, ANGELINA was mining opinions from Twitter and then averaging out the opinions it found to get an overall positive or negative bias. It’s disingenuous to say that ANGELINA likes Barack Obama – which is fine, ANGELINA can quite happily lie in its commentaries. But lies are unsatisfying for people if and when they find out, and lying has other problems. You can’t ask ANGELINA why it likes Obama, or present hypotheticals (“What if Obama bombed Canada tomorrow?”) and interrogate it. It’s also not a reliable method – it’s very easy for ANGELINA to appear hypocritical or self-contradictory.

This is a serious problem, because there are a lot of people out there who really dislike claims that software can hold opinions or be creative. Here’s a comment on ANGELINA’s latest work, over on Slashdot:

Screen Shot 2014-02-05 at 14.35.36

There are two problems here: even though ANGELINA justifies some of its decisions in text, the commenter still doesn’t believe it. And the second issue is that some decisions really were made randomly, if ANGELINA can’t find a better reason to make a choice (which is also how I choose my breakfast cereal, so not entirely non-human, but we know that people trust software less than people). Randomness is bad, using other people’s opinions (mine included) is also bad. But we also know ANGELINA can’t really develop sophisticated opinions itself. It doesn’t have real emotions or preferences. How can I tell it to generate an opinion without influencing it with what that opinion should be?

The way I’m exploring right now is to tell it what an opinion looks like and then get it to generate code that follows these rough guidelines. I say guidelines because they’re very abstract. They don’t mention anything specific about what the opinion is about. They don’t say that murder is bad, or blue is the best colour, or salsa is better than sour cream.

Instead, they express things like good opinions don’t contradict themselvesGood opinions don’t change without a reason. Very basic ideas about what opinions are like. The idea for this came from thinking about what makes people dislike opinions. Not disagree with them, but feel they are unintelligent. There’s no wrong or right opinion, but there are broken opinions.

I’ve built a simple evolutionary system that spews out bits of code to compare two things. It uses the guidelines for opinions as a way of evaluating whether the code its generating represents an opinion that others might consider sensible, or defensible. Here’s an example, for a very basic comparison of RPG-style items:

public override int compare(Item i, Item j) {
   i.name = j.name;
   if ((j.damage > i.damage)) {
     i = j;
     return 1;
   }
   else {
     return -1;
     j.name = j.name;
   }
   i.speed = (i.damage / i.damage);
 }

This generated code is very messy and contains lots of things a programmer would find pretty ugly. But if you pick it apart, the important bits are that this code orders items in terms of how much damage they do. Other generated aesthetics might order items based on their speed. They might order them from most to least damaging, but only if they’re droppable (otherwise they hate them no matter what). They’re the most basic preferences you could imagine expressing, but crucially they make sense.

This might not be a groundbreaking step forward, but it might be an interesting way in which ANGELINA (and other software) can express preferences about things it would otherwise randomly guess at. And better still, it’ll make ANGELINA’s explanations of its games much more interesting and rich. I have a lot of work to do this year, but hopefully this will make its way into ANGELINA very soon.

A brief update this one. Thanks for reading! The Saturday Papers is still floating in hiatus-space as it’s Valentine’s Day very soon and I’m still writing up lots of technical work. But it will return!

Leave a Reply