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

6227Re: [neat] RE: Starting with Neat, evolving CPPN's questions

Expand Messages
  • Jason Gauci
    Jan 1, 2014
    • 0 Attachment

      Hey Simon.

      From reading your text it sounds like you are connecting each input to a single output. This means each output can only be a function of the input in the same square.

      Consider connecting each input to all outputs, and having hidden layers. This will allow for more ecpressive networks.

      Jason G.

      On Jan 1, 2014 6:38 AM, <neatuser64@...> wrote:
       

      I have continued working on this problem and my results have been pretty poor as expected.


      The largest concept I am struggling to visualize is how Neat is different to a normal ANN. One of the features of Neat that struck me as most interesting is how Neat can recognize the relationship between inputs eg chess pieces on a board where a plain BP ANN would not understand the relationships.  


      Stepping through my problem (described in the first post), I take the the first grid location (0,0), it's input values will be -1, -1. I want to map this to the same location on the output grid, so the values for the output location will also be -1, -1. Thus, the input to my CPPN looks like the below:


      Input 1 = -1 -> Input grid X location 0

      Input 2 = -1 -> Input grid Y location 0

      Input 3 = -1 -> Output grid X location 0

      Input 4 = -1 -> Output grid Y location 0

      Input 5 = 1 -> Fixed bias value of 1


      I feed all the above into the CPPN and it generates a value of 0.123 (for an example).


      So, I take the input pixel value (let's say it is 1) and multiply by the weight, the the value of the output grid at 0,0 = 1 * 0.123.


      Because every input pixel (grid location) is mapped to every output pixel, I simply keep summing the values of the output grid. Eg at output grid location 0,0 I will have (for a square grid of 11) 11x11 = 121 values that make up the output grid value at 0,0. So I just sum these values to make the output value?


      Even doing this, I fail to understand how the network learns the relationship between grid locations. Basically currently I am feeding each output grid with 121 neural networks that only take the current grid location as input values. 


      I am sure I am missing a key point here. Advice as always is appreciated.


      PS I find the processing time slow for my current network. Each population of 100 members with a CPPN of 10 functions takes 2500ms per 10 random grids, so evolving a population takes hours. Does this seem normal? Once I have the basics understood I think moving the process to a GU will speed things up...

    • Show all 4 messages in this topic