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

Offline gogolo

  • bit
  • Posts: 6
    • View Profile
Re: What is ARTUR?
« Reply #15 on: February 19, 2017, 06:42:21 AM »
As a Sociologist I may contribute some thoughts. Emirbayr/Mische (1998) define human ageny as “the temporally constructed engagement by actors of different structural environments - the temporal relational contexts of action – which, through the interplay of habit, imagination, and judgment, both reproduces and transforms those structures in interactive response to the problems posed by changing historical situation“

Habit as sedimented experience, judgements as answers to actual problems and imagination as goals should be included in the experiment. I may have overread it,  but is it planned to let the code changig happen based on problems the creatures experience? If they experience problems in the dimensions of intelligence like musical-rhythmic,  interpersonal etc., they may be forced to build gerneral solution patterns.

Edit: As I think further, human intelligence is based on communication, e.g. collaborative problem solving. So when creatures can communicate they could be presented tasks which require collaboration, like hunting.

BTW this is a great idea!
Best regards,  Olivier
« Last Edit: February 19, 2017, 07:14:47 AM by gogolo »

Offline Paul

  • Administrator
  • double
  • *****
  • Posts: 3487
  • Developer
    • View Profile
    • PaulsCode.Com
Re: What is ARTUR?
« Reply #16 on: February 19, 2017, 06:20:33 PM »
Yes, the code changes will be done by the compiled program.  So memories of the challenges will in theory influence the changes that the creatures make.  You could think of the code editing phase as just another challenge.  The creatures are modifying a copy of their own code, but those changes apply to their offspring.  The better the scores of the offspring, the more likely those changes will be inherited by future generations.  Hopefully this will lead to "instincts" to improve on their own implementation (versus just making random changes).
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: 3487
  • Developer
    • View Profile
    • PaulsCode.Com
Re: What is ARTUR?
« Reply #17 on: April 04, 2017, 04:27:44 PM »
I have decided on a target level of intelligence that I want to achieve, which will be used to seed the transmutation routine.  I will start with an AI that is capable of playing the first level of Super Mario Bros.  It doesn't necessarily have to play well, but should demonstrate that it is in fact learning from its experiences and improving at the game.  The AI obviously will not be written specifically to play Super Mario Bros (that would be too easy), and it will not start out with any knowledge about the game.  In other words, Super Mario Bros. is just the environment for testing the AI, but it could just as well operate in other simple NES games without modification.
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: 3487
  • Developer
    • View Profile
    • PaulsCode.Com
Re: What is ARTUR?
« Reply #18 on: April 20, 2018, 08:29:01 AM »
I've been quite here on the forum for a while (mainly been active on the Numenta forum).  Thought I would post a progress update.

I spent some time on the Reinforcement Learning problem, and linking it with HTM (which still I believe is the best starting technology for the seed AI).  About this time last year I formalized a strategy, which I described in this thread .  For reference, here is a visualization of that strategy:



I've since discovered a couple of problems with this strategy.

One issue is with the reinforcement TP layer.  The basic problem here is that although the pooling layer creates a representation depicting all expected future rewards/punishments, the result is that the system picks a future motor command with the most reward (skipping required previous motor commands).  I spent some times putting in hacks to get around this, but think I need to tackle the problem from a different angle.

I've been reading neuroscience papers to see if I can get clues from biology.  One interesting paper is Computational Cognitive Neuroscience.  An important clue is this diagram:



The dynamics columns are the key here.  What I have developed so far models only an "integrator" dynamic.  For the reinforcement learning problem, leveraging a "separator" dynamic is necessary.  I've started looking more closely at a thesis paper by Ali Kaan Sungur, who has modeled the basal ganglia and integrated with HTM.

The second issue is that the location signal is kind of a magic box without any description of where it comes from.  For testing, it can be hard-coded, but it needs to be replaced with something generic.  The latest HTM School video introduces the concept of grid cells, which is definitely the correct starting point to solving this problem.  I've also been keeping up with Numenta's work in this area.  Jeff's recent talk at Simons Institute highlights their latest thinking in the current round of research.  The relevant connections:



I've also begun working on a new implementation of HTM in GoLang, which allows for multi-core processing, or distributed processing over a network.  The basic design looks like this:



The basic idea is to integrate a cluster of shards which each process a sub-set of cells or minicolumns in parallel, and assemble their outputs into a completed SDR. This is done by a leveraging a module I'm calling the Sparse Representation Controller (SRC) which takes chunks of a representation and reassembles them:



An SRC acts as a message bus with receivers and transmitters. Shards that need to know complete activation SDRs register as receivers, and related shards register as transmitters to report their output. Once an SRC receives all outputs from transmitting shards, it constructs an activation SDR and transmits it to all registered receivers. Because only the resulting activation SDR is transmitted, the size of traffic within the cluster is small, and most of the processing within a shard can happen in parallel with a relatively small window required for synchronization.

The SRC for Spatial Pooling is a special case, because it needs to coordinate scoring across all shards.  I've called this special SRC the Spatial Pooling Controller (SPC).  The amount of traffic transmitted within a spatial pooling cluster is reduced by having the SP shards only report their top (sparsity * shard count) scores to the SPC. The SPC joins those and clips to just the top (sparsity) minicolumns. It then reports back only those winners which are relevant to each shard for learning.
« Last Edit: April 20, 2018, 08:40:31 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