Theometrus
Theometrus

Reputation: 31

NEAT - What to do with single member species?

I'm working on implementing NEAT from scratch, and have stumbled upon an issue I can't find a concrete answer to. How does the NEAT algorithm respond to species with only a single member in them, after every other network has been speciated?

I've thought of a few possible answers to this and would appreciate any additional insight.

  1. Keep the single-member species unmodified, carrying over its only surviving member into the next generation in the hopes that sometime in the future more members for this species will be found and the species will be able to grow. The main issue with this is that NEAT assigns new species sizes based on adjusted fitnesses; which means that it might instruct (and expect) the 1-member species to grow if its fitness was better than the population average. Let's say we have two species: 99 and 1 members in size - NEAT would (assuming the smaller species has a higher fitness) then make the 99 species shrink and the 1 member species grow - but the small species cannot reproduce due to only having one member.

  2. Clone the only member of the species a given number of times to match NEAT's calculated new species size for this species. This doesn't seem like the best solution, as it drastically decreases variety in the population and seems like would lead to stagnation rather quickly.

  3. Reproduce the one member through a single mutation, and then crossover the now two members of this species until the new size requirement is met. Suffers from a similar issue as (2).

  4. Reproduce the one member through N mutations, where N is the new species size as calculated by NEAT. This seems to involve a high amount of randomness, and could cause new species to evolve within this species, spiraling the problem further out of control.

  5. Chuck the only member of the species in with some larger species at the end of the speciation phase, and cause its current species to go extinct. The problem with this is the loss of potentially useful mutations/network topologies that the new network did not have time to optimize yet.

Thanks in advance!

Upvotes: 3

Views: 878

Answers (1)

IAmUser
IAmUser

Reputation: 126

I just wanted to add a comment but I dont have enough reputation so I'll write an answer and to make it longer I'll comment some part that I don't quite agree with, based on my knowledge of neat.

First I think you should have a look at Finn Eggers channel on youtube (or other implementations, I say this one because I saw the videos), he implements neat and in video 8 (I think) he deals with this problem. What he does is mark all species with 1 member as "extinct" and removes them. In fact if that species has only 1 member it means that all members were killed and this happens when they have low score, so there is no point in keeping that species.

Let's say we have two species: 99 and 1 members in size - NEAT would (assuming the smaller species has a higher fitness) then make the 99 species shrink and the 1 member species grow

I don't understand this point: suppose you start from 2 species 50 members each, kill ex 80% of the population (based on the fitness score), reproduce the survivors and end up with 99-1. What does this mean?

First this means that the 80 individuals you killed were 49 from species 2 and 31 from species 1 which implies that individuals in species 2 had worse fitness than the ones in spiecies 1.

Moreover you had no newborn for species 2: this happens when the parents don't belog to that species, maybe one does but still the child is not classifiable as a member of that species. Since parents selection is also based on fitness score, this means that elements of species 1 have better score than the only one survivor of species 2 and were selected more frequently, so we still have that species 1 i s better than 2. In conclusion, if a species ends up with one member and does not grow, it means it sucks.

but the small species cannot reproduce due to only having one member.

1 member species can become larger: you could take two parents from two different species, create a child and if the distance function tells that child belong to that species, you put it there. You don't need to have all parents from the same species to create a child for that one.

5.Chuck the only member of the species in with some larger species at the end of the speciation phase, and cause its current species to go extinct.

you cannot just put a member in another species: if the distance from other species is too high you must have a specific species even if it's just one member

Upvotes: -1

Related Questions