Hot answers tagged

7

To find the number of neurons and layers that you will use is not that straightforward. The best way to do this is through experimentation however you will be able to better estimate the number of layers and neurons needed through experience. One of the common rules is that more neurons are better for more complex datasets. However, you do not want too many ...


6

When crossover happens and one parent is fitter than the other, the nodes from the more fit parent are carried over to the child. This is the case as disjoint and excess genes are only carried over from the fittest parent. Here's an example: // Node Crossover Parent 1 Nodes: {[0][1][2]} // more fit parent Parent 2 Nodes: {[0][1][2][3]} Child Nodes: {[0]...


4

NEAT has a constant number of organisms in its population, which prevents overpopulation from happening. The process of mating includes the following steps. The worst networks from every species are removed. All species receive a number of offsprings that they can have. This is calculated by an adjusted neural network fitness. Offsprings for species are ...


4

It is actually the other way around: connection IDs is what is debated! Nodes always have innovation IDs (in the image, it is just their identifying number). Node IDs are sufficient to identify connections. If a connection links nodes 3 and 6, then it is the same as another connection linking nodes 3 and 6: no need for an extra ID. So why the extra ...


4

What aspects of AI would be most applicable to creating a self learning game AI for a racing game (Q-Learning, NEAT etc) In general, you are looking at a problem that involves sequential decision making, in a machine learning context. If you are wanting to build an agent that can learn by receiving screen images, then NEAT cannot scale to that complexity ...


4

Yes, NEAT (NeuroEvolution of Augmenting Topologies) increases the number of neurons during training. More specifically, NEAT uses evolution to introduce new neurons and connections during training, and - just as evolution - if the mutation performs poorly, gets eliminated after a few generations. This way overall performance increases over time while it ...


3

Yes, the original gene is disabled, but is left in the genome. This can be seen on page 10, figure 3 of the paper linked (taken from the original paper NEAT Paper) where gene 3 is disabled, but not removed from the genome. This gene can be re-enabled by receiving the gene with the identical innovation number from a mating partner with the gene enabled during ...


3

Perturbed here means adding a small random value to the weight. That random value comes from a uniform distribution or from a gaussian (or any distribution really). Imagine just nudging the weight by a little. It’s done to overcome the problem of local minima where models can get stuck with a good set of weights but not the best set of weights. By ...


3

A human analogy can help you here (a variance). Initialize all the agents with an initial value x, we will call this energyUnits. Will talk later more on this. Now add some value, as an incentive, whenever the agent eats a good food, to the energyUnits. You need to add a function that will keep decrementing the value of the agent's energyUnits, as human ...


3

I can think of two possible ways of enforcing NEAT to create a feed forward network. One elegant one and one a little more cumbersome one; Only allow the "add connection" mutation to connect a node with another node that have a higher maximum distance from an input node. This should result in feed forward network, without much extra work. (Emergent ...


3

Consider the execution order, 5 will have an invalid value because it hasn't been set form 3 yet. However the second time around it should have a value set. The invalid value should falloff after sufficient training. 0 -> 5 1 -> 5 5 -> 2 2 -> 3 3 -> 4 3 -> 5 RESTART 0 -> 5 1 -> 5


3

What is the definition of "structural innovation", and how do I store these so I can check if an innovation has already happened before? Structural innovation is anything added that changes the topology of the network. So a structural innovation is any added connection or added node. I don't want to get too much into the implementation, but something ...


3

I think you raise a good question, especially WRT to how the NNs inputs & outputs are mapped onto the mechanics of a card game like MtG where the available actions vary greatly with context. I don't have a really satisfying answer to offer, but I have played Keldon's Race for the Galaxy NN-based AI - agree that it's excellent- and have looked into how ...


3

When does the mutation occur and how does it take place? Finding a solution in NEAT algorithm is based on evolution strategy. It means that you have Neural Networks which are yours individuals, so mutations and crossing occurs in loop after phase of "fitnessing" (calculation fitness for every individual and removing bad ones). How is it chosen whether ...


3

I agree with Aiden Grossman that perhaps you should try another algorithm before messing with NEAT, as NEAT is fairly complex. However, I thought I might explain the benefits of NEAT as they pertain to the second part of your question. The NEAT method is from a paper written by Kenneth O. Stanley and Risto Miikkulainen titled Evolving Neural Networks ...


3

Because this is more of an answer than a comment: In the add connection mutation, a single new connection gene with a random weight is added connecting two previously unconnected nodes. So two nodes that have been mutated with a connection, can't remutate because the nodes should be unconnected. In the add node mutation, an existing connection is ...


3

as this is written in Javascript and does not (yet) offer GPU support, it is quite slow. However, it is very nice to fiddle around with flexible network architectures. The only visualisation that it offers right now is a map of network architecture, but graphs could easily be implemented. https://github.com/wagenaartje/neataptic


3

The first equation deals with distance. Delta, or distance, is the measure of how compatible two genomes are with each other. c1, c2 and c3 are parameters you set to dictate the importance of E, D and W. Note that if you change cc1, c2 or c3, you will most likely also have to change dt, which is the distance threshold, or the maximum distance apart 2 ...


3

Quoting Evolving neural networks through augmenting topologies, p. 10 (emphasis mine): When crossing over, the genes in both genomes with the same innovation numbers are lined up. These genes are called matching genes. Genes that do not match are either disjoint or excess, depending on whether they occur within or outside the range of the other parent’s ...


3

NEAT is a genetic algorithm (GA). A genetic algorithm maintains a population of individuals (or chromosomes) and evolves it using operations like the crossover or the mutation, so that the fittest individuals keep living and most other individuals die. The nature of the individuals depends on the problem. For example, in the case of NEAT, the individuals are ...


3

The paper The Comparison and Combination of Genetic and Gradient Descent Learning in Recurrent Neural Networks: An Application to Speech Phoneme Classification (2007), by Rohitash Chandra and Christian W. Omlin, uses genetic algorithms to train a recurrent neural network and then uses gradient descent to fine tune the trained model. The paper Evolutionary ...


3

"Artificial Intelligence: A Modern Approach" (AIMA) by Russel and Norvig is a general introductory book on AI. That means it not only covers sub-symbolic AI (like machine learning) but also symbolic AI. Therefore, it can "only" give you an overview of each topic (I put only in quotation marks since it is actually quite ambitious to cover all topics of AI in ...


2

https://github.com/josephmisiti/awesome-machine-learning has many useful resources. Please take a look.


2

Well, if you choose TensorfFlow to work with, you get TensorBoard as part of the package. That might be something close to what you're looking for. And with TensorFlow, you can code in C++, Python, and a few other languages (I think there are both Ruby and Java bindings as well, probably others by now).


2

When do mutations occur and between which nodes? There are two types of mutations in the NEAT model, each of them appears randomly during one epoch on different individuals; the number of structures affected by mutations may vary depending upon the nature of the problem. A new gene/node is added to the structure and properly linked. A new connection ...


2

For genetic algorithms, I have written GeneticSharp. A multi-platform genetic algorithm library for .NET Core and .NET Framework. The library has several implementations of GA operators, like: selection, crossover, mutation, reinsertion and termination.


2

Fann (http://leenissen.dk/fann/wp/) is a free open source neural network library. FANN Features: Multilayer Artificial Neural Network Library in C Backpropagation training (RPROP, Quickprop, Batch, Incremental) Evolving topology training which dynamically builds and trains the ANN (Cascade2) Easy to use (create, train and run an ANN with just three ...


2

There is also DXNN, which is as you described, a neuroevolutionary system, it is written in Erlang. https://github.com/CorticalComputer/DXNN2 I did some work on it to make it modular, so you use it as a library and keep your code/application isolated. Here is a code example, which downloads DXNN as a library. it also generates gnuplot ready data files for ...


2

This is completely feasible, but the way the inputs are mapped would greatly depend on the type of card game, and how it's played. I'll take into account a few possibilities: Does time matter in this game? Would a past move influence a future one? In this case, you'd be better off using Recurrent Neural Networks (LSTMs, GRUs, etc.). Would you like the ...


2

NEAT uses genetic algorithms both to search for improved connection weights and for improved architectures. Whilst it is possible to train a NEAT-generated neural network using backpropagation of error gradients, libraries implementing "original" NEAT will not implement that. There are a couple of reasons: There is often no training data, in a supervised ...


Only top voted, non community-wiki answers of a minimum length are eligible