Author Topic: What is ARTUR?  (Read 5825 times)

Offline Paul

  • Administrator
  • double
  • *****
  • Posts: 3471
  • Developer
    • View Profile
    • PaulsCode.Com
What is ARTUR?
« on: October 24, 2016, 04:10:03 PM »
- This slot is reserved for the project roadmap and links -
« Last Edit: October 24, 2016, 06:12:12 PM by Paul »
Device: Samsung Galaxy Nexus i515
CPU: TI OMAP4460, 1.2 GHz (dual core, ARM Cortex-A9)
GPU: PowerVR SGX540, 307 MHz
RAM: 1 GB
Resolution: 720 x 1280
Rom: omni-4.4.4-20141014-toro-FML KitKat 4.4.4, rooted

Device: Eee PC 1015PEM
CPU: Intel Atom N550, 1.5 GHz (dual core, x86)
GPU: Intel GMA 3150, 200 MHz (dual core)
RAM: 2GB
Resolution: 1024 x 600
Rom: android-x86-4.3-20130725 Jelly Bean 4.3, rooted

Offline Paul

  • Administrator
  • double
  • *****
  • Posts: 3471
  • Developer
    • View Profile
    • PaulsCode.Com
Re: What is ARTUR?
« Reply #1 on: October 24, 2016, 04:17:38 PM »
The goal of ARTUR is to produce an AI that rewrites and improves on itself in a recursive fashion.  The acronym ARTUR stands for “Artificial Recursive Transmutative Understanding Routine”.  This name was expanded from the more generic term “Artificial Intelligence” to better fit the unique aspects of the project, while still breaking down to an acronym that is easy to remember and use in conversations.

The idea originally occurred to me after having a debate with a colleague about the theoretical “Technological Singularity”.  The argument my colleague was making, which I disagree with, was that the singularity would follow almost immediately after human-level artificial general intelligence was created (i.e. as soon as a machine were to become self-aware).  I argued that there is nothing magical about human-level intelligence which would automatically lead to the singularity (there are already 7 billion human-level intelligences in the world now, right?)

My own argument about there being nothing magical about human-level intelligence got me thinking, though.  What level of intelligence would be necessary for a recursive self-modifying routine to function?  Would cockroach-level intelligence be enough?  What aspects of the “Technological Singularity” theory might be used to generate an AI with a higher level of intelligence than what it initially started out with?  Could such a system be used to produce robust utility AIs that could later be plugged into other systems (a toy robot, for example)?

I began investigating this possibility, and initially came up with a list of four main problems that the system would need to address.  I’ve also devised strategies to address each of these problems.

Problem #1:  What is “intelligence”, and how to measure it?
Part of the solution is to look at intelligence from a variety of perspectives.  The intent is to produce a general purpose AI (versus one that is only good at math for example), so a series of challenges must be devised which test multiple different aspects of intelligence.

In the book “Frames of Mind: The Theory of Multiple Intelligences”, psychologist Howard Gardner discusses seven facets of intelligence: musical-rhythmic, visual-spatial, verbal-linguistic, logical-mathematical, bodily-kinesthetic, interpersonal, and intrapersonal.  Although Gardner’s theory has been widely criticized by mainstream psychology, I think his work provides an excellent conceptual foundation for building challenges that target different aspects of intelligence.  A composite scoring of all seven categories should be a good way to measure overall intelligence for performing comparisons.

Whatever challenges or tests are being used to measure intelligence must not be exactly the same every time.  Otherwise ARTUR will evolve something like a “lookup table” to the answers for each specific challenge, versus evolving the ability to actually solve them.  Additionally, the challenges should be tailored to the intelligence level of the system, which will change over time.  The challenges must be capable of measuring intelligence from a range of cockroach-level intelligence all the way up to whatever is the target level of intelligence.  And the granularity must be high enough to detect slight differences in intelligence, so that the system can properly identify the proper trends.

Another part of the solution will be to write an API into the system which can be used to introduce new challenges in the future without having to code all of the challenges up front before kicking off the system.  As ARTUR becomes more intelligent, or more pressure needs to be applied to a particular area, new challenges can be written which are more complex or which target specific problem areas.  Another benefit of such an interface is that it could be used to plug the AI into a practical system later (such as a toy robot), once it has reached a desired level of intelligence.

Problem #2:  How to ensure the routine doesn’t, through self-modification, deviate from its core goal to become more intelligence?
The first part of this problem can be addressed by adding an external system for driving the goal to become more intelligent.  The self-modification routine should not have any access to modify this external system.  This would involve proper “sandboxing” of the routine such that there is no way for it to reach outside to impact the external system.  The second part of the problem is how to code a goal of becoming more intelligent in the first place?

Nature has solved similar problems, through the reproductive process and natural selection.  External forces which a species cannot control drive its future generations into more and more efficient variations.  This in turn leads to the emergence of instincts (such as a chipmunk’s drive to store acorns for the winter, for example).

A system of reproduction and selection could be simulated, driving an “instinct” to want to become more intelligent.  In theory, this should be the inevitable result of a routine which has the ability to modify the code of its offspring, with an external “judge” which compares and selects the most intelligent of those offspring for producing the next generation.  An individual which has evolved an instinct to want to make its offspring more intelligent, is more likely to produce more intelligent offspring than another individual which is just making random modifications to its offspring.  This means that over many generations, the modifications being made should become less and less random in nature.

Problem #3:  How to ensure the routine doesn’t evolve to purposely sabotage its own offspring so that they are all less intelligent than itself, thus ensuring its own continued existence?
Nature has an answer to this problem: aging and lifespans.  ARTUR could be designed in a way such that a particular individual eventually “dies” and can no longer be chosen to populate future generations.  Since it is easy to create exact byte-for-byte replicas of software, the “death” of an individual would need to include non-reusability of any exact duplicate of a particular individual.
For an individual to continue into future generations, it must also be forced to modify its offspring in a way that they do not compile into exact replicas of itself.  This would also prevent a variation of the problem in which the routine ensures its own continued existence by only modifying its offspring’s source code in a way which does not change their compiled state (for example, only inserting comments in the code)

Problem #4:  How to address the issue of maturation time?
More intelligent species tend to have longer maturation times.  For example, compare a wildebeest infant hours after birth when it can already run from predators, with a human infant hours after birth.  Any objective judge would assume the wildebeest to be more intelligent.  However, doing the comparison a couple years later, the human would be the obvious winner.
How do we avoid having to wait a very long time between generations to measure intelligence?  I believe this can be addressed by taking an idea from science fiction – inherited memory.  If the system is designed in a way that the memories of the parents are incorporated into their offspring, then maturation time would be drastically reduced.


Strategy

The initial strategy for ARTUR will be a system which consists of a Judge and Creatures.  The Judge will exist as a separate application which is isolated from the Creatures.  The Creatures will run in a sandbox with no access to the overall OS or to the judge.  They will be free to make any modifications within the sandbox.

The creatures will have access to an interface for browsing and editing a copy of their own source code.   They will also have access to a variety of context sensitive and code completion interfaces that are available in various programming IDEs (versus only having the ability to randomly type keystrokes).

Two parent Creatures will reproduce by copying and modifying multiple randomly merged versions of their own two source code bases.  These modified offspring will then be given challenges by the Judge to determine their level of intelligence.  The offspring and parents will all be compared, and the best two will be chosen to be the parents of the next generation.  The parents (and any exact replicas of them) will have a lifespan after which they “die” and cannot be chosen for future generations.  When a parent dies, it will be replaced by the most intelligent of its offspring.

Because the interface for providing challenges is critically important, the Judge will first make sure this component is not broken, before doing any other comparisons.  Any Creature with a broken interface will not be chosen for future generations.

Because the ability to modify offspring is also a critically important feature, the Judge will ensure that each of the offspring are capable of modifying another creature.  Any Creature which is unable to modify another Creature will also not be chosen for future generations.

The Judge will then provide challenges to the remaining Creatures, and compare their intelligence scores.  In the case of a tie, the youngest Creature will win.  If tied on both intelligence and age, the Creature most different from either of its parents will win.

To ensure diversity, the system will consist of two “sexes”, four breeding lines, and two rotations.  Line 1 Sex A (1A) will only be crossed with Line 2 Sex B (2B), 2A with 3B, 3A with 4B, and 4A with 1B.  Breeding pairs will always be from opposite rotations.

The evolving source code will be maintained in git.  As new Creatures are chosen by the Judge, their source code will be committed, using a branching and merging strategy which matches the breeding strategy.  This will allow the changes to be monitored, and for the possibility of injecting manual changes into the Creatures’ evolution.  Statistics will be maintained in the README, which can be used to have a quick view into how the process is going.
Device: Samsung Galaxy Nexus i515
CPU: TI OMAP4460, 1.2 GHz (dual core, ARM Cortex-A9)
GPU: PowerVR SGX540, 307 MHz
RAM: 1 GB
Resolution: 720 x 1280
Rom: omni-4.4.4-20141014-toro-FML KitKat 4.4.4, rooted

Device: Eee PC 1015PEM
CPU: Intel Atom N550, 1.5 GHz (dual core, x86)
GPU: Intel GMA 3150, 200 MHz (dual core)
RAM: 2GB
Resolution: 1024 x 600
Rom: android-x86-4.3-20130725 Jelly Bean 4.3, rooted

Offline fzurita

  • double
  • *****
  • Posts: 508
    • View Profile
Re: What is ARTUR?
« Reply #2 on: October 24, 2016, 10:25:00 PM »
Interesting, sounds like self modifying code, but at a very high level. If you go with a high level language like C++, I could see this as really slowing down each of your iterations due to compilation times.

Have you thought about implementing this with the techniques used in a JIT compiler? This would make it much harder to document each of the iterations though. Although, at some point, I imagine, even with a high level language, the generated code would be impossible to understand.
« Last Edit: October 24, 2016, 10:27:25 PM by fzurita »

Offline Paul

  • Administrator
  • double
  • *****
  • Posts: 3471
  • Developer
    • View Profile
    • PaulsCode.Com
Re: What is ARTUR?
« Reply #3 on: October 25, 2016, 07:23:49 AM »
That is an interesting thought -- would basically allow the creatures to modify themselves at a binary level versus at a source code level.  I might look into that if it turns out compile times become a major drag on the system.

I am currently looking at using Golang, and having the creatures run in Docker + LXD to sandbox them.  Go, in particular, has some nice features for correcting and formatting code, has a garbage collection system, and is fast and lightweight.  The benefit of running in containers is that I could potentially use something like Amazon cloud to easily scale up and down on the fly.  I have some ideas for monetizing a component of the system, and if successful, could be used to help speed up the process.

Ultimately, I'll need to build out an initial proof of concept for the transmutation routine to get a feel for the time scales involved in this type of simulated evolution (and from there, should be able to estimate how much processor power would be needed to achieve a particular target intelligence score in a given time frame).
Device: Samsung Galaxy Nexus i515
CPU: TI OMAP4460, 1.2 GHz (dual core, ARM Cortex-A9)
GPU: PowerVR SGX540, 307 MHz
RAM: 1 GB
Resolution: 720 x 1280
Rom: omni-4.4.4-20141014-toro-FML KitKat 4.4.4, rooted

Device: Eee PC 1015PEM
CPU: Intel Atom N550, 1.5 GHz (dual core, x86)
GPU: Intel GMA 3150, 200 MHz (dual core)
RAM: 2GB
Resolution: 1024 x 600
Rom: android-x86-4.3-20130725 Jelly Bean 4.3, rooted

Offline fzurita

  • double
  • *****
  • Posts: 508
    • View Profile
Re: What is ARTUR?
« Reply #4 on: October 25, 2016, 11:11:44 AM »
Also, you do pose a very good question. Can intelligence arise out of a pseudo random system? Is this approach any better than a neural net that has been trained to perform a specific task?

Offline Tommy78

  • byte
  • *
  • Posts: 16
    • View Profile
Re: What is ARTUR?
« Reply #5 on: October 25, 2016, 08:05:49 PM »
This is way above my pay grade. Having said that, code can't learn, as far as I know. All it can do is what it was told to do. Nothing more and nothing less. Is there truly a way to create something that once created, can then act and change on its own?  Maybe to a point, but the creator can never take every possibility know to exist into account before it was ever imagined. The author is what's holding things back. :)

Offline Psycho_Sackboy

  • bit
  • Posts: 5
    • View Profile
Re: What is ARTUR?
« Reply #6 on: October 25, 2016, 10:29:12 PM »
I cannot offer any technical opinion or inuput but as someone who spent his entire teens studying various philosophy and have become an autodidact in various Western and a few Eastern beliefs I find this incredibly fascinating.  :)

This concept leads me to Ray Kurzweil and his work The Age of Spiritual Machines.

Now I'm not going to question the ethics because that has been done so much but I am curious to what the end goal will look like!

I look forward to reading updates and comments here! I think this is incredibly neat!  ;D

Offline Paul

  • Administrator
  • double
  • *****
  • Posts: 3471
  • Developer
    • View Profile
    • PaulsCode.Com
Re: What is ARTUR?
« Reply #7 on: October 26, 2016, 09:48:07 AM »
code can't learn, as far as I know. All it can do is what it was told to do. Nothing more and nothing less.

Yes, that is true.  However, the question that I am exploring is whether machine learning (i.e. code that has been "told" to discover temporal patterns and make predictions) can be applied to the problem of improving on existing code (in this case, its own code).

Is there truly a way to create something that once created, can then act and change on its own?  Maybe to a point, but the creator can never take every possibility know to exist into account before it was ever imagined.

Yes, the Judge program will be limited to whatever challenges I or other community members write.  This of course means that there could very well be "gotchya" scenarios that I haven't yet considered (besides the four big ones I mentioned above).  That is one reason why the ability for I and other folks to modify and write new challenges is a critical part of the system.  It could also mean going back to the drawing board a few times as I learn from initial failed attempts.

Also keep in mind that I have no illusions about this process being used to produce anything close to a human-level intelligence (at least not on current technologies).  My goal is much smaller in scope -- to explore the concept of a machine intelligence which is able to redesign itself to gradually become more intelligent than when it started.
« Last Edit: October 26, 2016, 09:54:46 AM by Paul »
Device: Samsung Galaxy Nexus i515
CPU: TI OMAP4460, 1.2 GHz (dual core, ARM Cortex-A9)
GPU: PowerVR SGX540, 307 MHz
RAM: 1 GB
Resolution: 720 x 1280
Rom: omni-4.4.4-20141014-toro-FML KitKat 4.4.4, rooted

Device: Eee PC 1015PEM
CPU: Intel Atom N550, 1.5 GHz (dual core, x86)
GPU: Intel GMA 3150, 200 MHz (dual core)
RAM: 2GB
Resolution: 1024 x 600
Rom: android-x86-4.3-20130725 Jelly Bean 4.3, rooted

Offline Tommy78

  • byte
  • *
  • Posts: 16
    • View Profile
Re: What is ARTUR?
« Reply #8 on: October 29, 2016, 10:26:50 PM »
Paul: Just giving you a bit of a hard time and wanted to see how you'd respond. I have no doubt you'll accomplish what you want to. :)

Offline Paul

  • Administrator
  • double
  • *****
  • Posts: 3471
  • Developer
    • View Profile
    • PaulsCode.Com
Re: What is ARTUR?
« Reply #9 on: October 31, 2016, 12:59:17 PM »
Paul: Just giving you a bit of a hard time and wanted to see how you'd respond. I have no doubt you'll accomplish what you want to. :)

Thanks.  Even if it doesn't work out, I will undoubtedly learn some useful things along the way.  For example, studying how to measure and compare AIs will likely be a very relevant skill as AIs of the future are developed.  The idea of "artificial selective breading" is a pretty interesting topic as well (could be applied to other things besides AI, such as various social games).
Device: Samsung Galaxy Nexus i515
CPU: TI OMAP4460, 1.2 GHz (dual core, ARM Cortex-A9)
GPU: PowerVR SGX540, 307 MHz
RAM: 1 GB
Resolution: 720 x 1280
Rom: omni-4.4.4-20141014-toro-FML KitKat 4.4.4, rooted

Device: Eee PC 1015PEM
CPU: Intel Atom N550, 1.5 GHz (dual core, x86)
GPU: Intel GMA 3150, 200 MHz (dual core)
RAM: 2GB
Resolution: 1024 x 600
Rom: android-x86-4.3-20130725 Jelly Bean 4.3, rooted

Offline retroben

  • float
  • ****
  • Posts: 432
    • View Profile
Re: What is ARTUR?
« Reply #10 on: October 31, 2016, 11:51:58 PM »
This is way above my pay grade. Having said that, code can't learn, as far as I know. All it can do is what it was told to do. Nothing more and nothing less. Is there truly a way to create something that once created, can then act and change on its own?  Maybe to a point, but the creator can never take every possibility know to exist into account before it was ever imagined. The author is what's holding things back. :)

What if the thing you told it to do resulted in arbitrary code execution in such a complex way that it began to formulate into an artificially sentient being that could eventually do it all and much more?  :P

@Paul: Don't forget about the sub-conscious part of the brain which is very highly intelligent and knowledgeable but not utilized much,as the result of being fully utilized would be a large strain on our bodies and the brain's energy consumption would increase exponentially.
If we could suddenly switch on and use that sub-conscious part fully,we could possibly die very soon from the energy required to sustain that heightened sense of understanding or at least require much more food packed with all of the necessary vitamins for sustenance.

Still waiting on scienctists to discover a way to unlock the sub-conscious mind of someone to see what it results in.

Offline Paul

  • Administrator
  • double
  • *****
  • Posts: 3471
  • Developer
    • View Profile
    • PaulsCode.Com
Re: What is ARTUR?
« Reply #11 on: November 11, 2016, 08:24:20 AM »
@Paul: Don't forget about the sub-conscious part of the brain which is very highly intelligent and knowledgeable but not utilized much,as the result of being fully utilized would be a large strain on our bodies and the brain's energy consumption would increase exponentially.

While my goal is not to write anything close to human level intelligence, I do think the sub-conscious is a manifestation of a basic principal of the cortex which I will need to address -- Attention.  The brain is bombarded with a fire hose of sensory input, and yet somehow is able to filter and focus on a single task.  This seems to be addressed by layer 6 in the cortex.  Not being a neuroscientist, I probably won't solve this problem the same way the cortex does, but might be able to get some clues from studies that have been done on this layer.

For anyone interested, this is a representation I drew up a while back to depict the basic wiring of layers in a hierarchy of cortical regions.  It is based on Numenta's drawings, white papers, and theories from a couple years ago, so pretty outdated from their perspective, but still very useful IMO for thinking how things might be wired in an intelligent system:

« Last Edit: November 11, 2016, 08:38:12 AM by Paul »
Device: Samsung Galaxy Nexus i515
CPU: TI OMAP4460, 1.2 GHz (dual core, ARM Cortex-A9)
GPU: PowerVR SGX540, 307 MHz
RAM: 1 GB
Resolution: 720 x 1280
Rom: omni-4.4.4-20141014-toro-FML KitKat 4.4.4, rooted

Device: Eee PC 1015PEM
CPU: Intel Atom N550, 1.5 GHz (dual core, x86)
GPU: Intel GMA 3150, 200 MHz (dual core)
RAM: 2GB
Resolution: 1024 x 600
Rom: android-x86-4.3-20130725 Jelly Bean 4.3, rooted

Offline retroben

  • float
  • ****
  • Posts: 432
    • View Profile
Re: What is ARTUR?
« Reply #12 on: November 11, 2016, 02:27:03 PM »
Also remember that we have two brains with the left and right brain doing their specific purposes in performing unique tasks for each section and motor skills among other things.

*Kzzrt* Why was I programmed for pain!? *Kzzrt* ;D

Offline Paul

  • Administrator
  • double
  • *****
  • Posts: 3471
  • Developer
    • View Profile
    • PaulsCode.Com
Re: What is ARTUR?
« Reply #13 on: November 11, 2016, 03:09:00 PM »
One of the interesting revelations that has come from studies of the cortex is that if you look at a region from one area of the cortex and compare it to one from another area, they look virtually identical (whether you are looking at an area for processing vision, or audio, language, etc).  This is an indication that the cortex is designed to be a universal solution to many different problems.  Basically a common solution which can be specialized (through its position in a hierarchy) to handle different tasks that might otherwise seem to be unrelated.  If I can mimic at least a part of that flexibility in an AI, it should be a good initial state to begin transmuting.
Device: Samsung Galaxy Nexus i515
CPU: TI OMAP4460, 1.2 GHz (dual core, ARM Cortex-A9)
GPU: PowerVR SGX540, 307 MHz
RAM: 1 GB
Resolution: 720 x 1280
Rom: omni-4.4.4-20141014-toro-FML KitKat 4.4.4, rooted

Device: Eee PC 1015PEM
CPU: Intel Atom N550, 1.5 GHz (dual core, x86)
GPU: Intel GMA 3150, 200 MHz (dual core)
RAM: 2GB
Resolution: 1024 x 600
Rom: android-x86-4.3-20130725 Jelly Bean 4.3, rooted

Offline Tommy78

  • byte
  • *
  • Posts: 16
    • View Profile
Re: What is ARTUR?
« Reply #14 on: January 29, 2017, 06:46:17 PM »

Problem #1:  What is “intelligence”, and how to measure it?


I'm by no means an intellectual, but I believe the answer to you question is "experience". Intelligence is experience, and you can measure it by knowing when to use it. You also need to be able to recall or remember what was learned and apply it.

Of course, that's just one type of intelligence. As humans, we might be able to have a feeling about a situation without having any experience at all. That is something you just can't teach or quantify, really.