Loading ...
Sorry, an error occurred while loading the content.
 

HyperNEAT link weights overloading substrate node inputs

Expand Messages
  • rob@gistix.com
    This is really a novices question, but having just started using HyperNEAT (as opposed to plain NEAT), I find that with the weight constaints used in the
    Message 1 of 3 , Mar 5, 2012
      This is really a novices question, but having just started using HyperNEAT (as opposed to plain NEAT), I find that with the weight constaints used in the sample code (max 3.0, min 0.2), most nodes are being overloaded and driven hard in one direction or the other. The result is that, despite many generations of training, the single output never comes out of the saturated state of -1 or +1.

      My susbstrate has inputs arranged as 11 x 5, so the typical hidden layer nodes have 55 inputs. Is it usual to scale the maximum weight limit so as to constrain node input,such as dividing the weight limit by the number of nodes in the input layer of the substrate?

      There is, of course, the distinct possibility, that I have missed something, or some bug, in my coding.

      Rob Marsden
    • Ken
      Hi Rob, you may indeed be experiencing weight saturation from having so many inputs. (Which version of HyperNEAT is it, by the way?) One idea with large
      Message 2 of 3 , Mar 6, 2012
        Hi Rob, you may indeed be experiencing weight saturation from having so many inputs. (Which version of HyperNEAT is it, by the way?) One idea with large input sheets us it may be desirable to scale the inputs themselves. For example, this paragraph is from http://eplex.cs.ucf.edu/papers/stanley_alife09.pdf :

        "When scaling, a potential problem is that if the same activation level is used to indicate positive stimulus as at lower resolutions, the total energy entering the substrate would increase as the substrate resolution increases for the same images, leading to oversaturation of the target field. In contrast, in the real world,
        the number of photons that enter the eye is the same regardless of the density of photoreceptors. To account for this disparity, the input activation levels are scaled for larger substrate resolutions proportionally to the difference in unit cell size."

        More generally, if you are experiencing saturation from areas other than the input layer, it may indeed be desirable to normalize the incoming weights to individual nodes so that they all add up to some constant number, meaning the incoming activation won't depend on the number of incoming connections.

        ken

        --- In neat@yahoogroups.com, rob@... wrote:
        >
        > This is really a novices question, but having just started using HyperNEAT (as opposed to plain NEAT), I find that with the weight constaints used in the sample code (max 3.0, min 0.2), most nodes are being overloaded and driven hard in one direction or the other. The result is that, despite many generations of training, the single output never comes out of the saturated state of -1 or +1.
        >
        > My susbstrate has inputs arranged as 11 x 5, so the typical hidden layer nodes have 55 inputs. Is it usual to scale the maximum weight limit so as to constrain node input,such as dividing the weight limit by the number of nodes in the input layer of the substrate?
        >
        > There is, of course, the distinct possibility, that I have missed something, or some bug, in my coding.
        >
        > Rob Marsden
        >
      • Rob Marsden
        Hi Ken, Thanks for the suggestion. It was indeed correct. I ve scaled the input values, which were typically close to or at +/- 1.0. I used the number of input
        Message 3 of 3 , Mar 8, 2012
          Hi Ken,
          Thanks for the suggestion. It was indeed correct. I've scaled
          the input values, which were typically close to or at +/- 1.0. I used
          the number of input nodes as the scaling value, as the value is
          available at data normalization time and it's one less parameter to
          worry about when setting up a model. Doing the scaling, enables rapid
          training to immediately get under way, while retaining the typical
          weight parameter of 3.0 max and 0.2 min.

          That reference, to your paper, was particularly apposite. I already had
          a copy but it 'disappeared' a couple of weeks ago, and I couldn't, for
          the life of me, remember the reference details.

          > it may indeed be desirable to normalize the incoming weights to individual nodes
          This seems like a worthwhile investment that would lead to more
          consistent performance from model to model. I have put it on my list.

          > Which version of HyperNEAT is it, by the way?
          A very good question :-). It's our own C++ version modelled very
          closely on HyperNEAT v3. We've tailored it to make it easier to plug in
          different models and set-ups. The 'powers that be' permitting, I hope
          to be able to make the code available publicly, but I'll need
          permission to include some of our libraries, or re-write the relevant
          bits of code. Unfortunately, I can't include any of our models. I'll
          have to works something up there, as I think a good working example
          would be very helpful. If I manage all this, I'll post details here.

          Once again, thanks for your assistance.

          Rob Marsden.
        Your message has been successfully submitted and would be delivered to recipients shortly.