Re: Making neural nets more like real neurons

From: Adrian Tymes (wingcat@pacbell.net)
Date: Mon Apr 01 2002 - 19:21:29 MST


Rüdiger Koch wrote:

> On Monday 01 April 2002 23:18, Adrian Tymes wrote:
>>Great. So, I rediscovered what someone else has discovered. Again.
>>-_-
>
> Where is your code?

This was an idea, not a coded-out algorithm. But, if you want, here's a
very basic code translation (probably missing a lot of details). Better
versions can probably be had at the sites already mentioned.

# put initialization (from genetics) here

while (1) { # to the end of time
   # need to add in a process to check for cell death
   for (my $i = 0;$i < $numOfNodes;$i++) {
     evaluateNode[$i];
   }
   for (my $i = 0;$i < $numOfNodes;$i++) {
     for (my $j = 0;$j < $numOfNodes;$j++) {
       if ((rand($hugeNum) <= 1) && (arePhysicallyClose($i,$j))) {
         # check for random/"imagination"
         verySlightlyAdjustNode[$i];
       }
     }
   }
   # need to add loop to reflect whole-brain altering things like
   # cocaine, alcohol, sugar (in sugar rush amounts), etc.
}

sub evaluateNode {
   my $node = shift(@_);
   $fired[$node] = 0;
   if ($dead[$node]) {
     $excitation[$node] = 0;
     return;
   }
   my $excitationLevel = $excitation[$node];
   for (my $otherNode = 0;$otherNode < $numOfNodes;$otherNode++) {
     next if ($otherNode == $node);
     if ($fired[$node]) {
       $excitationLevel += $weight[$node][$otherNode];
       $potential[$node][$otherNode] += $firingIncreaseAmount;
       if ($potential[$node][$otherNode] >= $synapseThreshold) {
         # maybe adjust this to track individual synapses, instead of
         # lumping all synapses together in a block
         $potential[$node][$otherNode] = $potential[$node][$otherNode]/2;
         $weight[$node][$otherNode] = $weight[$node][$otherNode] * 2;
       }
     } else {
       $potential[$node][$otherNode] =
         $potential[$node][$otherNode]/$decayFactor;
       # $decayFactor is probably very small, to reflect that decays
       # are re-evaluated on every potential firing
     }
     $excitationLevel = $excitationLevel/$excitationDecayFactor;
     if ($excitationLevel >= $firingThreshold) {
       $fired[$node] = 1;
       $excitation[$node] = 0;
     } else {
       $excitation[$node] = $excitationLevel;
     }
   }
}



This archive was generated by hypermail 2.1.5 : Sat Nov 02 2002 - 09:13:11 MST