Ik ben bezig met Neural Networks in combinatie met genetische algoritmes (NEAT / HyperNEAT)
Momenteel heb ik een simpele neural network implementatie die alle neurons in stricte lagen bijhoudt (input laag, meerdere hidden lagen, output laag) waarbij ook alle neurons in laag X verbonden zijn met alle neurons in laag X+1 (fully connected).
Deze implementatie werkt prima maar wil nu een wat geavanceerde implementie maken waarbij niet de hidden neurons niet in losse lagen gestructureerd zijn en er ook 'shortcut' connecties tussen neurons kunnen liggen die bijvoorbeeld direct van de input naar de output laag gaan. Ook is het mogelijk om recurrent connecties te leggen.
hierbij stuit ik dus op het probleem van de volgorde van berekenen. In de simpele (lineaire) implementatie zijn de stappen duidelijk.
voor iedere laag L in hidden layers
voor iedere neuron N in laag L
1) zoek alle input connecties voor N
2) maak de som van (input connectie weight * waarde input neuron) voor iedere connectie
3) bereken de activatie van de neuron via activatie functie (tanh of sigmoid) en geen N deze activatie
Bij de de nieuwe implementatie zijn er in feite geen lagen maar enkel een aantal hidden neurons die met elkaar of met neurons in de input en output laag verbonden zijn.
Ik heb hier al een werkende implementatie van maar deze is erg afhankelijk van de volgorde waarin de neurons toegevoegd worden en de connecties gelegd worden, en gezien bij NEAT er extra connecties / neorons aangemaakt kunnen worden door het genetisch algoritme is deze volgorde niet meer te garanderen na een aantal evoluties.
Misschien denk ik te moeilijk (zal niet de eerste keer zijn) ... maar heeft iemand een simpele oplossing om de correcte volgorde van berekenen te handhaven ?
Momenteel heb ik een simpele neural network implementatie die alle neurons in stricte lagen bijhoudt (input laag, meerdere hidden lagen, output laag) waarbij ook alle neurons in laag X verbonden zijn met alle neurons in laag X+1 (fully connected).
Deze implementatie werkt prima maar wil nu een wat geavanceerde implementie maken waarbij niet de hidden neurons niet in losse lagen gestructureerd zijn en er ook 'shortcut' connecties tussen neurons kunnen liggen die bijvoorbeeld direct van de input naar de output laag gaan. Ook is het mogelijk om recurrent connecties te leggen.
hierbij stuit ik dus op het probleem van de volgorde van berekenen. In de simpele (lineaire) implementatie zijn de stappen duidelijk.
voor iedere laag L in hidden layers
voor iedere neuron N in laag L
1) zoek alle input connecties voor N
2) maak de som van (input connectie weight * waarde input neuron) voor iedere connectie
3) bereken de activatie van de neuron via activatie functie (tanh of sigmoid) en geen N deze activatie
Bij de de nieuwe implementatie zijn er in feite geen lagen maar enkel een aantal hidden neurons die met elkaar of met neurons in de input en output laag verbonden zijn.
Ik heb hier al een werkende implementatie van maar deze is erg afhankelijk van de volgorde waarin de neurons toegevoegd worden en de connecties gelegd worden, en gezien bij NEAT er extra connecties / neorons aangemaakt kunnen worden door het genetisch algoritme is deze volgorde niet meer te garanderen na een aantal evoluties.
Misschien denk ik te moeilijk (zal niet de eerste keer zijn) ... maar heeft iemand een simpele oplossing om de correcte volgorde van berekenen te handhaven ?