<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Toni Westbrook dot Com &#187; TFNN</title>
	<atom:link href="http://www.toniwestbrook.com/archives/category/development-logs/tfnn/feed" rel="self" type="application/rss+xml" />
	<link>http://www.toniwestbrook.com</link>
	<description>Sharing Software Development Knowledge With You</description>
	<lastBuildDate>Thu, 09 Sep 2010 04:41:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>TFNN &#8211; Virtual DNA</title>
		<link>http://www.toniwestbrook.com/archives/100</link>
		<comments>http://www.toniwestbrook.com/archives/100#comments</comments>
		<pubDate>Wed, 10 Dec 2008 03:22:42 +0000</pubDate>
		<dc:creator>Toni</dc:creator>
				<category><![CDATA[TFNN]]></category>

		<guid isPermaLink="false">http://www.toniwestbrook.com/archives/100</guid>
		<description><![CDATA[You may be wondering what TFNN is &#8211; it stands for Temporal Frame Neural Network, an artificial intelligence project of mine to accurately simulate the biological brain. Sadly, I haven&#8217;t worked on it in a few years for a number of reasons &#8211; reasons that were good at the time (and I wouldn&#8217;t change, the [...]]]></description>
			<content:encoded><![CDATA[<p>You may be wondering what TFNN is &#8211; it stands for <a href="http://www.toniwestbrook.com/tfnn">Temporal Frame Neural Network</a>, an artificial intelligence project of mine to accurately simulate the biological brain.  Sadly, I haven&#8217;t worked on it in a few years for a number of reasons &#8211; reasons that were good at the time (and I wouldn&#8217;t change, the whole learning experience thing), but ones that aren&#8217;t so important now.</p>
<p><b> What the Heck Happened? </b></p>
<p>Jumping off topic a bit, but relevant to why I&#8217;m starting back up again, I realized a few weeks ago that I&#8217;m not really happy with the way my life is going.  I mean, don&#8217;t get me wrong, overall things are great and I&#8217;m doing okay, but there is definitely something off. There are a few reasons, but one of the biggies was I was always doing things I felt obligated to do and never did things for fun anymore.  I was always taking on a project to advance somehow, and never did it for the art or to enjoy it.  I was always working hard, but honestly not <i>really</i> wanting the outcome, so it would never really go anywhere.  I&#8217;m not a business man &#8211; I don&#8217;t like or want to play the game (There&#8217;s another article in here about not always turning your hobbies into something you get paid for, but that&#8217;s for another day).  There&#8217;s nothing wrong with being a business man mind you &#8211; I&#8217;m just not one.</p>
<p>So I made the decision to just stop worrying about &#8220;succeeding&#8221; in these classic ways that are good for some people, but not for me.  I learned something big from Shredz64 &#8211; I will never make any money off the project, but I had an incredible amount of fun doing it, and I have made so many connections with people because of it &#8211; it&#8217;s just amazing.  I want to keep doing that all the time &#8211; I want to make things &#8211; not worry about marketing or selling them &#8211; I just want to create and share.  I&#8217;ll save the rest of my thoughts for another post, but the bottom line is, I&#8217;ve already started working a ton more on my projects and I&#8217;ve been much happier because of it.</p>
<p><b> Back to Virtual DNA </b></p>
<p>SO, that being said, I recently made a 10 hour drive to and from Toronto, and it gave me a lot of time to think.  Some of that thought was dedicated to the TFNN project.  While the &#8220;neurophysiology&#8221; of the TFNN works great on a neuron and connection level, the overall issue remains in how those synaptic connections are made.  Their configuration.  Biology has a great thing going for it with DNA that controls neural development &#8211; during the neurulation phase when the neuroectoderm forms a lot of things happen, but at the end of the day through migration, axon paths and some other tricks, neurons are placed into their proper locations and form appropriate connections.  Regardless of the nature vs nurture argument, there is definitely prewiring that is done.  It&#8217;s the reason why a cat will never develop the ability to speak Romanian and why rabbits breathe without being trained to do so &#8211; it&#8217;s millions and millions of years of neurological evolution packed into a double helix.  </p>
<p>Therein lies the problem &#8211; I have the materials with TFNN, but no blueprint I can use to construct something.  I can make very small and specific networks, or very large, random ones, but neither of those will accomplish the goal of creating animal intelligence.  So a blueprint is needed.  Life has DNA, but what does TFNN have?  </p>
<p><b> Use Real DNA? </b></p>
<p>My first idea to conquer this issue (as outlined on the project page) was to use some of the sequence databases that are available online &#8211; there are a couple species that have a very full nucleotide sequence documentation available.  I won&#8217;t even bother mentioning all the reasons why this was never going to work, because the biggest reason is, I&#8217;m not a molecular geneticist, and while I have a good understanding of how DNA works, I don&#8217;t come close to having enough understanding to use DNA sequencing information to form a TFNN.  It&#8217;s another project that I would love to start one day to build my understanding of the process, but not right now.  </p>
<p><b> Let the Turing Machine Do What it Does Best </b></p>
<p>What I decided on the car ride was instead of using real DNA, it would be more realistic (relatively speaking) to create a virtual (accelerated) environment where evolution could take place and form virtual DNA.  The TFNN already has rudimentary functionality for building neural networks from a list of instructions, so this is doable.  Here&#8217;s the very lofty plan:</p>
<ol>
<li>Flesh out the matrix class inside of TFNN to construct neural networks as defined by encoded, segmented bit sequences.  This will be some work but I have a good idea of how to accomplish it.  There are already class members that control size, synaptic density, geography, and even connection specific formation within the neural matrix &#8211; the bit sequence needs to drive these member functions.  The purpose of something encoded like a bit sequence as opposed to human readable scripts is to allow for easy engineering of mutation capabilities necessary for evolution</li>
<li>Find a lightweight, open source graphics/physics engine.  There are a few of them out there for games &#8211; it doesn&#8217;t need to look good or even come close to being the most advanced one available, it just needs to support a number of attributes common to our world such as mass, gravity, displacement, etc.  The key is lightweight as possible, we don&#8217;t want to eat up CPU maintaining the world, we need all the cycles we can get for TFNN processing</li>
<li>Engineer a method of recharging a lego NXT robot (Bit, my little LEGO robot will be the subject in these experiments) that can be initiated and completed by the robot itself.  There are a number of ways to accomplish this, something tactile is preferred to force movement.  Something like a magnetic connector with DC current.  It would also need to produce a distinct stimulus to indicate it was a source of &#8220;nourishment&#8221; so to speak, such as producing an audible tone at a specific frequency .</li>
<li>Create a VDNA (virtual DNA, easier to type) sequence to form a neural network that dictates motor control to guide robot to its &#8220;feeding station&#8221;.  It doesn&#8217;t need to have any logic outside of a straight path for the source.  I&#8217;ve created simple neural networks like these before and it is doable.</li>
<li>Within the physics engine, model an environment that very simply and basically models a real world environment.  The goal is by no means to have every possible physical scenario that could exist in the real world, its to offer enough obstacles and stimulus that evolution can take place, while using obstacles that are common to the environment the robot will operate in.  Also include feeding stations</li>
<li>Build an engine to generate instances of TFNNs using VDNA sequences and process them.  Connect them to virtual robots modeled after the NXT lego robot and place them in the virtual world.  Also include functionality to take the VDNA of a specific instance and spawn a new instance of the virtual robot.  We could do this asexually or start with a neural configuration that drives two robots to touch in a manner that shares VDNA for virtual reproduction &#8211; I haven&#8217;t decided on this one yet.  Regardless, new VDNA is subject to random mutation or corruption in the bit sequence</li>
<li>Build in parameters that cause death in the virtual robots as well as prevent premature reproduction &#8211; most importantly that reproduction doesn&#8217;t take place if nourishment isn&#8217;t obtained.</li>
<li>Run this simulation until results are obtained</li>
<li>Take VDNA from successful virtual robot, generate instance of TFNN, connect to Bit and watch the fun</li>
</ol>
<p>I can&#8217;t complain about being bored, that&#8217;s for sure &#8211; I will post here as I go.  It may lead nowhere, but I&#8217;m extremely interested to see the results &#8211; even if it completely fails, it will still be fun science.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toniwestbrook.com/archives/100/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>TFNN &#8211; Major changes</title>
		<link>http://www.toniwestbrook.com/archives/42</link>
		<comments>http://www.toniwestbrook.com/archives/42#comments</comments>
		<pubDate>Tue, 14 Jun 2005 17:49:00 +0000</pubDate>
		<dc:creator>Toni</dc:creator>
				<category><![CDATA[TFNN]]></category>

		<guid isPermaLink="false">http://www.toniwestbrook.com/archives/42</guid>
		<description><![CDATA[I thought I&#8217;d sit down and update &#8211; it&#8217;s not that I haven&#8217;t been working a lot on TFNN, I just haven&#8217;t had a chance to sit down and actually write about it! Firstly, I implemented crude, neuron-global neuromodulator code a week ago or so. It worked under my very specific test cases, but it [...]]]></description>
			<content:encoded><![CDATA[<p>I thought I&#8217;d sit down and update &#8211; it&#8217;s not that I haven&#8217;t been working a lot on TFNN, I just haven&#8217;t had a chance to sit down and actually write about it!</p>
<p>Firstly, I implemented crude, neuron-global neuromodulator code a week ago or so.  It worked under my very specific test cases, but it didn&#8217;t really accurately model how dopamine, serotonin, or norepinephrine function on the whole.  I realized there was a lot of neuron-global code that really should have been axon-terminal/synaptic cleft/postsynaptic receptor specific.  Can&#8217;t write too much about it, but yesterday I rewrote a lot of code dealing with neuromodulators and synapse processing so it more closely dealt with activity on the receptor level and not on the neuron level.  I ran test cases with both an inhibitory and excitatory neuromodulator, both were success.</p>
<p>Right now however, neuromodulators will blindly increase or decrease the effect of a neurotransmitter.  I would like to include code that discerns between a glutamate excitatory reaction and a GABA inhibitory reaction, and selectively affects only one.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toniwestbrook.com/archives/42/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TFNN &#8211; Neuromodulators</title>
		<link>http://www.toniwestbrook.com/archives/43</link>
		<comments>http://www.toniwestbrook.com/archives/43#comments</comments>
		<pubDate>Wed, 01 Jun 2005 05:52:00 +0000</pubDate>
		<dc:creator>Toni</dc:creator>
				<category><![CDATA[TFNN]]></category>

		<guid isPermaLink="false">http://www.toniwestbrook.com/archives/43</guid>
		<description><![CDATA[A quick update while I&#8217;m thinking about &#8211; next time I sit down with the code I want to add a section to emulate the functionality of dopamine cells like those found within the ventral tegmental, and other neuromodulators. This is actually a major enhancement and something to give careful thought to before proceeding. At [...]]]></description>
			<content:encoded><![CDATA[<p>A quick update while I&#8217;m thinking about &#8211; next time I sit down with the code I want to add a section to emulate the functionality of dopamine cells like those found within the ventral tegmental, and other neuromodulators.  This is actually a major enhancement and something to give careful thought to before proceeding.  At first I intended TFNN matrices to operate without global or semiglobalized synaptic modulation &#8211; IE the tfnn matrix would operate purely on the &#8220;mechanical nature&#8221; of electro-chemical reactions in axodendritic, axosomatic, and axoaxonic connections &#8211; no globalized chemical reactions within the system.</p>
<p>The more I study though, the more I realize how important dopamine and other neuromodulators are in the prefrontal cortex regions.  Via message controlled signals, these modulators can facilitate GABA reactions, and hence temporarily &#8220;quiet&#8221; certain systems, allowing for concentration.  I have a feeling that without dopamine emulation matrices would fall prey to a ubiquitous ADD of sorts, and perhaps fail to mold meaningful neural configurations in deeper matrices due to an overload of traffic on neural bridges coming from sensory thalami and cortices.</p>
<p>At first when I was kicking it around I was thinking of just modifying axoaxonic connection code to introduce a negative change to synaptic weights and have that emulate dopamine secretion.  This isn&#8217;t accurate though, as dopamine is a modulator, not a permanent change to the synaptic weights.</p>
<p>I think this may call for another variable to be introduced into the neuron, one that keeps track of current affecting modulators.  More space &#8211; but I also realize I have an unused integer currently in the neuron that I used during debug sessions, I&#8217;ll remap that for dopamine / other modulator use.  I may use it or another variable in connection to track glutamate supply to emulate habituation effects as well.  It will add very little additional calculation time.</p>
<p>It&#8217;s amazing how large the TFNN neuron has grown in complexity from when I first completed the code until now.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toniwestbrook.com/archives/43/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TFNN &#8211; Another step down</title>
		<link>http://www.toniwestbrook.com/archives/44</link>
		<comments>http://www.toniwestbrook.com/archives/44#comments</comments>
		<pubDate>Mon, 23 May 2005 16:08:00 +0000</pubDate>
		<dc:creator>Toni</dc:creator>
				<category><![CDATA[TFNN]]></category>

		<guid isPermaLink="false">http://www.toniwestbrook.com/archives/44</guid>
		<description><![CDATA[Another quick update &#8211; I fixed some synapse timing issues in the Temporal Frame engine and finished up the axoaxonic code this weekend. I had a succesful test of sensitization as well, demonstrating the non-Hebbian learning capabilities of a neural matrix. Due to axoaxonic connections, a presynaptic neuron can now cause a direct increase in [...]]]></description>
			<content:encoded><![CDATA[<p>Another quick update &#8211; I fixed some synapse timing issues in the Temporal Frame engine and finished up the axoaxonic code this weekend.  I had a succesful test of sensitization as well, demonstrating the non-Hebbian learning capabilities of a neural matrix.   Due to axoaxonic connections, a presynaptic neuron can now cause a direct increase in the synaptic weight of the postsynaptic neuron&#8217;s axon terminal (This postsynaptic neuron itself being a presynaptic neuron in another relationship).</p>
<p>The test was performed by generating a 3 neuron matrix.  Milo&#8217;s left touch sensor was sent as input into neuron 1, while Milo&#8217;s right touch sensor was sent as input into neuron 2.  Neuron 1 was connected via an axoaxonic connection to neuron 2&#8242;s axon terminal &#8211; the axon terminal creating the synapse between neuron 2 and neuron 3 in a standard axodendritic configuration.  Neuron 3&#8242;s output was sent to Milo&#8217;s speaker.</p>
<p>The treshold rate of Neuron 3 was set higher than the synaptic weight between neuron 2 and 3, hence if Milo&#8217;s right antenna was pressed he would not beep.  However, upon touching Milo&#8217;s left antenna a few times, via the phenomenon of sensization the synaptic weight between Neuron 2 and 3 was increased, and subsequent pressings of Milo&#8217;s right antenna was enough alone to cause Milo to beep, now the synaptic weight had grown strong enough to pass Neuron 3&#8242;s threshold.</p>
<p>Cool stuff!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toniwestbrook.com/archives/44/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TFNN &#8211; Axoaxonic Issue</title>
		<link>http://www.toniwestbrook.com/archives/45</link>
		<comments>http://www.toniwestbrook.com/archives/45#comments</comments>
		<pubDate>Sat, 21 May 2005 23:45:00 +0000</pubDate>
		<dc:creator>Toni</dc:creator>
				<category><![CDATA[TFNN]]></category>

		<guid isPermaLink="false">http://www.toniwestbrook.com/archives/45</guid>
		<description><![CDATA[I realized something today when I started fleshing out axoaxonic connections a bit &#8211; something about a flaw in the temporal frame engine itself. I can&#8217;t go too much into it, but I don&#8217;t think I would have realized it unless I had realized about axoaxonic connections, so I&#8217;m glad things worked out the way [...]]]></description>
			<content:encoded><![CDATA[<p>I realized something today when I started fleshing out axoaxonic connections a bit &#8211; something about a flaw in the temporal frame engine itself.  I can&#8217;t go too much into it, but I don&#8217;t think I would have realized it unless I had realized about axoaxonic connections, so I&#8217;m glad things worked out the way they did.  It&#8217;s a fairly easy fix, so that&#8217;s good.</p>
<p>Also, I read a few papers on QBT (Quantum Brain Theory), and it seems like most reputable neurophysiologists don&#8217;t really buy it, and from what I&#8217;ve read I don&#8217;t really buy it either.  The size and effect of the electrochemical reactions just don&#8217;t seem to leave any room for the very microscopic-natured effects of quantum mechanics, even if microtubules are a place where the magic could happen.</p>
<p>So, first things first, mend the engine, then I can go ahead and add habituation and sensitization effects.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toniwestbrook.com/archives/45/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TFNN &#8211; Associative Learning</title>
		<link>http://www.toniwestbrook.com/archives/46</link>
		<comments>http://www.toniwestbrook.com/archives/46#comments</comments>
		<pubDate>Thu, 19 May 2005 23:49:00 +0000</pubDate>
		<dc:creator>Toni</dc:creator>
				<category><![CDATA[TFNN]]></category>

		<guid isPermaLink="false">http://www.toniwestbrook.com/archives/46</guid>
		<description><![CDATA[This was cool, I had the first successful test of associative learning last night with a test matrix. Just to explain what associative learning is for a second &#8211; behaviorist and neurophysiological studies have shown the following: A stimulus not normally associated with an action can become associated if that stimulus is caused simultaneous to [...]]]></description>
			<content:encoded><![CDATA[<p>This was cool, I had the first successful test of associative learning last night with a test matrix.</p>
<p>Just to explain what associative learning is for a second &#8211; behaviorist and neurophysiological studies have shown the following:  A stimulus not normally associated with an action can become associated if that stimulus is caused simultaneous to another stimulus that IS associated with an action.  EG if you shock a rat&#8217;s foot, the amygdala will process this and send a message to motor control to jump away.  If you make a sound &#8211; a clap or a beep, whatever, the amygdala doesn&#8217;t perceive that as a threat so the rat does nothing.  However, if you continually clap at the same time you shock the rat&#8217;s foot, the rat&#8217;s amygdala begins to associate the pathways involved with hearing a clap with those of receiving an electric shock, and hence in the future, JUST a clap will cause the rat to jump in the air as it thinks pain is coming.</p>
<p>On a neurophysiological level, in the lateral amygdala (in this example), there is a preexisting STRONG synaptic connection between the portion of the brain that receives the electric shock and the part the motor control that causes the rat to jump.  There is a WEAK connection between the auditory thalamus and cortex and the part of motor control that causes the rat to jump &#8211; normally a clap wouldn&#8217;t cause it to jump.</p>
<p>However, due to Hebbian learning (triggering of NMDA receptors causing an influx of calcium that cause a genetic reaction to strengthen the synapse between the pre and post synaptic neuron), whenever the POST synaptic neuron fires off as a RESULT of a presynaptic neuron, the synapse between the two neurons is STRENGTHENED.  Normally the connection between the auditory thalamus and the motor control via the LA is WEAK and not enough to cause the aymgdala neurons to fire off.  However, if the rat receives a shock at the same time as it hears a clapping noise, then both the STRONG and the WEAK connections are fired over &#8211; which triggers the post synaptic neuron.  Since the WEAK connection was a cause, albeit a small one that led to the post synaptic neuron to fire, its connection is now STRENGTHENED, so now (well, after a few times) its a STRONG connection like the shock neurons, so now clapping causes the rat to jump without a shock to the feet.</p>
<p>Anyway, that was the explanation &#8211; and I successfully tested this out in a minimatrix last night.  I created a 3 neuron matrix.  2 input neurons, one output neuron.  I connected the first input neuron to Milo&#8217;s left touch sensor, I connected the second input neuron to Milo&#8217;s right touch sensor, and I connected the output node to Milo&#8217;s speaker.  I then created a strong synaptic link between neuron 1 and neuron 3, and a WEAK synaptic link between neuron 2 and neuron 3.  Hence, touching milo&#8217;s left antenna would cause him to beep, but touching his right one did nothing.  Then I began touching both his left and right antennae simultaneously a few times.  The synapse involved in the right synapse grew stronger, so after this action I was able to touch JUST his right antenna and Milo would beep &#8211; he had grown to associate beeping with his right antenna whereas before he only associated beeping with his left antenna.</p>
<p>Awesome stuff!</p>
<p>Also, I have to run, but a few things I realize I&#8217;ve forgotten to include in the neuron functionality (I keep saying I&#8217;m done, I&#8217;m not even going to say that anymore, everday I realize more stuff I want to do)</p>
<p>FIRST:  I need to fix the Hebbian algorithm as outlined above.  Due to technical programming stuff it strengthens the synaptic links in an exponential fashion right now instead of a linear one.  It&#8217;s easy to fix, I just need to do it.</p>
<p>Also, I wan to incorporate non-hebbian learning like Habituation and Sensitization.  Habituation will be easy (from what I gather), it&#8217;s simply a depletion of neurotransmitters such as glutamate from the neuron, hence the neuron becomes less effective after repeated use &#8211; the overall effect being desensitization.</p>
<p>Sensitization requires the creation of axoaxonic connections (Axons that form synapses with other axons).  As of right now the TFNN wasn&#8217;t built to handle this situation &#8211; but the awesome part is, the code that stores the synaptic gap information can easily be modified to fit pretty much ANY situation.  So regardless of what lies on the other side of a synapse, the TFNN can handle it, which is pretty awesome.  Had to pat myself on the back for that engineering. <img src='http://www.toniwestbrook.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Anyway, enough for now.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toniwestbrook.com/archives/46/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TFNN &#8211; Terminology update</title>
		<link>http://www.toniwestbrook.com/archives/47</link>
		<comments>http://www.toniwestbrook.com/archives/47#comments</comments>
		<pubDate>Wed, 18 May 2005 16:33:00 +0000</pubDate>
		<dc:creator>Toni</dc:creator>
				<category><![CDATA[TFNN]]></category>

		<guid isPermaLink="false">http://www.toniwestbrook.com/archives/47</guid>
		<description><![CDATA[Just a quick note &#8211; I need to think up a name for the visualization routine &#8211; the problem is it doesn&#8217;t strictly show the same activity of a functional MRI scan, but it also doesn&#8217;t show the same activity as a PET or SPECT scan. Something to think about, not really a big deal [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick note &#8211; I need to think up a name for the visualization routine &#8211; the problem is it doesn&#8217;t strictly show the same activity of a functional MRI scan, but it also doesn&#8217;t show the same activity as a PET or SPECT scan.  Something to think about, not really a big deal in the grand scheme of things.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toniwestbrook.com/archives/47/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TFNN &#8211; Functionality Addon</title>
		<link>http://www.toniwestbrook.com/archives/48</link>
		<comments>http://www.toniwestbrook.com/archives/48#comments</comments>
		<pubDate>Wed, 18 May 2005 01:15:00 +0000</pubDate>
		<dc:creator>Toni</dc:creator>
				<category><![CDATA[TFNN]]></category>

		<guid isPermaLink="false">http://www.toniwestbrook.com/archives/48</guid>
		<description><![CDATA[Also, while I&#8217;m thinking about it, I would like to include functionality of post-synaptic generated neurotrophins leading to axon growth and branching within the presynaptic neurons. This will be pretty easy, in the code used to increase synaptic weight, I can also setup new synaptic connections to geographically neighboring neurons. I&#8217;m not sure at what [...]]]></description>
			<content:encoded><![CDATA[<p>Also, while I&#8217;m thinking about it, I would like to include functionality of post-synaptic generated neurotrophins leading to axon growth and branching within the presynaptic neurons.  This will be pretty easy, in the code used to increase synaptic weight, I can also setup new synaptic connections to geographically neighboring neurons.  I&#8217;m not sure at what rate to do this though, from the literature it suggests it doesn&#8217;t happen as often or as quickly as synaptic reinforcement.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toniwestbrook.com/archives/48/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TFNN &#8211; Hebbian Rewrite</title>
		<link>http://www.toniwestbrook.com/archives/49</link>
		<comments>http://www.toniwestbrook.com/archives/49#comments</comments>
		<pubDate>Tue, 17 May 2005 23:58:00 +0000</pubDate>
		<dc:creator>Toni</dc:creator>
				<category><![CDATA[TFNN]]></category>

		<guid isPermaLink="false">http://www.toniwestbrook.com/archives/49</guid>
		<description><![CDATA[Just a quick update today, no pictures. I took out the old, incorrect synapse alteration routines today and replaced them with the new routines which match the functionality of Hebbian Learning&#8217;s &#8220;Fire Together Wire Together&#8221;. I actually used a different, more efficient algorithm than what I had originally planned, so the drop in speed is [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick update today, no pictures.</p>
<p>I took out the old, incorrect synapse alteration routines today and replaced them with the new routines which match the functionality of Hebbian Learning&#8217;s &#8220;Fire Together Wire Together&#8221;.  I actually used a different, more efficient algorithm than what I had originally planned, so the drop in speed is nothing at all.  It did increase the size (in bytes) of each neuron, but speed is more a problem than space at this point.</p>
<p>Now that this is finished, all the underlying functionality is (to my knowledge) correct.  From this point onward it&#8217;s simply a matter of testing different methods of construction with different values for threshold rates, plasticity level, degredation amount, physical placement, etc.</p>
<p>Also, I would like to take a day and just sit down with the code and see if I can get it any more efficient.  Right now when I start generating neural matrices in the tens of thousands level, along with a high synaptic density, the thing just grinds to too much of a halt, though this may be OpenGL processing all the graphical representation of the net and not the net taking that time up itself.  I will test it out without the graphics routine running and see how it does.</p>
<p>But regardless more efficient code is always a good thing.  I know some places where I used a little more memory than I needed and added a few extra steps, I can shave it down a bit.</p>
<p>Everything&#8217;s going great though!  Once I activated the Hebbian routines activity no longer followed a systematic pattern, or at least I couldn&#8217;t see one &#8211; which I believe is a very very good thing.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toniwestbrook.com/archives/49/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TFNN &#8211; MRI Heaven!</title>
		<link>http://www.toniwestbrook.com/archives/50</link>
		<comments>http://www.toniwestbrook.com/archives/50#comments</comments>
		<pubDate>Tue, 17 May 2005 05:06:00 +0000</pubDate>
		<dc:creator>Toni</dc:creator>
				<category><![CDATA[TFNN]]></category>

		<guid isPermaLink="false">http://www.toniwestbrook.com/archives/50</guid>
		<description><![CDATA[I&#8217;ve reached that point now where so many things are coming together that I&#8217;m going out of my mind with excitement. In truth I haven&#8217;t accomplished MUCH more in the last few days than I have during the rest of the project, but with the graphical view of the neural net, I&#8217;m really seeing it [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve reached that point now where so many things are coming together that I&#8217;m going out of my mind with excitement.  In truth I haven&#8217;t accomplished MUCH more in the last few days than I have during the rest of the project, but with the graphical view of the neural net, I&#8217;m really seeing it come alive like I never have before, and it&#8217;s just amazing.  More pictures today.</p>
<p>First off, I played around a bit with generating a larger matrix and adjusting threshold and weight values.  Here is a 3000 neuron matrix I generated for Milo</p>
<p><img src="http://www.freedomirc.net/~megaboz/tfnn/mri-3000neurode.jpg"  style="width:100%" /></p>
<p>Really beautiful to watch something of that size spinning around in front of you.  I added code that allows you to adjust the distance from which you view the neural net &#8211; not a big deal, but nice for ease of viewing.</p>
<p>I also wanted to test my theory about the current synaptic modification functionality leading to cascade overload in the net.  I generated a 1000 neuron brain for milo, connected Milo&#8217;s touch sensors to 4 input neurons in the corner region, increased default synaptic weight across the net to speed up the process, turned it on, touched Milo&#8217;s antenna, and BOOM, one massive (and deadly if biologically experienced) seizure:</p>
<p><img src="http://www.freedomirc.net/~megaboz/tfnn/mri-seizure.jpg"  style="width:100%" /></p>
<p>It was amazing, at one point just the local region to the input neurons were active.  Then 25% of the net, then as neural pathways looped back and synaptic strength was increasing, 50% of the net was active, then 75%.  After 30 seconds or so there were maybe 1 or 2 orphan neurons that weren&#8217;t active, but that was it.  Definitely proved the fact that the current synaptic modification code is wrong and needs to pattern Hebbian Learning.</p>
<p>Tonight I finished the code that displays synaptic links between the neurons.  From the visuals you can&#8217;t tell which is the presynaptic neuron and which is the post, but this isn&#8217;t TOO too important when viewing in this scale anyway.  What it does tell you is the strength of the synapse from the color.  A greener synapse means a weak link, while a bluer synapse means a strong link.  Here is a picture of a 100 neuron matrix at rest with random synapses assignment:</p>
<p><img src="http://www.freedomirc.net/~megaboz/tfnn/mri-synapsesinactive.jpg"  style="width:100%" /></p>
<p>The great thing is, I was finally VISUALLY able to test out the global synapse degradation scheme.  I jacked up the time frame so the synapses degraded much more quickly than normal, turned the brain on and let it just sit, with no input being fed into it.  I slowly watched as strong synaptic links weakened over time into green links due to lack of exposure to &#8220;virtual neurotrophins&#8221;.</p>
<p><img src="http://www.freedomirc.net/~megaboz/tfnn/mri-synapsesdead.jpg"  style="width:100%" /></p>
<p>Then I regenerated the same net but this time touched Milo&#8217;s antenna, and watched in amazement as neuralogical activity burst to life.  It&#8217;s hard to tell from this picture, but if you watch it while it&#8217;s spinning around you can tell that activity happens primarily along strong links and seldomly along weak links, which is expected in the current scheme:</p>
<p><img src="http://www.freedomirc.net/~megaboz/tfnn/mri-synapsesactive.jpg"  style="width:100%" /></p>
<p>The one problem with the synapse visualization is for anything but small matrices.  After a certain point there are so many synapses that it floods the screen, making the visualization not only useless but also extremely slow.</p>
<p><img src="http://www.freedomirc.net/~megaboz/tfnn/mri-toomany.jpg"  style="width:100%" /></p>
<p>Pretty neat to look at though, for a moment I felt like I was looking at real neurons, it kind of sent a shiver up my back.</p>
<p>Anyway, thanks to the visualization code I can safely say that everything so far is working the way it should be, now onto fixing the synapse modification &#8211; very excited!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.toniwestbrook.com/archives/50/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
