Thoughts and Adventures of an Engineer

Let's do something amazing...

The Search for Intelligence

Can you create a generally intelligent machine?

We have shared this earth with millions of living organisms and creatures and it’s amazing how we can look into the past by studying these creatures.

It’s interesting to look at our organic history to understand how we developed into the curious creatures we are. Humans are very complex, and in the search to emulate our own intelligence with machines we have been able to make significant progress on some very challenging problems.

Some examples:
Beat humans at their own games? (Alpha Go).
Jervis our intelligent personal assistant?(Braina).

Most artificial intelligence (AI) software struggles with taking its skill sets and applying it to new novel problems and succeeding. This is a serious challenge and one approach is emulating the brain.

Do we need to go to emulate every cell in the brain to achieve this?

I’m not entirely convinced,
I think the final solution will have very similar systems and pathways as the human brain but I think the path to get there needs to be less deterministic.

When we’re trying to create Artificial General Intelligence (AGI) we are trying to achieve something similar to what humans can do.  It is very challenging to create something that can solve problems based on previous experience, respond to changes in the environment and has the capability to solve novel problems.

It’s absolutely crazy that nature has created it all on its own and it will not be an easy challenge for the best human minds to overcome either.

I believe when we focus on goal oriented programming we limit the solutions and strip evolution from our AGI programs.

A popular segment in AGI is to emulate the entire human brain. I don’t think this approach will be successful, but I do believe it’s a valuable project.

One of the challenges of tackling complex problems like this is measuring progress. It’s much easier to measure progress when you can be specific in your goals.

Science moves much faster when this is implicit in the project. By emulating the human brain we can track the performance of the systems against human counterparts.

However, this approach also has a lot of technological barriers.
In order for this to be successful, we must also break through the point where processors can complete as many calculations per second as the human brain.

If nothing else comes out of this approach we will at least have powerful models/systems for use in new applications and broadening our understanding of how the enigma of the brain actually works.

There is one approach that I believe has the opportunity to be successful in creating AGI – creating a software that is capable of real evolution.

If we break down components of a cell into fundamental properties there’s are few which stand out in my mind.

Cell membranes act as a container for which the living system can be contained.It needs to be permeable to the outside environment in order to build in complexity, but also impermeable enough that it doesn’t suddenly lose its capability to protect the living system.

DNA acts as the blueprint for the underlying systems.
However, the capability to store information is not enough – you need to be able to execute this information to create/sustain the systems in place. This is very close to the idea of a source code and compiler in programming.

The source code is the DNA and the compiler is the cells ability to follow the instructions in the DNA

A modern example of a system that I believe is capable of evolution is the Internet.

It grows and responds to the systems existing within it – the underlying hardware that keeps it living, the integration of new programming languages like java, the transition from IPV4 to IPV6, the diversion from web pages to applications.

All of these things shape the internet, while there are many things that are living and changing within it – websites like Google, Reddit, and Youtube, or apps like Instagram, Snapchat and Tinder continually modifying the environmental stimuli.

I’d argue if we could keep it running for millions of years, the internet would evolve into something that resembles or merges with human intelligence.

But if you’re going to take a more active approach to creating AGI where would you start?

I’d start with a neat little type of program called a Quine.

Quines are self-replicating programs.

One key distinction between a Quine and a cell is that a basic Quine replicates its source code exactly where as a cell has many more opportunities for genetic variation – i.e. meiosis, mitosis.

What happens if you induce variation into the replication of the source code of a quine?

Well, you probably end up with a lot of Quines which cannot survive because the variation leads to code that can’t be compiled. However, every so often you should create a variation that is executed by the compiler and can differentiate offspring in competitive advantage. If these Quines continue to succeed in the world of the software program there can exist new genotypes and phenotypes in the population.

This is where the programming gets extremely difficult.

You basically need to create a way for the Quine to rewrite it’s code in proper syntax, and that allows for itself to make mistakes and not crash the entire cell, just that module.

I imagine you can try to replace replacement functions and source code randomly, but this amount of variation feels like the source code is not rigid enough to protect the underlying homoeostasis of the program. There have to be some guiding principles.

Think of a unique module in the source code as an amino acid that needs to be in a certain pH to fold properly. If you don’t give it that environmental restriction it’s not going to be very efficient at folding the same way every time. Remove a regulated pH and all of a sudden there is too much variation in the universe to fold your proteins the same way each time.

I’ve only found one author who has explored a similar perspective of using Quines in AI. Kory Becker experimented with a hilariously titled programming language called BrainFuck. Check out these articles at the bottom of the page if you want to learn more about his approach.

Controlling the Environment:

I firmly believe that you need the right balance of order and disorder in a cell to make it sustain life.

If the entire system falls heavy on chaos and disorder you don’t get structure and functionality. For example, in the early universe when the temperatures were too hot, too many collisions and energy in the system to see life as we know it exists. There needed to be a substantial amount of cooling, and structure of the universe before the concept of macro-molecules could take form.

Alternatively, a system with too little chaos/disorder isn’t dynamic enough incorporate change. If you put a glass of water in a box it will not suddenly boil unless something in the system around induces that change.

This is one reason why it’s so challenging to write software that can do this. You’d need a way of adjusting the randomness in the environment until you got it just right; without out this balance, I don’t see how evolution can be sustainable.

Culture

While I was researching for this article I spent some time with a friend who’s completing her PhD in Behavioural Neuroscience. One of the ideas she proposed was the importance of culture in the evolution of humans and her belief it would be a necessary requirement for creating AGI.

It wasn’t until cells could store DNA that they were able to create copies of themselves and have consistent genetic diversity across different organisms. Something similar happened as cells evolved into animals with brains capable of comprehension, memory, and communication.

As the animals developed the ability to tell stories they also inherently created the opportunity for generations of information to be passed along. How to create fire, how to make the best tools to hunt, where is the safest cave, which berries are poisonous.

These are all examples of how culture facilitated the transfer of information which influenced the future. I have no idea where I would even start to try and induce/replicate this in a software system.

Development

When you look at mammals it’s interesting to note that we all go through phases of a development – conception, prenatal development, until eventually, we start building our model of the world based on the environmental stimulus and the blueprint we inherited from our parents.

I’m curious if this is a natural requirement to build sustainable intelligent systems.

Every living animal on the earth would support this clause, but then again we all originated from the same starting point.

Maybe non-biological systems can occur without this phase.

Sex and Replication

Cells started by replicating in kind, then with the ability of genetic variation, and as this continued to evolve in animals the organs, tissues, brains all had to be replicated within the system of replicating cells.

As the evolution continued the ability to replicate entire human systems developed and sex became an underlying requirement for continuing human life. I’m not sure what form this would take as you start attempting to solve this problem in software.

My first guess is that this has to happen naturally and can’t be forced by writing code that already has a method to do it; it has to have meshed into the inner workings of each system that it affects.

Want to read the next article?
I’ll let you now when it’s out:



Links and References:

Papers:

Artificial General Intelligence: Concept, State of the Art, and Future Prospects
– Daniel Eth, Juan-Carlos Foust, Brandon Whale
DOI: 10.2478/jagi-2014-0001

The Prospects of Whole Brain Emulation within the next Half- Century
– Ben Goertzel
DOI: 10.2478/jagi-2013-0008

Will We Hit a Wall? Forecasting Bottlenecks to Whole Brain Emulation Development
– Jeff Alstott
DOI: 10.2478/jagi-2013-0009

Web:

1 Comment

  1. Cool to see all your thoughts about this all together in one place! It seems like your central thesis is that building a system that is capable of evolution is a viable approach to creating AGI. Quines seems like a very neat approach to putting this idea into effect. But if we are comparing this system to evolution I think it is also very important to consider what environmental pressures exist for a Quine, and how that will shape which variations succeed, and which fail to replicate.

    If these Quines exist in a system were where there are random variations, some “mutations” will may gain a competitive advantage, but the direction of that advantage depends on the environmental limitations (processing power?, storage?, etc.). I think that the type and number of these pressures will have a large effect on what type of progress the Quines achieve – I’m not entirely convinced that we could develop something resembling AGI without carefully considering and controlling the systems’ resources.

Leave a Reply

Your email address will not be published.