5

Tengo dos matrices de objetos que describen la estructura de una red neuronal, ¿cómo puedo combinarlos para producir una descendencia que sea realista? Los "cromosomas" se vería algo como esto:Usando un algoritmo genético, ¿cómo puedo crear descendencia a partir de dos estructuras de redes neuronales?

chromosome = [ 
    [Node, Node, Node], 
    [Node, Node, Node, Node, Node], 
    [Node, Node, Node, Node], 
    [Node, Node, Node, Node, Node], 
    [Node, Node, Node, Node, Node, Node, Node], 
    [Node, Node, Node], 
]; 

Un nodo ejemplo:

Node { 
    nodesThatThisIsConnectedTo = [0, 2, 3, 5] // These numbers identify which nodes to collect output from in the preceding layer from based on their index number 
    weights = [0.34, 0.33, 0.76, -0.56] // These are the corresponding weights applied to the mentioned nodes 
} 
+3

Crossover para redes neuronales es difícil por varias razones. Es posible que desee consultar [NEAT] (http://www.cs.ucf.edu/~kstanley/neat.html), que utiliza un mecanismo inteligente (marcadores históricos) para resolver el problema. Los documentos vinculados (parte inferior de la página) contienen más información sobre cómo/por qué funciona. – DataWraith

+0

Lea el documento original de 2005 (creo), está escrito brillantemente y responderá todas sus preguntas. – mbatchkarov

Respuesta

0

creo que un mejor enfoque sería la implementación de un algoritmo de búsqueda genética para el vector de peso de cada nodo - si' re bloqueado el uso de GA.

para cada nodo hay una población de vectores, y cada iteración de un nodo cambia su vector de peso. Esto me parece un enfoque mucho más sólido que el cruce entre dos redes completas.