Sunday, February 21, 2021

Conscious Turing Machines

and automatic dungeon design, obviously.

I read this paper yesterday and I haven't been able to stop thinking about it (which is really funny, for a paper modeling short-term memory and attention).  Obviously any paper trying to model consciousness in a computer should be met with some skepticism, but this is Manuel Blum we're talking about, Turing Award recipient (rather like the Nobel Prize in computer science), and his wife and son, who are also heavyweight professors in their own right.

In retrospect maybe it shouldn't be surprising that Manuel would eventually make his way to / back to this problem, seeing as his advisor was Marvin Minsky, who wrote The Society of Mind.

I think they're basically right.  I think this is a pretty decent formal model of the Global Workspace theory of consciousness.

I'm a bit shaken because I've built something at a previous job where the patterns of data-flow between independent sub-parts of a program looked a lot like this - they'd do their own thing until another part discovered something interesting and broadcast it to everyone, and then they'd all update their models.  And it worked pretty darn well.

It sort of feels like the time I read Interaction Ritual Chains and realized I had been doing something significant without realizing it, and not being sure about the philosophical implications.   Or maybe looking behind the curtain and seeing that something I thought was significant can be characterized rather simply.  Little bit of future nausea maybe.

I do think this model isn't complete.  A lot of detail around the language being communicated between parts and how you'd actually build useful sub-parts isn't there yet.  And "the Model-of-the-World Long-Term-Memory maintains a model of the whole CTM itself" is doing a lot of work at making this self-aware rather than just sort of aware, but isn't fully developed here.  Still, how much self-awareness do you need to build a system at an animal level of consciousness?  How self-aware is my cat?

How self aware am I, really?

There's also the question of "Is this actually a useful tool for solving problems, or is it just a curiosity for consciousness researchers?"  It this just a hack for dealing with hardware constraints, and therefore increasingly irrelevant given hardware progress?  If you build a conscious machine, it will do what conscious things do - get distracted.  What you gain in responsiveness to changes in situation, you may well lose in the straightforward grinding on problems that computers excel at.  But it did seem to work well in that previous problem domain that I worked in.

I don't know what's more worrisome - the possibility of computers who get distracted, or the possibility that we will figure out how to build systems which are both conscious and provably correct (for their particular tasks).

So anyway, now I'm looking at all the technical problems I'm interested in and re-evaluating them in terms of this structure.  What would it look like to actually implement something like this?

If you built an idiot-savant mind just to build dungeons, what would its internal language look like?  What would its internal competing parts be?

When you build a dungeon, what does your internal dialogue sound like?  What are the concerns that you're balancing against each other, that put you in conflict with yourself, that make you hem and haw?

Is this dungeon level fully-connected / fully traversible?  If no, conscious dissatisfaction.
Is this dungeon level jayquayed / is its cyclomatic complexity greater than some threshold or lower than some threshold?  If no, weaker conscious dissatisfaction.
Does any single room have too many doors?  Dissatisfaction (maybe?  It could be a fun trick like once.  Maybe this is part of what it means to be self-aware, to choose to break one's own rules from time to time?).
Is a big enough fraction of the dungeon composed of open rooms versus just being a tight mess of hallways and corners?  Dissatisfaction.

So you have this set of Dissatisfiers, each of which is its own Long-Term Memory agent, and then you also have some set of Proposers (again, LTM agents), that generate proposed changes to the dungeon (a hallway proposer, a room proposer, a wall removal proposer, ...).  If a dissatisfaction is currently in short-term memory, they try to propose in response to that, and otherwise they just noodle around and some random Proposer's proposal gets applied?  And then each Dissatisfier updates its "mental model" of the dungeon based on the selected proposal.

To generate a proposal which could resolve a dissatisfaction, does each Proposer need sort of a model of each Dissatisfier?  At least enough to understand what it means when it complains?  Maybe Dissatisfiers should generate their own fix proposals with high priority instead of complaining globally and hoping someone else will fix it?  And then your Proposers are more explicitly for noodling when everything is already OK.  And maybe we run multiple copies of each Dissatisfier and have some nondeterminism in their proposed solution generation, so we get multiple proposed solutions to each problem and we can pick one at weighted-random.

Or maybe your proposers tag their proposals with "in response to dissatisfaction X, we propose Y", and a dissatisfier can accept or reject after forking its model and applying that change to it.  But then you're complicating your language, and you still sort of have the problem that proposers are proposing blind or need some sort of model of how to resolve different kinds of dissatisfactions.

Tabling temporarily the problem of dissatisfaction resolution - Because we have a bunch of different sorts of Dissatisfiers, each with their own model of the dungeon, they can look at the dungeon at different levels of abstraction and apply update proposals to that model in a way appropriate for that level of abstraction.

And then you have a timer / outputter, that eventually goes "OK guys it's been like a thousand cycles, if we're not currently deeply dissatisfied, can we output this to disk, wipe our memories, and start over?"

And maybe an inputter, where a human can go "hey can you drop what you're doing and generate a dungeon level with these thresholds on these dissatisfiers and output it to filename in say a thousand cycles?"  Or "can you generate a dungeon level tuned for these particular types of challenges?"

One thing I'm not clear on yet is how you'd do phases, like "OK this map is fine, time to start generating lairs and treasure."  Maybe you do something similar where you have a set of Stocking Dissatisfiers (in contrast with Mapping Dissatisfiers) and when they haven't seen any map-dissatisfaction in a while they start worrying about the contents of rooms?  Whether lairs are too close together, whether the fraction of rooms with monsters vs empty rooms vs rooms with treasure is right, etc.

...  it's probably telling here that my approach to this is so focused on dissatisfaction.

No comments:

Post a Comment