I’ve been thinking about how to initialize the network for a few days now. My first thought was to just fully randomize edge creation, picking from a pool of nodes, making sure at least 1 was already connected to the network. That seemed too prone to creating largely disjoint clusters though. From there, I thought about trying to do some sort of biasing/classification thing, where as I proceeded through joining the neurons up with synapses, I’d progressively bias them toward picking input, network, or output nodes, but my intuition also gave me the sense that would too prone to broken or flawed networks.
Finally, I decided I’d take an approach of building a cloud of neurons off of each input and output, then interlinking those clouds. It feels like this has the best chance of creating something that might actually work. I thought about maybe having some free floating neurons that would only be be linked up as part of the interlinking process, but I felt that would be more complicated than I wanted to tackle at the moment, as then I’d have to ensure that a connected free neuron gets linked to at least 1 incoming and 1 outgoing synapse, which would mean a whole extra control layer.
I started by writing a class to build the clusters. https://github.com/silasray/aiexplore/commit/64396d45f39a8cc121a4377ec48d593c7781e4e0