What would be the simplest system capable of recursive self improvement, not
necessarily with human level intelligence?  What are the time and memory
costs?  What would be its algorithmic complexity?

One could imagine environments that simplify the problem, e.g. "Core Wars" as
a competitive evolutionary algorithm where the objective function of a species
is to reproduce and acquire computing resources as fast as possible.  We could
imagine two different strategies.  One strategy is to make "intelligent"
changes, much as a programmer might rewrite a line of code in its copy. 
Another would be to make simple changes like random bit flips, most of which
would be ineffective, but compensate with a higher reproduction rate.  There
is an analogy in biology: slow reproduction in humans vs. fast reproduction in
insects and bacteria.  Both strategies are effective.

A similar situation exists on the Internet.  SQL Slammer was very simple (a
376 byte UDP packet), but it doubled in population every 8 seconds, saturating
the Internet in 10 minutes.  It could not mutate, so it became extinct once
the vulnerability it exploited was patched.  At the other extreme, some email
viruses scan text and address books from its host to construct convincing
forgeries using complex algorithms.  These intelligent viruses are harder to
eradicate.

Instead of Core Wars, consider a real environment such as the Internet. 
Software has on average 1 to 2 bugs per 1000 lines of code.  This means that
operating systems and widely used software like web browsers, instant
messengers, media players, software on cell phones, etc, contain thousands of
bugs.  Some of these bugs could be exploited, e.g. crashing the program,
gaining control through buffer overflows or tricking the user.  New
vulnerabilities that affect your computer are discovered almost daily, so we
know that thousands more remain.  Today many exploits are discovered by white
hats who inform the authors, or gray hats who publish them, leaving them to
the black hats to exploit.

Security tools like NMAP, Nessus, and password crackers are double edged
swords.  System administrators need them to test their systems for
vulnerabilities, and hackers use them build botnets.  Naturally there is a big
incentive on both sides to build better tools.  Consider a program with human
level understanding of software that spent all of its time searching for
unpublished vulnerabilities.  Such a tool would be invaluable for testing your
software before releasing it.  It would be invaluable to hackers too, who
could discover exploits in your system that were unknown to any human, or to
any virus checker, firewall, or intrusion detection system you might be using.

The real danger is this: a program intelligent enough to understand software
would be intelligent enough to modify itself.  It would be a simple change for
a hacker to have the program break into systems and copy itself with small
changes.  Some of these changes would result in new systems that were more
successful at finding vulnerabilities, reproducing, and hiding from the
infected host's owners, even if that was not the intent of the person who
launched it.  For example, a white hat testing a system for resistance to this
very thing might test it on an isolated network, then accidentally release it
when the network was reconnected because he didn't kill all the copies as he
thought.

It is likely that all computers are vulnerable, and there is little we could
do about it.  Human intelligence is no match for billions of copies of a self
improving worm that understands software better than we do.  It would not only
infect computers, but potentially any system that connect to them, such as
cell phones, cameras, cars, and appliances.  But just like successful
parasites don't kill their hosts, the most successful worms will probably not
make your system so unusable that you would turn it off.

My question is, how soon could this occur?  Two considerations:  First, Legg
proved that an agent cannot predict (understand) a system with greater
algorithmic complexity [1].  This means that RSI must be experimental.  Not
all of the copies will be more successful.  RSI is an evolutionary algorithm.

The second is that understanding software seems to be AI-complete. 
Programmers have to understand how users and other programmers think, and be
able to read and understand documentation written in natural language.  Does
this require the same complexity as a language model (10^9 bits)?  Could a
simpler program compensate for lesser knowledge with brute force computation,
perhaps using simple pattern matching to identify likely programs at the
machine level?  The problem is equivalent to compressing code.  It seems to me
that the lower bound might be the algorithmic complexity of the underlying
hardware or programming language, plus some model of the environment of
unknown complexity.

References

1. Legg, Shane, (2006), Is There an Elegant Universal Theory of Prediction?, 
Technical Report IDSIA-12-06, IDSIA / USI-SUPSI, Dalle Molle Institute for
Artificial Intelligence, Galleria 2, 6928 Manno, Switzerland.
http://www.vetta.org/documents/IDSIA-12-06-1.pdf


-- Matt Mahoney, [EMAIL PROTECTED]

-----
This list is sponsored by AGIRI: http://www.agiri.org/email
To unsubscribe or change your options, please go to:
http://v2.listbox.com/member/?member_id=8660244&id_secret=48315087-752156

Reply via email to