Components, topologies and hyper-parameters of neural network are automatically determined in [1]} using a neuroevolutionary algorithm in which the neural networks are trained using evolution rather than gradient descent. This method that is called DeepNEAT, starts with an initial population of DNNs with minimal complexity and new nodes and edges are added to each chromosome through mutation. Each chromosome contains some nodes and each node is a layer of neural network together with its hyper-parameters. To obtain the fitness of each chromosome, it is converted to a DNN and the DNN is trained for a fixed number of epochs. DeepNEAT is extended to CoDeepNEAT that decomposes complicated DNN structures into multiple repeated modules. Specifically, in CoDeepNEAT there are two populations of modules and blueprints. Each blueprints chromosome contains pointers to a particular module and each module chromosome represents a small DNN. During fitness evaluation, the small DNNs corresponding to the pointers of blueprints are combined to build a large DNN. This approach is evaluated on an image captioning task.
