Philosophy

Lolll
LECTUREIntroductiontocomputationalism.docx

2

LECTURE: Introduction to computationalism

As we’ve seen, materialism comes in several varieties, and the one we left off with last week was functionalism. We want to turn now to the version of functionalism that is currently the most popular view about how the mind relates to matter, both among materialist philosophers and among many outside of philosophy. This would be computationalism, the view that the brain is a kind of computer and the mind is the software that runs on this computer.

Take a look at the “Handout on theories of the mind-body relationship” that I’ve posted this week on Canvas for a roadmap of the various theories we’ve looked at so far (along with some that we’ll look at later and some we won’t have time to look at). That should help you understand how the view we’re looking at now relates to what we’ve looked at already.

How many computers do you see?

The theory of computation

There are different ways to spell out the details of this idea, but we’ll focus on the classical computationalist model of the mind as a kind of “Turing machine.” To understand what that means, we need to set out some background concepts.

Start with the notion of computation, which can be defined as the use of an algorithm to calculate the value of a function. This might sound daunting and unfamiliar, but in fact it is something you’ve done many times – every time you’ve done arithmetic using long addition or long multiplication, for example. You are in that sense a “computer,” though these days that term tends to be used for a machine which is designed to mimic what you do.

Check it out, I’m a computer!

Let’s define the key terms here. Start with the idea of a function, which is an operation which, when applied to a given input (called the “argument(s)” of the function) yields a certain output (called the “value” of the function). This too might sound technical, but here too we’re actually talking about something pretty familiar. For example, addition and multiplication are functions.

Hence, consider the patterns:

x + y = z x • y = z

In each case, x and y are the inputs to the function, and z is the output. Or, to use the more technical jargon, x and y are the “arguments” of the function, and z is the “value” of the function. You can think of a function as a regular pattern that always gives you a certain output for certain inputs. Addition is the function where, when you put 2 and 2 in as input, you get 4 as output; when you put 2 and 3 in as input, you get 5 as output; when you put 10 and 10 in as input, you get 20 as output; and so on.

Multiplication is a different function because you get a different input-output pattern. For example, with multiplication, if 2 and 2 are the inputs, you’ll still get 4 as output, but if 2 and 3 are the inputs, you’ll get 6 as output. And of course, when 10 and 10 are the inputs, you’ll get 100 as your output, and so on.

Now, it isn’t just numbers that can have this regular input-output relationship. You could think of pain, for example, as a kind of function – one that gives you screaming and crying as output when damage to the body is input. Or you could think of the belief that it is raining as a function which, when the input is light from raindrops striking the eyes, the output is behavior like walking to the closet to get the umbrella.

Algorithms

So far that sounds like behaviorism, but the difference is that for computationalism there is something crucial that comes in between the input and output. This brings us to the idea of an algorithm, which is a method for calculating the value of a function, and one such that (1) at each stage of the procedure, there is always a definite step to take next, and (2) the procedure can be specified in a finite number of steps.

The best-known algorithms involve breaking a complex task down into a lot of simpler ones. Consider once again the example of long multiplication. If I ask you to tell me what 2 times 3 is, you’ll know the answer right away just by virtue of having memorized the multiplication table. But if I ask you to tell me what 1,234 times 99,999,402 is, you won’t be able to do it, unless you have mathematical ability like the Dustin Hoffman character in the movie Rain Man.

Ray, what algorithm are you running?

All the same, you can still find the answer by using the algorithm we call long multiplication. You break the task of multiplying two large numbers down into the task of multiplying a bunch of small numbers, and then adding the results. And this procedure has the two characteristics cited in the definition of an algorithm that I just gave. First, once you learn long multiplication, you know exactly what to do at each step of the process. There is no ambiguity. You start with the number at the far right, multiply it, write down the result, move on to the next number, and so on. Second, there is a finite number of steps required to get your answer. It may take a while because the numbers you are multiplying are so large, but you’ll get there.

Notice that to carry out long multiplication, you also need to apply another algorithm, namely long addition, in order to add all the numbers you’ve gotten as a result of multiplying. This illustrates how there can be layers of algorithms. You break one complex down into a bunch of simpler tasks by using an algorithm; you break those tasks down into even simpler tasks by using yet other algorithms; and so on. At each stage, the tasks become more numerous – for example, you’ve got to do a lot of adding in order to find out what 1,234 times 99,999,402 is. But even though there are a lot of these tasks and they are very tedious, they are simpler.

Now, suppose we could, through layer upon layer upon layer upon layer of algorithms, break a complex task down into a set of tasks which are so simple that even very dumb physical mechanisms, like little switches flipping on and off, could do them.

Turing machines

This brings us to the central idea of computationalism, and indeed the idea that underlies computers of the sort with which we’re so familiar these days: the idea of a “Turing machine,” named for the mathematician Alan Turing (1912-1954).

Turing

Let’s start with a somewhat technical definition and then try to explain it. A Turing machine is an abstract specification of a machine consisting of a tape with symbols written on it and a device which can read and write symbols, and which, by virtue of carrying out a small number of simple operations (moving the tape, reading symbols, writing over symbols, and changing its “internal state”) can carry out a computation.

As Turing described such a machine, the basics of how it works are as follows. The machine has a tape divided into squares, on each of which is written either a 0 or a 1. It moves the tape back and forth underneath a head (which has, say, an electronic eye) which “reads” the tape (e.g. the electronic eye is able to detect whether what’s on the square below it is a 0 or a 1). The “internal state” (or “machine state”) of the machine might have to do with something like a certain switch being flipped either to the A position or the B position.

Turing machine reading the tape

The machine is constructed in such a way that it can be made to produce different input-output patterns depending on the instructions the operator puts into it. An input might be something like the machine having its internal state switch flipped to B while the electronic eye reads a 0 on the tape, and the output might be the machine flipping the switch to A, erasing the 0 and writing a 1, and moving the tape one square to the right.

Now, a “machine table” would summarize the different input-output relationships the machine will exhibit depending on the instructions the operator puts into it. A sample machine table might look like this:

INPUT

1 0

MACHINE A Change to B; Stay in A;

STATE Write a 0; Write a 1;

Move tape to Move tape to

right right

B Stay in B; Change to A;

Write a 0; Write a 1;

Move tape to STOP

right

Software and hardware

Now, what does all this have to do with minds and brains, or even with computers of the everyday sort? The idea is this. Turing showed that if you could write an algorithm for some task – multiplying, adding, whatever – then, through layer upon layer upon layer of algorithms, you could reduce that task down to a set of tasks no more complicated than what the Turing machine does when it moves the tape back and forth, reads or writes 0’s and 1’s, and flips its internal switch from A to B and back again.

In other words, you could write an algorithm where the machine, doing these sorts of things in such-and-such a precise sequence, adds up to a higher-level set of algorithms, which, when carried out in just the right sequence amounts to yet some higher-level set of algorithms, and so on until at the highest level you’ve got behavior that amounts to giving the output 5 when 2 and 3 are put into the machine, 20 when 10 and 10 are put into it, and so on – that is to say, until at the highest level the machine is carrying out the adding function (or whatever the task is that you’ve designed the algorithms for).

The actual details of the physical mechanism don’t matter. It could be 0’s and 1’s written on a literal tape, but it could also be (for example) different voltage levels in an electronic device that correspond to 0’s and 1’s. That’s a question about what kind of hardware you are using. The machine table that governs the input-output relations – that embodies the set of algorithms you build the machine to carry out – would be the program or software that the hardware is running.

This is the principle on which pocket calculators operate. It’s just that it is voltage levels in sophisticated electronics, rather than a tape with 0’s and 1’s written on it, that constitutes the hardware. The software is still a set of algorithms of the kind Turing had in mind.

Alternative Turing machine hardware

Turing machine functionalism

Now, you could build a Turing machine that could just do adding, or one that could just do multiplying. But you could also build one that does any arithmetic problem, which is what a calculator does. Or you could build one that does a lot more – not just arithmetic problems, but word processing, web browsing, games, and so on. And that’s what modern electronic computers of the kind we see all around us these days are. They are electronic Turing machines of a much more sophisticated kind than the ones that could be built in Turing’s day, but running on the same basic principles.

Now, imagine a Turing machine which was capable of mimicking every other possible Turing machine – one which could do anything that you could construct a Turing machine to do. This is the idea of a universal Turing machine.

What is sometimes called “Turing machine functionalism” is the version of computationalism, and thus of functionalism, which holds that the brain is a universal Turing machine, and the mind is the software that is being run on this machine. It holds that the 0’s and 1’s of this particular kind of Turing machine correspond, not to marks written on a tape and not to voltage levels in computer chips, but rather to firing patterns in the neurons. By virtue of neurons firing in just the right patterns, what the brain is doing amounts to carrying out a set of algorithms, which together amount to the carrying out of higher-level sets of algorithms, and so on up to a highest-level corresponding to everything going on in our minds – reasoning, perceiving, feeling, remembering, and so on.

“Face it, Wanda, we’re both just Turing machines!”

Now for some optional YouTube videos which elaborate on some of the ideas we’ve been discussing:

Turing Machines Explained:

https://www.youtube.com/watch?v=dNRDvLACg5Q

Donald Hoffman on the Computational Theory of the Mind:

https://www.youtube.com/watch?v=cUhrK82seVY

Can Computers Have Minds?:

https://www.youtube.com/watch?v=QWOh2U6U82M