And the computers produce this how exactly? I'm not trying to be pedantic here, I'm asking you a simle question, as I cant see how computers can do anything more than we consciously program them to do.
Well, I tried to explain, let me try again. Please note I am talking about commercially available and research software - I am not postulating anything about what
might happen one day. They are in use to do things like design more efficient auto engines, etc.
Take a functional programming language like Lisp.
Now (and yes, this is where human consciousness plays a role), create a module that uses a random number generator to create a lisp program. The program is
completely random. Another module compiles the program and runs it against an externally provided fitness function. Another module does the genetic component - it takes two (or more) programs and combines them using rules very similar to the way our bodies splice genes together when sperm in egg meet. They are split in half and stitched together, and occasionally a mutation is injected. All random.
Okay, now those modules are all stitched together to do the following. A population of 10,000 (say) programs are generated automatically. They are run and each is evaluated with the fitness function, giving each program a score. The higher scoring programs "survive" and are passed on to the genetic module which slices and dices the programs together into a new population of 10,000 (say) programs. In other words, the programs are 'evolved' based on their fitness. Now, that new population is run against the fitness function, and the fittest of those are passed into the genetic module where they are sliced and diced, evolving into the third generation.
Now yes, that infrastructure program I just described was written by a human, of course. However, note that this program is
creating entirely new programs, and that these programs are
evolved, based on pretty standard genetics, until they become fit for some purpose.
So, say I want to create a program to sort a data set. I write a fitness function, say, like so:
Code:
fitness = 0
for each data element in the data set
if data element i < data element i+1
fitness += 1;
else
fitness -= 1;
I give that very simple fitness function to the computer, and off it goes, eventually evolving a program that sorts data.
Now sure, that fitness function was generated by my human brain, and so was the original program that generates the genetic programs. But the process itself of evolving the programs uses no human consciousness. Note the example I used of sorting numbers is something you'd never tackle using genetic programming - it is trivial to write a good sort routine. Instead, they are used for things we don't know how to do well - create a more efficient gasoline engine, predict weather, or whatever. We
don't sit down and ponder "what would make a gasoline engine more efficient" and then try to write a program to help us design one, we merely write a fitness function that looks at how much fuel is consumed in an hour, and assigns a higher fitness to lower consumption, and then let the computer do the rest.
Ah, but there is still
human conscious in that process, you exclaim! Who wrote that fitness function in the first place!?! Sure, but not at the point of actually creating the genetic programs (remember, the computer itself is writing programs - it is those programs which we call 'genetic programs', not the program that writes the program). And, I can happily postulate a random process that generates fitness functions, and a random process that generates the data set that the programs run against, removing all human consciousness from the system from beginning to end. that system would be essentially how the world created life. The universe is not conscious, the material systems in the universe are not conscious, yet through evolution they created conscious systems.
Note I am not claiming our
current systems for genetic programs are producing consciousness - to be clear,
they are not. But there is nothing fundamentally stopping them from doing so, if they were run long enough, where the fitness function would be doing the Turing test, say. ya, that would take a trillion years or so, but in principle it's entirely possible (assuming computer programs can be conscious).
Google 'genetic programming'. It's a fascinating tool, using evolution instead of logic and reasoning to create programs.
edit: there was a bit of hand waving in the above - trying to get a program to create a more efficient car engine purely by starting with lisp and random programs would work, but might need 1000 years to run. So, we help things along by creating a lisp like language, where primitives are things like "set cylinder bore width" and such, so we don't have to wait for the system to evolve procedures like that itself. But, we
could wait for that to happen, if we wanted to. In the practical world we don't try to prove philosophical points, so we take the expedient route.