5

Mam dwie tablice obiektów, które opisują strukturę sieci neuronowej, jak mogę je połączyć, aby wyprodukować potomstwo, które jest realistyczne? W „chromosomy” będzie wyglądać mniej więcej tak:Korzystając z algorytmu genetycznego, w jaki sposób mogę stworzyć potomstwo na podstawie dwóch struktur sieci neuronowych?

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], 
]; 

Przykładowy węzeł:

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 for Neural Networks jest trudny z wielu powodów. Możesz zajrzeć do [NEAT] (http://www.cs.ucf.edu/~kstanley/neat.html), który wykorzystuje sprytny mechanizm (historyczne znaczniki), aby rozwiązać problem. Połączone artykuły (u dołu strony) zawierają więcej informacji o tym, jak/dlaczego to działa. – DataWraith

+0

Przeczytaj oryginalny artykuł z 2005 roku, który jest świetnie napisany i odpowie na wszystkie twoje pytania. – mbatchkarov

Odpowiedz

0

Myślę, że lepszym rozwiązaniem byłoby wdrożenie genetyczny przeszukiwanie algorytmu dla każdego węzła wagi Wektor - jeśli” ponownie zablokowane przy użyciu GA.

dla każdego węzła występuje populacja wektorów, a każda iteracja, jeden węzeł zmienia swój wektor wagowy. Wydaje mi się to znacznie rozsądniejszym podejściem, a następnie przejściem między dwiema pełnymi sieciami.