<?xml version="1.0" encoding="UTF-8"?>        <rss version="2.0"
             xmlns:atom="http://www.w3.org/2005/Atom"
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
             xmlns:admin="http://webns.net/mvcb/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:content="http://purl.org/rss/1.0/modules/content/">
        <channel>
            <title>
									Neural Networks - DroneBot Workshop Forums				            </title>
            <link>https://forum.dronebotworkshop.com/neural-networks/</link>
            <description>Discussion board for Robotics, Arduino, Raspberry Pi and other DIY electronics and modules. Join us today!</description>
            <language>en-US</language>
            <lastBuildDate>Thu, 21 May 2026 14:42:59 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>Evolution of Adaptive Synapses: Robots with Fast Adaptive Behavior in New Environments</title>
                        <link>https://forum.dronebotworkshop.com/neural-networks/evolution-of-adaptive-synapses-robots-with-fast-adaptive-behavior-in-new-environments/</link>
                        <pubDate>Wed, 14 Jan 2026 00:51:29 +0000</pubDate>
                        <description><![CDATA[While researching the evolution of simple robot controllers I came across another Dario Floreano experiment.
Evolution of Adaptive Synapses: Robots with Fast Adaptive Behavior in New Enviro...]]></description>
                        <content:encoded><![CDATA[<p>While researching the evolution of simple robot controllers I came across another Dario Floreano experiment.</p>
<p><a href="https://infoscience.epfl.ch/entities/publication/01362e91-6447-4740-ae0e-db312b6bbd02" target="_blank" rel="noopener">Evolution of Adaptive Synapses: Robots with Fast Adaptive Behavior in New Environments (2000), Floreano, D., Urzelai, J.</a></p>
<p>When I first read this paper I was intrigued with their idea of using<span class="Apple-converted-space">  </span>genetic evolution to evolve parameters for self organization.<span class="Apple-converted-space">  </span>“<i>The method consists of encoding a set of local adaptation rules that synapses follow while the robot freely moves in the environment</i>.”</p>
<p>Since I’m always looking for a new robot controller that I don’t have to hand tune, I thought it might be interesting to try to re-produce their experiment and create a robot controller that can adapt to its environment.</p>
<p>Most of the papers that I’ve read about evolving artificial neural networks (ANN) have been about using genetic algorithms (GA) to find the fittest set of neural connection weights.<span class="Apple-converted-space">  </span>But here the weights are randomly selected at the beginning of life for each new generation.<span class="Apple-converted-space">  </span>They aren’t pulled from the the parents of the previous generation, the adaptation rules are.</p>
<p>GAs use strings that are encoded to represent some parameter set and in the paper the authors experimented with different types of genetic encodings.<span class="Apple-converted-space">  </span>They discovered that encoding neurons with Hebb rules that get applied to each synapse performed better than the typical synapse encoding of synaptic weights.</p>
<p>I decided that I want to try to reproduce their experiment using a physical robot, but not all of the tests they performed just the one that uses the features and properties that were the most performant, namely neuron encoding using Hebb rules.</p>
<p><strong>Encoding the Adaptation Rules</strong></p>
<p>In 1949 a Canadian psychologist, Donald Hebb, came up with the idea that the laws of classical conditioning (remember Pavlov’s dogs?)<span class="Apple-converted-space">  </span>reflected the functioning of the nervous system.<span class="Apple-converted-space">  </span>The <i>hebb rule</i> states that when two connected neurons are simultaneously active the synaptic weight of their connection is strengthened.<span class="Apple-converted-space"> </span></p>
<p>The experimenters used four adaptation rules.<span class="Apple-converted-space">  </span>They all use the idea that there is a direction of signal flow from a pre-synaptic neuron to a post-synaptic neuron.</p>
<ol>
<li><span></span>Plain Hebb rule will proportionally strengthen the synapse when the pre-synaptic neuron and the post-synaptic neuron are active.</li>
<li><span></span>Post-synaptic rule acts like the Hebb rule but it also weakens the synapse when the post-synaptic neuron is active and the pre-synaptic neuron is not.</li>
<li><span></span>Pre-synaptic rule is the compliment of the post-synaptic rule.</li>
<li><span></span>Covariance rule will strengthen the synapse when the two neurons have a similar activity level, otherwise it will weaken the synapse.</li>
</ol>
<p>To keep the synaptic values from growing indefinitely the output is bound to the range  with a <i>self-limiting mechanism</i>.<span class="Apple-converted-space">  </span>I have no idea what that self limiting mechanism was…normalization? sigmoid()? they don’t say. <span class="Apple-converted-space"> </span></p>
<p>This is an interesting difference from what I’ve done before, the parameters used in the GA are at the neuron level and not the synapse level so all incoming synapses to a neuron share the neuron’s adaptation rule which is used to determine the individual synaptic weights.<span class="Apple-converted-space">  </span>Clear as mud?</p>
<p>Tom</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
						                            <category domain="https://forum.dronebotworkshop.com/neural-networks/">Neural Networks</category>                        <dc:creator>THRandell</dc:creator>
                        <guid isPermaLink="true">https://forum.dronebotworkshop.com/neural-networks/evolution-of-adaptive-synapses-robots-with-fast-adaptive-behavior-in-new-environments/</guid>
                    </item>
				                    <item>
                        <title>self driving cars</title>
                        <link>https://forum.dronebotworkshop.com/neural-networks/self-driving-cars/</link>
                        <pubDate>Fri, 02 Feb 2024 19:06:47 +0000</pubDate>
                        <description><![CDATA[@zander I just saw an announcement of a RaspberryPi team winning an autonomous car race. That sounded exciting, but then I read that the following steps were required.1. Blue and Yellow cone...]]></description>
                        <content:encoded><![CDATA[<p>https://forum.dronebotworkshop.com/neural-networks/genetic-evolution-of-a-neural-network-driven-robot/paged/9/#post-45640</p>
<blockquote>
<p>@zander <br /><br />I just saw an announcement of a RaspberryPi team winning an autonomous car race. That sounded exciting, but then I read that the following steps were required.<br /><br />1. Blue and Yellow cones are placed around the track.<br /><br />2. Humans then choose the optimal path<br /><br />3. Humans created a map.<br /><br />Car drives 'autonomously'<br /><br />I don't get it, I am quite certain Tesla cars do not need coloured cones or humans to pre-map their route.<br /><br />What the heck is different between what Tesla et al do, these contests (I have seen a few recently) and what y'all are doing with this genetics approach?<br /><br />Is your goal to create an autonomous car/robot? If so, don't you need to find out what Tesla is doing?<br /><br />Confused am I.</p>
</blockquote>
<p> </p>
<p>Although the subject matter has been of great interest to me for decades, the reason i have responded, I didn't want to hijack the thread which is about the progress being made in a particular experiment.</p>
<p>With regards your reference I assume you mean this,<br /><br />https://www.raspberrypi.com/news/raspberry-pi-powers-first-driverless-car-in-formula-sae-brazil-competition<br /><br />I think the experiment in randell's thread is seeing if he can evolve a set of weights using genetic algorithms for a neural net that will produce a behavior (obstacle avoidance in this case) given a set of inputs (distance measuring sensors) and a set of outputs (two motors).<br /><br />Self driving cars on the other hand rely on accurate GPS readings and internal road maps just like your GPS navigation system but instead of telling you to turn at 800m the car does the turning itself. An important addition is obstacle avoidance for things not present in this internal map like people and other cars and traffic signs. To detect people and other cars (or any other obstacle) they might use LIDAR, RADAR and visual recognition of traffic lights, road signs as input to the self driving car programs.<br /><br />The programs <strong>use</strong> trained (not evolved) neural networks to recognize things like signs or people but the actual programs are not neural networks. They are not evolved solutions either.<br /><br /><br /></p>]]></content:encoded>
						                            <category domain="https://forum.dronebotworkshop.com/neural-networks/">Neural Networks</category>                        <dc:creator>robotBuilder</dc:creator>
                        <guid isPermaLink="true">https://forum.dronebotworkshop.com/neural-networks/self-driving-cars/</guid>
                    </item>
				                    <item>
                        <title>reverse engineer a neural network</title>
                        <link>https://forum.dronebotworkshop.com/neural-networks/reverse-engineer-a-neural-network/</link>
                        <pubDate>Wed, 15 Nov 2023 18:25:43 +0000</pubDate>
                        <description><![CDATA[Neural network solutions are commonly used today but without much understanding of exactly how they wired themselves up  to  map a set of inputs to a desired set of outputs.
Efforts have be...]]></description>
                        <content:encoded><![CDATA[<p>Neural network solutions are commonly used today but without much understanding of exactly how they wired themselves up  to  map a set of inputs to a desired set of outputs.</p>
<p>Efforts have been made to reverse engineer neural networks solutions.</p>
<p>Biological brain research does the same thing in trying to understand how biological brains process information.</p>
<p>In this example a neural network was trained to do binary addition.</p>
<p>We know how to wire up logic gates to achieve this mapping but what method would a neural network come up with to achieve the same result?</p>
<p>This researcher wanted to know what his trained network was doing internally to generate its solutions.</p>
<p>The researcher figured out the surprising way in which the neural network was accomplishing binary addition.<br /><br />https://cprimozic.net/blog/reverse-engineering-a-small-neural-network/<br /><br /></p>
<p> </p>]]></content:encoded>
						                            <category domain="https://forum.dronebotworkshop.com/neural-networks/">Neural Networks</category>                        <dc:creator>robotBuilder</dc:creator>
                        <guid isPermaLink="true">https://forum.dronebotworkshop.com/neural-networks/reverse-engineer-a-neural-network/</guid>
                    </item>
				                    <item>
                        <title>feed-forward neural network</title>
                        <link>https://forum.dronebotworkshop.com/neural-networks/feed-forward-neural-network/</link>
                        <pubDate>Tue, 31 Oct 2023 09:39:29 +0000</pubDate>
                        <description><![CDATA[While looking for examples of simple neural networks I came across this one on using a feed-forward neural network.an example of using a neural network for self balancing an Arduino controll...]]></description>
                        <content:encoded><![CDATA[<p>While looking for examples of simple neural networks I came across this one on using a feed-forward neural network. <br /><br />https://news.engin.umich.edu/2023/01/simple-neural-networks-outperform-the-state-of-the-art-for-controlling-robotic-prosthetics/<br /><br />Also an example of using a neural network for self balancing an Arduino controlled two wheeled robot that might be of interest as an Arduino robot project.<br /><br />https://www.instructables.com/Arduino-Neural-Network-Self-Balancing-Two-Wheel-Ro/</p>
<p> </p>
<p> </p>
<p> </p>]]></content:encoded>
						                            <category domain="https://forum.dronebotworkshop.com/neural-networks/">Neural Networks</category>                        <dc:creator>robotBuilder</dc:creator>
                        <guid isPermaLink="true">https://forum.dronebotworkshop.com/neural-networks/feed-forward-neural-network/</guid>
                    </item>
				                    <item>
                        <title>need for memory</title>
                        <link>https://forum.dronebotworkshop.com/neural-networks/need-for-memory/</link>
                        <pubDate>Thu, 28 Sep 2023 00:43:10 +0000</pubDate>
                        <description><![CDATA[I moved here so as not to hyjack the other thread.

@inq wrote:
I&#039;d like you to elaborate on why you believe a wall following bot requires knowing its past time slices.

It might not re...]]></description>
                        <content:encoded><![CDATA[<p>I moved here so as not to hyjack the other thread.</p>
<blockquote>
<p>@inq wrote:</p>
<p>I'd like you to elaborate on why you believe a wall following bot requires knowing its past time slices.</p>
</blockquote>
<p>It might not require its past time slices. However you might note the extract in my previous post. <em>"If some kind of short-term memory mechanism is provided to the neural classifiers, their performances are improved in general."</em></p>
<p>I just think that without memory there may well be tasks it cannot execute. Let us say it comes to a fork in the road. If the only input is "a fork in the road" it can only have one of two fixed outputs. Turn left or turn right.</p>
<p>If the task was to turn left at the first fork and turn right at the second fork it would need memory of its last action, so with memory the input would become, "a fork in the road, last time you turned left".</p>
<p>I think it was mentioned with the network @THRandell posted the context neurons (memory) enabled it to get out of a trapped situation.</p>
<p>My simulated robot would often get trapped (no memory was implemented) where it would essentially oscillate between two actions. Turn left resulted in an input to turn right which when executed returned an input that said turn left which when executed return an input that said turn right ...</p>
<p> </p>
<p> </p>]]></content:encoded>
						                            <category domain="https://forum.dronebotworkshop.com/neural-networks/">Neural Networks</category>                        <dc:creator>robotBuilder</dc:creator>
                        <guid isPermaLink="true">https://forum.dronebotworkshop.com/neural-networks/need-for-memory/</guid>
                    </item>
				                    <item>
                        <title>High energy requirements for neural networks</title>
                        <link>https://forum.dronebotworkshop.com/neural-networks/high-energy-requirements-for-neural-networks/</link>
                        <pubDate>Mon, 11 Sep 2023 05:14:56 +0000</pubDate>
                        <description><![CDATA[brain doesn&#039;t require all that energy to function so there is something very different going on here.I don&#039;t really understand what the article is suggesting.
I guess we just have to wait a...]]></description>
                        <content:encoded><![CDATA[<p>https://forum.dronebotworkshop.com/artificial-intelligence/saying-goodbye/paged/2/#post-42741<br /><br /><br />@robotbuilder,<br /><br />Thought of you when I read this article with your preference to know what the code is doing.<br /><br />https://techxplore.com/news/2023-09-physics-based-self-learning-machines-current-artificial.html<br /><br /><br /><br />The brain doesn't require all that energy to function so there is something very different going on here.<br /><br />I don't really understand what the article is suggesting.</p>
<p>I guess we just have to wait and see if anything comes of it.<br /><br /><br /></p>]]></content:encoded>
						                            <category domain="https://forum.dronebotworkshop.com/neural-networks/">Neural Networks</category>                        <dc:creator>robotBuilder</dc:creator>
                        <guid isPermaLink="true">https://forum.dronebotworkshop.com/neural-networks/high-energy-requirements-for-neural-networks/</guid>
                    </item>
				                    <item>
                        <title>Genetic Evolution of a Neural Network Driven Robot</title>
                        <link>https://forum.dronebotworkshop.com/neural-networks/genetic-evolution-of-a-neural-network-driven-robot/</link>
                        <pubDate>Wed, 05 Jul 2023 17:32:07 +0000</pubDate>
                        <description><![CDATA[While working on my swarm robot sensor subsystem I was struck by how much hand crafting went into programing a robot controller.  The motors never rotate at the same speed, no two sensors re...]]></description>
                        <content:encoded><![CDATA[<p>While working on my swarm robot sensor subsystem I was struck by how much hand crafting went into programing a robot controller.<span class="Apple-converted-space">  </span>The motors never rotate at the same speed, no two sensors respond to stimuli in the exact same way,.. <span class="Apple-converted-space"> </span></p>
<p>One of my roboticist heroes, Dario Floreano, has written about using genetic algorithms to evolve neural networks in his robotics research.<span class="Apple-converted-space">  </span>One of his early experiments was in solving a familiar robot task, i.e. getting a robot to move and avoid obstacles. A task that has come up many times in my work with robots.<span class="Apple-converted-space">  </span>His idea was to use a “simple” feedforward neural network to map IR proximity sensors to the two motors of a differential drive robot and to use genetic algorithms to derive the fittest individual to perform the task.<span class="Apple-converted-space">  </span>Wow!<span class="Apple-converted-space">  </span>All new territory for me, but I’m hooked.</p>
<p>First on my list was to understand what a feedforward neural network with recurrent connections is and to get more details on how it was implemented in his experiment.<span class="Apple-converted-space">  </span>Lots of jargon to learn.</p>
<p> </p>
<p><strong>Automatic Creation of an Autonomous Agent: Genetic Evolution of a Neural-Network Driven Robot (1994), Floreano, D., Mondada, F.</strong></p>]]></content:encoded>
						                            <category domain="https://forum.dronebotworkshop.com/neural-networks/">Neural Networks</category>                        <dc:creator>THRandell</dc:creator>
                        <guid isPermaLink="true">https://forum.dronebotworkshop.com/neural-networks/genetic-evolution-of-a-neural-network-driven-robot/</guid>
                    </item>
				                    <item>
                        <title>What is an Artificial Neural Network or ANN?</title>
                        <link>https://forum.dronebotworkshop.com/neural-networks/what-is-an-artificial-neural-network-or-ann/</link>
                        <pubDate>Mon, 30 Sep 2019 15:02:43 +0000</pubDate>
                        <description><![CDATA[A Neural Network is man&#039;s attempt to try to imitate the biological neurons of a human brain.   Please note that no one fully understands how the neural networks within a human brain actually...]]></description>
                        <content:encoded><![CDATA[<p>A Neural Network is man's attempt to try to imitate the biological neurons of a human brain.   Please note that no one fully understands how the neural networks within a human brain actually work.   And ANNs (<em>Artificial Neural Networks</em>) are known to not work in the same way that a human brain works.  These are just man's ultimate beginning toward trying to understand this concept.</p><p>A second thing to note is that Neural Networks are made up of many individual Neurons.    Artificial Neurons are typically referred to as "<em>Perceptions</em>" to distinguish them from the biological neurons they were designed to try to mimic.    Another thing to note here is that within the human brain there are actually several different types of neurons that behave in different ways.   It is also true that there are different types of perceptions.  This is to say that there are different ways that perceptrons can be designed to behave in different ways as well.    It might also be noteworthy to recognize that perceptrons are just man's attempt to model biological neurons, and therefore perceptrons may not achieve this goal as well as we might like.</p><p>Having said all of the above the following video addresses a rather simple ANN that actually contains over a thousand perceptrons.   To truly understand how ANNs work it would be wise to study and fully understand how individual perceptrons work before attempting to deal with complex ANNs.   Unfortunately due to impatience most people jump straight into working with complex ANNs immediately without having ever taken the time to fully understand how individual perceptrons actually work.  But that's a topic for another thread. </p><p>Here is a video that explains a fairly "simple"  ANN consisting of over a thousand perceptions.   This first video explains the basic structure and function of the ANN.</p><p>https://www.youtube.com/watch?v=aircAruvnKk&amp;t=991s</p><p>Note in the above video at time =  12:20 to 12:40</p><p>He explains that "<em>Learning</em>" simply means:  "<em>Setting all the weights and biases for a desired output based on known training data input.</em>"</p><p>It's important to understand that this is what is meant when we say that an ANN is "<em>learning</em>".    It's actually being programmed by a computer algorithm.  The ANN itself isn't doing any "<em>learning</em>" at all.  It could be argued that to say that the ANN is "<em>learning</em>"  is basically a misnomer.   Just a bad term to use.   It is being "<em>trained</em>" however.  And it is being trained by another computer program that goes through thousands, if not millions, of mathematical iterations in order to determine what the weights should be.</p><p>In the next video he discusses the mathematics used by this external computer program that is not really part of the ANN at all.</p><p>https://www.youtube.com/watch?v=IHZwWFHWa-w</p><p>Again, he's talking about how machine "<em>learn</em>", but if you pay close attention the ANN isn't "<em>learning</em>", instead it's simply being designed via another program that determines what the weights of the ANN must  be to produce the desired outputs.  The term should definitely be "<em>training</em>" instead of "<em>learning</em>".</p><p>In fact, event the term "<em>training</em>" is a bit misleading because all that's really happening here is that the computer is "<em>programing</em>" the weights of the ANN based on an iterative mathematical algorithm.</p><p>In this second video (time = 0.10) he speaks of "<em>Gradient Descent</em>" and says that this is how ANNs learn.</p><p>However, in truth, Gradient Descent does not equal how neural networks learn but rather how they are programmed by a separate computer algorithm.   There is nothing in the ANN itself that is capable of programming its own weights. </p><p>Untrained Neural Networks produce trash.   In other words, an untrained ANN is basically useless.</p><p>Neural Networks are "<em>trained</em>" or "<em>programmed</em>" using a Cost Function (video time = 3:00 to 5:20)</p><p>Note that neither this Cost Function nor the mathematical algorithm that is used to "<em>train</em>" the ANN is part of the ANN itself.   The ANN itself has absolutely no way of "<em>learning</em>" anything on its own.</p><p><span style="color: #0000ff"><strong>How to learn how Neural Networks are trained</strong></span> (see video Time 16:37 to 17:30)</p><p>You can download a free book that explains precisely how this particular ANN is "trained".  The real work is done by the computer algorithm that actually calculates what the weights of the ANN should be.   And this book explains how that process is accomplished. </p><p>Once the ANN has been trained it then becomes useful.   But the ANN itself is incapable of learning anything on its own.  At best it can only have its weights updated by an external computer program which isn't actually part of the ANN itself.</p><p>Keep in mind that the ANN = Artificial Neural Network.   This does not include any external computer programs that might be used to calculate what the weights of the ANN should be.   The ANN itself has no way of improving or modifying its own performance.</p><p>Just thought I'd  share this information for whatever it might be worth for anyone who his interested in learning about ANNs.</p><p>If you have comments or different views on any of this please do share them.</p>]]></content:encoded>
						                            <category domain="https://forum.dronebotworkshop.com/neural-networks/">Neural Networks</category>                        <dc:creator>Robo Pi</dc:creator>
                        <guid isPermaLink="true">https://forum.dronebotworkshop.com/neural-networks/what-is-an-artificial-neural-network-or-ann/</guid>
                    </item>
							        </channel>
        </rss>
		